2

我正在与另一位开发人员合作开发一种社交网站,人们可以在其中提出类似于 Facebook 的好友请求。但是,他将每个用户的朋友存储为逗号分隔值:

user_id | user_friends
101     | 102,103,105

我确信这是非常低效且容易出错的。我会亲自使用关系数据库模型并创建另一个包含列的表friendship_id (PRIMARY KEY), friender_id and friended_id.

我对吗?我应该提出什么论据来支持我的立场?干杯

4

3 回答 3

2

你是对的。

使用他的系统,您将如何处理好友请求的状态(即取消、待处理、已接受)?

解析 user_friends 字符串会很痛苦,您将无法使用连接来获取复杂的数据。

于 2012-12-17T12:00:51.363 回答
1

虽然使用逗号分隔是可以的,但很难管理搜索你将不得不使用 FIND_IN_SET 并且在更新时你将不得不做更多的工作。Intead 使用其他方式很容易使用。您可以根据需要轻松添加尽可能多的关系。搜索当然很容易。

于 2012-12-17T12:02:46.487 回答
1

再补充一个原因:两个用户朋友之间的任何比较都会因为逗号分隔记录而变得麻烦。例如,人们的共同朋友必须在数据库之外处理,这意味着您需要获取所有数据然后进行比较。数据传输是使用数据库时的主要瓶颈之一。

另一个原因是在关系数据库中使用逗号分隔的记录,因为本质上是关系的东西是彻头彻尾的愚蠢。但这个原因可能是一个但不太现实的......

于 2012-12-17T12:19:40.347 回答