【问题标题】:follower/following relationship追随者/追随者关系
【发布时间】:2019-07-03 19:19:49
【问题描述】:

我了解基本数据库关系的工作原理,但我对 RDBM 中的关注/关注社交媒体关系感到困惑。

用户表:

userId (PK)
email
name

如下表:

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

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

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

【问题讨论】:

  • 一个关注者可以关注多个用户吗?一个用户可以被很多关注者关注吗?所以,现在你有答案了
  • 我认为以这种方式考虑表格是错误的。本质上,关系数据库中的所有关系都是一对多的。如果它们是一对一的,则不需要单独的表,如果它们是多对多的,则只能通过使用联结表来描述关系。

标签: mysql sql database database-design foreign-keys


【解决方案1】:

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

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

  • 关注很多用户
  • 并被众多用户关注

为了表示这种关系,您创建了一个桥接表,即follow 表。这是相关的继续方式。

与典型 Student/Class 关系的不同之处在于,两个相关的对象都存储在同一个表中 (users):这就是为什么您最终在 follow 表中引用 @ 的两个外键987654325@。但不管这种特殊性如何,这在概念上是同一类型的关系。

【讨论】:

猜你喜欢
  • 2017-12-08
  • 2021-10-09
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
相关资源
最近更新 更多