这是一个有点愚蠢的问题(可能),但我不太清楚究竟要搜索什么或者在MySQL数据库方面会调用什么。
基本上我想在MySQL数据库方面迈出下一步。我想做的(作为一个例子)就是说我有一个包含文章的表,然后是另一个用户表。每个用户可以(为了示例)“喜欢”或“跟随”文章。我如何在MySQL方面做到这一点?这可以通过正常的关系数据库来实现吗?我能想到的最好的情况是有一个名为article_likes的单独数据库,其中包含用户的ID以及文章的ID,但它看起来很笨拙。
答案 0 :(得分: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 ....
通过这种结构,用户和文章之间的多对多关系成为两个多对一关系:
请注意,新创建的表有两个外键(用户,文章),但是好的做法是说它们自己有一个id(自动递增)。