簡體   English   中英

用用戶之間的關系設計表的好方法是什么?

[英]What is a good way to design a table with relationship between users?

我目前在社交網站上工作。 (是的,我知道,有很多人。我不是想讓Facebook遍地開花)

我想知道是否有人可以告訴我我的思維方式是否已經偏離目標,或者是否真的是這樣。

我希望用戶能夠有朋友。 而且,為此,我認為我應該像這樣擁有一個用戶表:USER

  • uId
  • 用戶名
  • 電子郵件
  • 等等..

這可能應該是1:N的關系,所以我認為一個表“ contacts”應該像這樣保存用戶及其朋友的列表:聯系人

  • uId(來自USER)
  • FriendId(來自USER表)
  • 友誼類型ENUM [有效,無效,待處理]

在uId上對該表排序是一種有效的解決方案,以便查詢結果看起來類似於以下內容:
uID | friendId
1 | 2
1 | 6
1 | 97
75 | 1個
75 | 34

等等

還是對此有其他解決方案?

如果您只是想選擇一組特定的朋友,查詢將非常簡單,您無需擔心性能。

例如:如果您要返回UID 8的朋友的ID,則可以執行以下操作:

Select FriendId FROM TABLE where UID=8;

在您的情況下,由於UID列不是唯一的,因此請確保在此列上具有索引以允許快速查找(優化性能)。

您可能還想考慮有關用戶朋友的其他數據。 例如,僅獲取FriendId,您可能想要的名稱等可能對您沒有幫助。因此,您的查詢可能看起來更像:

Select FriendId, Users.name FROM Friends JOIN Users ON Users.uid=Friends.FriendId WHERE Friends.UID=8; 

同樣,對適當的列進行索引是優化查找的關鍵,尤其是當表大小變大時。

此外,由於與您執行的查詢查詢次數相比,添加朋友的行為很不常見,因此請務必選擇提供最快查詢速度的數據庫引擎。 在這種情況下,MyISam可能是您最好的選擇。 MyISam對插入(即較慢的插入)使用表級鎖定,但是查找速度很快。

祝好運!

我認為最好的方法無疑是創建您建議的表。 這將使您更好地管理朋友,在此表上查詢朋友,...這將是最好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM