2012-04-12 76 views
2

结构,我想允许用户跟随其他用户与Twitter,Instagram的等等。我想,这应包括表结构类似以下内容:的PHP/MySQL /社交网络的最佳pracice表追随者

用户用户ID,密码,电子邮件,FNAME,lname的

关注与userid1(INT),followstatus(TINYINT),usererid2(INT)

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

我可以告诉user1他正在查询这个表。并通过计数查询告诉用户有多少人关注他们。然后以此关系为条件,将user2s操作(followee)的信息打印到user1(follower)。

这是最佳实践吗?还是有更多的呢......是否有其他领域,表格需要?

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

回答

4

看起来不错。但值得注意的是:如果你的项目真的起飞了,你很快就会从一台机器发展出来,而且必须分拆。这意味着将您的用户和关系表分解为更小的用户。这是一个很大的话题,超出了范围。

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

例如,现在很容易查询“谁跟我来”。

select * from followers where user2 = me; 

或“我跟谁?”

select * from followers where user1 = me; 

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

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

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

这只是冰山一角。踏上这个旅程,你会发现很多有趣的问题来解决:)

+0

你的第二点对我来说很合理,我认为它是一个好方向。谢谢。 – 2014-09-12 06:14:35

0

我认为你是在正确的轨道上。包含用户的表是必须的。第二张表是追随者与被关注者之间的关系。这可以让你确定谁跟随谁,允许任何两个用户的双向关系,并使查询变得简单。另外,重要的是,你不会存储任何重要的信息两次。使用单个删除查询删除关系也很容易。