为什么这个ERD实体一对多?

时间:2017-10-22 23:30:18

标签: mysql entity-relationship erd

这是我的任务:现在是您从头开始创建完整ERD的机会。我们希望您创建一个Web应用程序,允许用户查看书籍列表(每个书籍都有标题和作者姓名)。此外,应允许用户保存自己喜欢的书籍列表。

下图是解决方案。

看一下解决方案,我可以理解一位作者可以写很多书。一本书可以在许多收藏中。但是很多收藏中的一个用户?用户和收藏者不应该是一对一的关系吗?一个用户有一个收藏夹列表?

1 个答案:

答案 0 :(得分:1)

图书用户之间的关系是N:M,它是多对多的,并且使用名为收藏夹。这就是你通常在两个实体之间实现N:M关系的方法:通过创建一个“桥”表,你的两个表都有1:N关系(一对多)。

在您的情况下,一个用户可以喜欢很多书,就像一本书可以被许多用户所青睐。这意味着表收藏夹中的候选键包含图书用户表的主键,即(user_id,book_id)。

如果用户收藏夹表之间存在1:1的关系,则这意味着一个用户只能收藏一本书,并且您不需要收藏表,但可以将图书的主键放在用户表格中,使这种关系为1:N(书籍和用户之间)。