[英]What is a good way to design a table with relationship between users?
我目前在社交網站上工作。 (是的,我知道,有很多人。我不是想讓Facebook遍地開花)
我想知道是否有人可以告訴我我的思維方式是否已經偏離目標,或者是否真的是這樣。
我希望用戶能夠有朋友。 而且,為此,我認為我應該像這樣擁有一個用戶表:USER
這可能應該是1:N的關系,所以我認為一個表“ contacts”應該像這樣保存用戶及其朋友的列表:聯系人
在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.