【问题标题】:Database design for a social networking site社交网站的数据库设计
【发布时间】:2011-03-17 07:37:16
【问题描述】:

社交网站(例如:Twitter)中会出现哪些表格。

我现在有一个用户表。如何跟踪关注者和我关注的人?

  • 我应该为关注者和我关注的人维护一个单独的表格吗?
  • 这些表中有哪些列?

请不要认为这是主观/离题。作为一个初学者,我认为专家可以指导我获得一个好的数据库设计?

【问题讨论】:

    标签: database database-design social-networking


    【解决方案1】:

    尝试查看Database Answers,尤其是数据模型。它们针对不同的系统有几种不同的设计。这个one 是一个社交网站,它可以让您了解需要什么。

    您可能希望在 SO 上搜索其他社交网络数据库问题。我发现this one 有一个指向flickr 的链接,其中显示了一个似乎来自Facebook 的模式。

    您的数据库设计将基于您的系统要求。如果不确切知道您要实现的目标,就很难为您提供最佳设计。

    【讨论】:

    【解决方案2】:

    您可以为关注者/关注relationships 创建单独的表。因此,当 x 跟随 y 时,使用follower_id = x.id followed_id = y.id 创建一个条目。

    您可以查询关系表以查找与select * from relationships where follower_id = x.id 有关系的所有用户,反之亦然。

    当/如果 x 取消关注 y,您只需删除您最初创建的条目。

    【讨论】:

      【解决方案3】:

      您可以使用这个 Messenger 数据库设计理念:Messenger DB

      【讨论】:

      • 此数据模型中没有任何内容解决了如何为关注者和关注者建模的问题
      • 这个概念不是一个完整的设计,那只是数据库设计概念:)
      • password varchar(40) 看起来像 SHA1 - 现在 bcrypt 需要 60 个字节。加上姓氏的 varchar(20) 相当小。我有一个朋友的姓氏至少有 30 个字符。
      猜你喜欢
      • 1970-01-01
      • 2011-09-24
      • 2012-10-08
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      相关资源
      最近更新 更多