PHP/MYSQL/社交网络关注者最佳实践表结构

标签 php mysql social-media social-network-friendship

我希望允许用户通过 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/

相关文章:

php - 查找 ABC 和 ACA 的字母序列值

mysql - WordPress 在临时 URL 上与 Vesta VPS 建立连接时出错

algorithm - 匹配两个社交媒体资料

html - 自定义github页面的预览图像

php - LxWxH 的正则表达式测试模式

php - 如何删除所有不在 MySQL 时间范围内的条目?

php - 如何构建此代码片段以存储 MySQL 中列 "publicationDate"的日期和时间,同时添加另一列 "editedDate"?

php - mysql 中 WHERE 的问题

php - 我如何从两个表中获取数据 Laravel

algorithm - 什么是 "safety variable"?