日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

社交系统中用户好友关系数据库设计

發布時間:2023/12/13 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 社交系统中用户好友关系数据库设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在社交類系統中,用戶與用戶的好友關系的設計必不可少,那么如何設計好友的數據庫至關重要,本篇文章帶大家學習一下相關的設計方案。

基礎分析
第一步,有一張用戶表,表內包含用戶的基本信息,比如賬號、姓名、性別等信息。這里用tb_user表示用戶信息表。

ID  用戶名
1  張三
2  李四
3  王五
4  趙六

第二步,需要將用戶與用戶直接建立好友關系。這里有兩種情況:單向好友關系、互為好友關系。
- 單向好友關系就是張三在李四的好友列表中,但李四沒有在張三的好友列表中;
- 互為好友關系,如果張三和李四為好友,則雙方都在彼此的好友列表中;

好友關系設計
無論上面兩種關系的哪一種,好友關系表都可以使用下面的設計,表tb_friend:

ID  user_id  friend_id
1    1    2
2    1    3
示例中,張三擁有李四和王五兩個好友。

單向好友模式
如果是單向好友模式,那么兩個人互為好友關系則插入的數據應該是這樣:

ID  user_id  friend_id
1    1    2
2    2    1
也就是張三是李四的好友,李四也是張三的好友。此時使用sql語句查詢時只用限定user_id作為條件即可查詢出用戶的好友列表:

select * from tb_friend where user_id = 1
1

互為好友關系
因為是互為好友關系,則只需要插入一條數據即可。對應的查詢語句為:

select * from tb_friend where user_id = 1 or friend_id = 1
1
2
當然也可以使用UNION ALL來實現:

select friend_id as friends from tb_friend where user_id = 1
UNION ALL --使用UNION ALL,因為不存在重復的
select user_id as friends from tb_friend where friend_id = 1
1
2
3

注意事項:
- user_id1–>friend_id2和user_id2–>friend_id1是相同的記錄,不需要重復插入;
- 為了快速判斷兩個人是不是好友,可在程序層插入數據前添加一個限制user_id1 < user_id2;
- 可加入緩存層(Redis或Memcached)來提高性能;
- 可從數據庫層限制(user_id,friend_id)不可重復;

加入分組
如果好友數量比較多,關系比較復雜,可引入好友分組,可進行如下改造:

ID  user_id  friend_id  user_group  friend_group
1    1    2      好友      同學
2    1    3      同學      同學
在數據庫中添加了user_group,當前user給friend設置的分組,friend_group是當前user的朋友對其設置的分組類別。

于是,查詢好友列表的SQL如下:

select friend_id as friends ,user_group as my_group from tb_friends where user_id = 1

UNION ALL

select user_id as friends , friend_group as my_group from friend_id = 1
1
2
3
4
5

小結
至此社交系統中好友關系的設計及SQL語句使用基本完成。可根據具體的業務情況進行修改。在查詢除好友的id列表之后就可以進行好友信息的查詢。此處需要注意的是如果用in語句來查詢會有不走索引、sql語句大小限制、性能等問題,可考慮使用左連接進行查詢。
————————————————

https://blog.csdn.net/wo541075754/article/details/82733278

總結

以上是生活随笔為你收集整理的社交系统中用户好友关系数据库设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。