2012-12-17 90 views
2

我與另一開發商合作,開發一種社交網站,人們可以在那裏讓朋友的朋友關係請求類似於Facebook的。然而,他的存儲每個用戶的好友爲逗號分隔值:使用逗號存儲在一個社交網站

user_id | user_friends 
101  | 102,103,105 

我相信,這是非常低效的,而且容易出錯。我個人使用關係數據庫模型,並創建另一個列表friendship_id (PRIMARY KEY), friender_id and friended_id.

對嗎?我應該給予什麼支持來支持我的立場?乾杯

回答

2

你說得對。

在他的系統,你將如何處理的友誼請求的狀態(即取消,待定,接受)?

解析user_friends字符串將會很痛苦,並且您將無法使用聯接來獲取複雜的數據。

1

雖然使用逗號分隔是好的但難以管理搜索,你將不得不使用FIND_IN_SET和更新,你將不得不做更多的工作。使用另一種方式的Intead易於使用。只要你喜歡,你可以很容易地添加糊塗關係。搜索當然很容易。

1

只是爲了增加一個理由:兩個用戶朋友之間的任何比較都會使用逗號分隔的記錄進行繁瑣。例如,與人們共同擁有的朋友將不得不在數據庫之外處理,這意味着您需要獲取所有數據,然後進行比較。數據傳輸是使用數據庫時的主要瓶頸之一。

另一個原因是,在關係數據庫中使用逗號分隔的記錄,對於如此固有關係的事情來說,這完全是愚蠢的。但這個原因可能是一個不太實際的...