mysql - 類似QQ的好友關(guān)系表是怎么設(shè)計(jì)的?
問題描述
請(qǐng)問一下類似QQ的好友關(guān)系表是怎么設(shè)計(jì)的?難道只是簡單的id,userId,friendId嗎?
問題解答
回答1:應(yīng)該還有一個(gè)分組字段回答2:其實(shí)沒有必要把事情想得太復(fù)雜了,按照需求慢慢遞進(jìn)就可以了。
這是我做關(guān)注功能的表結(jié)構(gòu),可以參考一下。
UserRelationship: type: object properties: id:type: integerdescription: Id user_id:type: integerdescription: 用戶Id target_user_id:type: integerdescription: 目標(biāo)用戶Id回答3:
非關(guān)系型數(shù)據(jù)庫
回答4:我這邊做設(shè)計(jì)的時(shí)候,是考慮了群組的功能的,所以將兩個(gè)人的好友關(guān)系也轉(zhuǎn)換為了群組
整個(gè)應(yīng)該會(huì)出現(xiàn)三張表
一個(gè)是用戶表一個(gè)是群組表一個(gè)是用戶-群組對(duì)應(yīng)關(guān)系表
通過三張表來確定的
回答5:據(jù)我所知,微博的關(guān)注就是這么設(shè)計(jì)的
回答6:之前看過一個(gè)面試題,就是表設(shè)計(jì)問題,好友關(guān)系表如何設(shè)計(jì),在用戶表用一個(gè)字段以逗號(hào)分隔存儲(chǔ)還是雙表關(guān)聯(lián)存儲(chǔ)的,貌似兩種都可行
回答7:這樣夠用就可以了
回答8:不過查詢起來也是個(gè)問題 redis不是很適合干這個(gè)事情嘛
回答9:或許可以再加一個(gè)是否雙向好友的標(biāo)志字段
回答10:應(yīng)該是多對(duì)多關(guān)系。1個(gè)用戶可以有多個(gè)好友。也可以被多個(gè)用戶加為好友。多對(duì)多關(guān)系,在關(guān)系型數(shù)據(jù)庫里面,一般使用中間表來實(shí)現(xiàn)。這時(shí)候中間表一般只存用戶ID和好友ID。但是便于業(yè)務(wù)實(shí)現(xiàn),可以在中間表加上是否驗(yàn)證通過、好友分組ID、排序編號(hào)等、這個(gè)多對(duì)多中間表和一般多對(duì)多不同的地方在于,這個(gè)的關(guān)聯(lián)表是自身。也就是user表對(duì)user表的多對(duì)多關(guān)聯(lián)。
相關(guān)文章:
1. java中返回一個(gè)對(duì)象,和輸出對(duì)像的值,意義在哪兒2. docker網(wǎng)絡(luò)端口映射,沒有方便點(diǎn)的操作方法么?3. mysql - 在不允許改動(dòng)數(shù)據(jù)表的情況下,如何優(yōu)化以varchar格式存儲(chǔ)的時(shí)間的比較?4. docker start -a dockername 老是卡住,什么情況?5. css3 - 純css實(shí)現(xiàn)點(diǎn)擊特效6. apache web server 怎么限制某一個(gè)網(wǎng)站對(duì)服務(wù)器資源的占用?7. javascript - 關(guān)于apply()與call()的問題8. docker - 各位電腦上有多少個(gè)容器啊?容器一多,自己都搞混了,咋辦呢?9. 安全性測試 - nodejs中如何防m(xù)ySQL注入10. python - pandas dataframe如何對(duì)某列的空數(shù)據(jù)位置進(jìn)行update?update的函數(shù)是自定義的,參數(shù)是同一行的另外兩列數(shù)據(jù)
