-1

这是一个有点愚蠢的问题(可能),但我不太确定究竟要搜索什么,或者在 MySQL 数据库中这将被称为什么。

基本上我想在 MySQL 数据库方面迈出下一步。我想做的(例如)假设我有一个带有文章的表格,然后是另一个带有用户的表格。每个用户都可以(为了示例)“喜欢”或“关注”一篇文章。就 MySQL 而言,我将如何做到这一点?这可以通过做普通的关系数据库来实现吗?我能想到的最好的情况是有一个名为 article_likes 的单独数据库,其中包含用户 ID 和文章 ID,但看起来很笨拙。

4

1 回答 1

0

您有两个实体:文章和用户。而且因为每篇文章可以被很多用户“点赞”,每个用户可以“点赞”很多文章,这就是规范化中的多对多关系(也称为 n:m)。

在关系数据库中,你不能有这种关系。要解决此问题,您需要创建一个将两个表链接在一起的额外表。它类似于 users_articles ,您可以在其中放置用户的密钥(标识符)、文章的密钥(标识符)以及任何其他信息,例如遵循日期等。

id_users_articles id_user   id_articles   date_added  status ....
1                 1         1             2012/11/01 ....
2                 1         2             2012/11/01 ....
3                 2         1             2012/11/01 ....

有了这样的结构,用户和文章之间的多对多就变成了两个多对一的关系:

  1. users和users_articles之间
  2. 在文章和 user_articles 之间。

请注意,新创建的表有两个外键(用户、文章),但好的做法是它们自己有一个 id(自动递增)。

于 2012-11-20T15:27:39.637 回答