社交网站的数据库设计

53

社交网络站点(例如Twitter)中会有哪些表格?

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

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

请不要认为这是主观/离题的。由于我是初学者,我希望专家能指导我设计一个良好的数据库?

3个回答

62

尝试查看Database Answers网站,特别是数据模型部分,有几个不同的设计适用于各种系统。这个数据模型适用于社交网络网站,可能会给您提供所需的想法。

您可能还想在SO上搜索其他社交网络数据库问题。我找到了这个帖子,其中包含指向flickr展示Facebook架构的链接。

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


2
目前为止,前两个链接已经失效。 - Sachin Gadagi
1
您仍然可以通过wayback在此处查看第二个设计... http://web.archive.org/web/20101122023638/http://databaseanswers.org/data_models/social_networking/index.htm - Andy Robinson
在这样的设计中,您会使用每个用户单独的数据库吗? - Kappacake

14

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

Messenger DB Schema


1
这个数据模型并没有解决如何建模关注者和被关注者的问题。 - Nick.McDermaid
1
这个概念并不是一个完整和完备的设计,它只是数据库设计的概念 :) - Sadegh-khan
2
密码varchar(40)看起来像SHA1-现在你需要60个字节来使用bcrypt。加上姓氏的varchar(20)相对较小。我有一个朋友,他的姓氏至少有30个字符。 - Simon Courtenage

14

您可以创建一个专门用于关注/被关注的关系的表格。因此,当x关注y时,创建一个具有follower_id = x.id followed_id = y.id 的条目。

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

如果x取消对y的关注,则只需删除最初创建的条目即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接