我希望允许用户通过 Twitter、Instagram 等方式关注其他用户。我认为这应该包括如下所示的表格结构:
具有用户 ID、密码、电子邮件、fname、lname 的用户
具有 userid1(INT)、followstatus(TINYINT)、usererid2 (INT) 的关注者
当 user1 决定关注 user2 时,将创建新行。如果用户 1 决定不再关注用户 2,则可以关闭稍后的关注状态。如果用户2关注用户1,将会有一个单独的条目
通过查询该表,我可以告诉 user1 他正在关注谁。并通过计数查询告诉用户有多少人关注他们。然后根据这种关系,将 user2(followee)的操作信息打印到 user1(follower)。
这是最佳实践吗?或者还有更多....是否需要其他字段、表格?
注意:用户有另一个人员表,不一定是用户,但我认为关注者状态应该位于单独的表中。
最佳答案
看起来不错。但需要注意的是:如果您的项目真正起飞,您很快就会从一台机器中成长出来,并且必须进行分片。这意味着将您的用户和关系表分成更小的表。这是一个很大的话题,超出了本文的范围。
一旦破坏了它们,某种类型的查询就会变得困难或不可能。
比如现在查询“谁关注了我”就很简单了。
select * from followers where user2 = me;
或者“我关注谁?”
select * from followers where user1 = me;
一旦破坏了关注者表,这些查询之一将无法实现(因为数据可能跨越多个表/数据库/服务器)。为了克服这个问题,您可能需要创建两个表:
i_follow (user1 int, user2 int)
follow_me (user1 int, user2 int)
并在每个新关系上插入相应的记录。
这只是冰山一角。踏上这段旅程,您会发现许多有趣的问题需要解决:)
关于PHP/MYSQL/社交网络关注者最佳实践表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10126122/