【问题标题】:Using commas to store friends-relationship in a social networking site使用逗号在社交网站中存储朋友关系
【发布时间】:2012-12-17 11:58:16
【问题描述】:

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

user_id | user_friends
101     | 102,103,105

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

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

【问题讨论】:

    标签: mysql sql database performance


    【解决方案1】:

    你是对的。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-28
          • 1970-01-01
          • 1970-01-01
          • 2011-09-05
          • 1970-01-01
          相关资源
          最近更新 更多