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

Why is this ERD Entity one to many?

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

下图就是解决方案

看了这个解,我明白一个作者可以写很多本书了。一本书可以放在许多收藏夹中。但是许多收藏夹中的一个用户?用户和收藏夹不应该是一对一的关系吗?一个用户有一个收藏夹列表?

booksusers 之间的关系是 N:M,它是多对多的,是用关联实体(table之间)被称为最爱。这就是您通常如何在两个实体之间实现 N:M 关系:通过创建一个 "bridge" table,您的两个 table 都具有 1:N 关系(一个到许多)。

在您的情况下,一个用户可以收藏多本书,就像一本书可以被许多用户收藏一样。这意味着 table favourites 中的候选键由 booksusers[=27= 的主键组成] tables,即(user_id, book_id).


如果您在用户收藏夹table之间有1:1关系,这意味着一个用户只能收藏一本书,按照该声明,您不需要 favorites table,而是可以将图书的主键放在 users[=27= 中] table 建立这种关系 1:N(书籍和用户之间)。