追随者/关注关系

时间:2019-02-09 22:02:21

标签: mysql sql database-design

我了解基本的数据库关系如何工作,但是我对RDBM中的以下/后续社交媒体关系感到困惑。

用户表:

userId (PK)
email
name

关注表:

followerId (FK referencing userId),
followeeId (FK referencing userId)

这似乎是正确的数据库设计,但是我真的想知道这是一对多还是多对多关系。

我认为这是很多对很多的事情,因为一个用户可以关注很多用户,并且可以被很多用户关注。但这可能是一对多的,因为用户进行的每个关注都包含一个要关注的userId。这不是完美的例子,例如学生和班级,这让我感到困惑。谢谢。

1 个答案:

答案 0 :(得分:1)

在我看来,您的数据库设计与您的用例保持一致。

您在用户之间具有多对多关系,其中用户可以:

  • 关注许多用户
  • 并受到许多用户的关注

为表示这种关系,您创建了一个 bridge表,即follow表。这是进行操作的相关方法。

与典型的Student / Class关系的不同之处在于,两个相关的对象都存储在同一张表(users)中:这就是为什么您在{{1}中使用两个外键的原因}表引用了follow。但是,不管这种特殊性,从概念上讲,这是相同类型的关系。