如何为用户实现关注者,如在 twitter 中

Posted

技术标签:

【中文标题】如何为用户实现关注者,如在 twitter 中【英文标题】:How to implement followers for users, as in twitter 【发布时间】:2011-08-28 03:59:13 【问题描述】:

我有一个使用 phpmysql 制作的社交网络。我试图弄清楚如何为每个用户制作追随者。我应该在 mysql 中创建一个包含每个人的关注者列表的表,并为他们关注的每个人创建一个表吗?这应该如何工作?我应该如何设置我的数据结构?请帮忙。

【问题讨论】:

【参考方案1】:
Table `followers`

id
user_id
follows_id

如果用户关注另一个用户,请将他们的 id 添加到此表中,其中user_id 是关注的用户,follows_id 是他关注的用户。

【讨论】:

【参考方案2】:

您应该查看ERD。你是对的。您有一张包含用户的表格。用户与用户之间存在多对多关系,因此请创建一个包含该关系的表。它应该至少有两个字段; “user”和“follower”,你存储各自实体的id。

【讨论】:

起初我以为我在点击那个链接时要发疯了。然后我意识到我的精神错乱是无关的...... 也许您可以为我使用 UML?也许是一些不错的状态机?【参考方案3】:

这当然是多对多的关系,我会使用复合主键。

我不会使用显式的 id 列,而是将 user_id 和 follower_id 的组合列作为 follower 表的主键。这样可以避免任何条目被重复。

我还添加了一个外键约束,这样如果用户在用户表中被删除,那么所有用户条目都将从关注者表中删除;

create table followers
(
     user_id int unsigned not null, 
     follower_id int unsigned not null, 
     primary key(user_id,follower_id), 
     foreign key(user_id) references users(id) on delete cascade on update cascade
);

【讨论】:

以上是关于如何为用户实现关注者,如在 twitter 中的主要内容,如果未能解决你的问题,请参考以下文章

新的 Firebase Firestore DocumentDb 如何为大型子集合建模

您将如何为 Twitter 等社交网站设计 AppEngine 数据存储?

抓取 Twitter 用户和关注者数据

使用 Tweepy 从用户 Twitter 关注者那里获取用户 ID 列表

从 twitter 获取关注者是不是有任何限制

使用 Selenium 从 Twitter 抓取关注者