鍍金池/ 問答/數(shù)據(jù)庫/ 用戶的關(guān)注表應(yīng)該怎么設(shè)計(jì)?

用戶的關(guān)注表應(yīng)該怎么設(shè)計(jì)?

比如某個(gè)人關(guān)注了20個(gè)人 在數(shù)據(jù)庫中怎樣設(shè)計(jì)這個(gè)表呢 每個(gè)用戶都有一個(gè)關(guān)注表嗎?這個(gè)表中存的都是這個(gè)用戶的關(guān)注的對象 這樣設(shè)計(jì)可以嗎?

回答
編輯回答
六扇門

主鍵,用戶ID,關(guān)注的用戶ID,關(guān)注時(shí)間

查詢關(guān)注我的 SELECT * FROM t WHERE 關(guān)注的用戶ID=我的用戶ID
查詢我關(guān)注的 SELECT * FROM t WHERE 用戶ID=我的用戶ID
2018年3月30日 09:57
編輯回答
萌小萌

當(dāng)然不能每個(gè)用戶建一張表了,應(yīng)該建一個(gè)關(guān)注表,每一項(xiàng)記錄一個(gè)關(guān)注的關(guān)系 (關(guān)注者ID: 1 被關(guān)注者ID:2)。用到的時(shí)候聯(lián)表查詢就好了

2017年11月27日 20:26
編輯回答
氕氘氚

每個(gè)用戶都設(shè)一個(gè)表應(yīng)該不大行吧?
或者用戶設(shè)計(jì)一個(gè)字段,儲存關(guān)注的用戶的id?

2017年8月23日 12:26
編輯回答
怪痞

這種數(shù)據(jù)更適合使用Redis來存儲,當(dāng)然為了可靠,數(shù)據(jù)最終還是要落地到數(shù)據(jù)庫的。簡單提供一個(gè)設(shè)計(jì)方案:

# 使用SET數(shù)組結(jié)構(gòu)來存儲關(guān)注的用戶列表
SADD $user:follows $user1 $user2 $user3 ...

當(dāng)然這只是一個(gè)思路,實(shí)際還要解決不少問題,比如:數(shù)據(jù)規(guī)模問題(如果到新浪微博這個(gè)量級,就不是簡單一個(gè)Redis可以搞定的了)、用戶關(guān)注關(guān)系是一個(gè)網(wǎng)關(guān)結(jié)構(gòu),所以實(shí)際實(shí)踐起來還是比較復(fù)雜的,各種情況都要考量和測試

2017年11月9日 21:56