PHP / MYSQL /社交网络最佳练习表结构为追随者


PHP/MYSQL/social network best pracice table structure for followers

我想允许用户像Twitter,Instagram等一样关注其他用户。 我认为这应该包括如下表结构:

具有用户标识、密码、电子邮件、fname、lname 的用户

具有 userid1(INT)、关注状态(TINYINT)、usererid2 (INT) 的关注者

当用户 1 决定关注用户 2 时,将创建新行。 如果用户 1 决定不再关注用户 2,则可以关闭稍后关注状态。 如果用户 2 跟随用户 1,则会有一个单独的条目

我可以告诉用户 1 他正在跟踪谁查询此表。 并告诉用户有多少人通过计数查询关注他们。然后以这种关系为条件,将用户 2 的操作(关注者)的信息打印给用户 1(关注者)。

这是最佳实践吗? 还是还有更多... 还有其他字段、表格需要吗?

注意:用户有另一个人员表,不一定是用户,但我认为关注者状态应该在单独的表中。

这看起来不错。不过,有一点需要注意:如果你的项目真的要起飞,你很快就会从一台机器中成长起来,并且将不得不分片。这意味着将用户表和关系表分解为较小的表。这是一个很大的话题,超出了这里的范围。

一旦您打破它们,某种类型的查询就会变得困难或不可能。

例如,现在查询"谁关注我"很简单。

select * from followers where user2 = me;

"或者"我跟着谁?

select * from followers where user1 = me;

一旦您打破了追随者表,这些查询之一将是不可能的(因为数据可能跨越多个表/数据库/服务器)。要解决此问题,您可能需要创建两个表:

i_follow (user1 int, user2 int)
follow_me (user1 int, user2 int)

并在每个新关系上插入相应的记录。

这只是冰山一角。踏上这段旅程,您会发现许多有趣的问题需要解决:)

我认为你走在正确的轨道上。 包含用户的表是必须的。 第二张表是追随者与追随者的关系。 这将允许您确定谁关注谁,允许任何 2 个用户在两个方向上建立关系,并使查询变得简单。 此外,重要的是,您不会两次存储任何重要信息。 使用单个删除查询也可以轻松删除关系。