【发布时间】:2011-08-28 03:59:13
【问题描述】:
我有一个使用 php 和 mysql 制作的社交网络。我试图弄清楚如何为每个用户制作追随者。我应该在 mysql 中创建一个包含每个人的关注者列表的表,并为他们关注的每个人创建一个表吗?这应该如何工作?我应该如何设置我的数据结构?请帮忙。
【问题讨论】:
标签: php social-networking mysql-management mysql
我有一个使用 php 和 mysql 制作的社交网络。我试图弄清楚如何为每个用户制作追随者。我应该在 mysql 中创建一个包含每个人的关注者列表的表,并为他们关注的每个人创建一个表吗?这应该如何工作?我应该如何设置我的数据结构?请帮忙。
【问题讨论】:
标签: php social-networking mysql-management mysql
Table `followers`
id
user_id
follows_id
如果用户关注另一个用户,请将他们的 id 添加到此表中,其中user_id 是关注的用户,follows_id 是他关注的用户。
【讨论】:
您应该查看ERD。你是对的。您有一张包含用户的表格。用户与用户之间存在多对多关系,因此请创建一个包含该关系的表。它应该至少有两个字段; “user”和“follower”,你存储各自实体的id。
【讨论】:
这当然是多对多的关系,我会使用复合主键。
我不会使用显式的 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
);
【讨论】: