mysql - 類似QQ的好友關(guān)系表是怎么設(shè)計(jì)的?
問(wèn)題描述
請(qǐng)問(wèn)一下類似QQ的好友關(guān)系表是怎么設(shè)計(jì)的?難道只是簡(jiǎn)單的id,userId,friendId嗎?
問(wèn)題解答
回答1:應(yīng)該還有一個(gè)分組字段回答2:其實(shí)沒(méi)有必要把事情想得太復(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ù)庫(kù)
回答4:我這邊做設(shè)計(jì)的時(shí)候,是考慮了群組的功能的,所以將兩個(gè)人的好友關(guān)系也轉(zhuǎn)換為了群組
整個(gè)應(yīng)該會(huì)出現(xiàn)三張表
一個(gè)是用戶表一個(gè)是群組表一個(gè)是用戶-群組對(duì)應(yīng)關(guān)系表
通過(guò)三張表來(lái)確定的
回答5:據(jù)我所知,微博的關(guān)注就是這么設(shè)計(jì)的
回答6:之前看過(guò)一個(gè)面試題,就是表設(shè)計(jì)問(wèn)題,好友關(guān)系表如何設(shè)計(jì),在用戶表用一個(gè)字段以逗號(hào)分隔存儲(chǔ)還是雙表關(guān)聯(lián)存儲(chǔ)的,貌似兩種都可行
回答7:這樣夠用就可以了
回答8:不過(guò)查詢起來(lái)也是個(gè)問(wèn)題 redis不是很適合干這個(gè)事情嘛
回答9:或許可以再加一個(gè)是否雙向好友的標(biāo)志字段
回答10:應(yīng)該是多對(duì)多關(guān)系。1個(gè)用戶可以有多個(gè)好友。也可以被多個(gè)用戶加為好友。多對(duì)多關(guān)系,在關(guān)系型數(shù)據(jù)庫(kù)里面,一般使用中間表來(lái)實(shí)現(xiàn)。這時(shí)候中間表一般只存用戶ID和好友ID。但是便于業(yè)務(wù)實(shí)現(xiàn),可以在中間表加上是否驗(yàn)證通過(guò)、好友分組ID、排序編號(hào)等、這個(gè)多對(duì)多中間表和一般多對(duì)多不同的地方在于,這個(gè)的關(guān)聯(lián)表是自身。也就是user表對(duì)user表的多對(duì)多關(guān)聯(lián)。
相關(guān)文章:
1. 哭遼 求大佬解答 控制器的join方法怎么轉(zhuǎn)模型方法2. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語(yǔ)法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?3. Navicat for mysql 中以json格式儲(chǔ)存的數(shù)據(jù)存在大量反斜杠,如何去除?4. mysql - 表名稱前綴到底有啥用?5. 編輯成功不顯示彈窗6. mysql - 怎么生成這個(gè)sql表?7. sql語(yǔ)句 - 如何在mysql中批量添加用戶?8. 怎么php怎么通過(guò)數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。9. mysql - 數(shù)據(jù)庫(kù)表中,兩個(gè)表互為外鍵參考如何解決10. mysql儲(chǔ)存json錯(cuò)誤
