84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
我见过一种设计,在数据库里面有一张用户关系表,表结构如下
CREATE TABLE relation ( relation_id private key AUTO_INCREMENT,//关系id relation_fans text,//粉丝数据 relation_black text,//黑名单数据 relation_action text//关注数据 ); 这样的设计有什么用意,如果要取得用户的关系数据 怎么取得?
走同样的路,发现不同的人生
text型?是存些什麼呢?很好奇。另外 private key 是筆誤還是?
text
private key
你列出的這個 demo 裡,我看不出來如何取得使用者的關聯式資料。我自己設計時(當然也是我認為合理的方式)是這樣的(不完全照搬我自己的,是根據你的這個表改了一下):
CREATE TABLE relation ( id PRIMARY KEY AUTO_INCREMENT, //主键,自增 from_user_id big integer, // 用户 A 的 id to_user_id big integer,// 用户 B 的 Id rel_type enum(1,2) //关注数据 );
封鎖/粉絲/關注,在資料庫裡,存的都是一個映射關係的數字。例如,拉黑是 1,粉絲/關注是一個東西,是 2。那麼,一筆記錄裡的關鍵數據是:
from_user_id // 本筆記錄是哪個使用者啟動
from_user_id
to_user_id // 本筆記錄的接受方是哪一個使用者
to_user_id
rel_type // 發起者對接受者,做了什麼事情?存事情的類型
rel_type
場景舉例:
使用者 A 追蹤使用者 B
插入資料:
INSERT INTO relation (rel_type, from_user_id, to_user_id) VALUES(2, A.id, B.id)
用戶 A 的粉絲數:
select COUNT(*) from relation where rel_type=2 and to_user_id=A.id;
黑名單同理。
這是按照你給的表的方式處理的。我自己在做設計的時候,其實是給 關注/粉絲 建了一張表,黑名單又建一張表。依照自己的需求和習慣來就好了,無所謂選哪一種。
希望有用。
樓上說的差不多了 高並發下的話 最好把粉絲數 放到redis裡面哦~
text
型?是存些什麼呢?很好奇。另外private key
是筆誤還是?你列出的這個 demo 裡,我看不出來如何取得使用者的關聯式資料。我自己設計時(當然也是我認為合理的方式)是這樣的(不完全照搬我自己的,是根據你的這個表改了一下):
封鎖/粉絲/關注,在資料庫裡,存的都是一個映射關係的數字。例如,拉黑是 1,粉絲/關注是一個東西,是 2。那麼,一筆記錄裡的關鍵數據是:
from_user_id
// 本筆記錄是哪個使用者啟動to_user_id
// 本筆記錄的接受方是哪一個使用者rel_type
// 發起者對接受者,做了什麼事情?存事情的類型場景舉例:
使用者 A 追蹤使用者 B
插入資料:
用戶 A 的粉絲數:
黑名單同理。
這是按照你給的表的方式處理的。我自己在做設計的時候,其實是給 關注/粉絲 建了一張表,黑名單又建一張表。依照自己的需求和習慣來就好了,無所謂選哪一種。
希望有用。
樓上說的差不多了
高並發下的話 最好把粉絲數 放到redis裡面哦~