这是一个有点愚蠢的问题(可能),但我不太确定究竟要搜索什么,或者在 MySQL 数据库中这将被称为什么。
基本上我想在 MySQL 数据库方面迈出下一步。我想做的(例如)假设我有一个带有文章的表格,然后是另一个带有用户的表格。每个用户都可以(为了示例)“喜欢”或“关注”一篇文章。就 MySQL 而言,我将如何做到这一点?这可以通过做普通的关系数据库来实现吗?我能想到的最好的情况是有一个名为 article_likes 的单独数据库,其中包含用户 ID 和文章 ID,但看起来很笨拙。
您有两个实体:文章和用户。而且因为每篇文章可以被很多用户“点赞”,每个用户可以“点赞”很多文章,这就是规范化中的多对多关系(也称为 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 ....
有了这样的结构,用户和文章之间的多对多就变成了两个多对一的关系:
请注意,新创建的表有两个外键(用户、文章),但好的做法是它们自己有一个 id(自动递增)。