我正在学习有关数据库系统的ER建模。我的问题是,有一个名为books的实体,名为user的enitity,我想在属性发布日期创建用户和书籍之间的借用关系。我按照描述对其进行了建模,但有人指出借用不能成为一种关系,因为同一个用户可以借两次书。任何人都可以解释这是什么,因为我使用问题数据作为属性,因此借用关系中的记录不会发生冲突,因为我将使用PK作为用户ID,bookid和发布日期。我该如何准确地对此进行建模?我对此感到有些困惑。
答案 0 :(得分:1)
在ER模型中,实体关系由单个实体集的属性组成,其中PK仅标识一个实体集。关系关系具有表示两个或更多实体集的复合PK。
您的问题使用表示两个实体集(userid
和bookid
)和值集(issue date
)的复合PK。严格地说,它既不是实体关系,也不是关系关系。它是关系关系(两个实体键)和弱实体集(issue date
函数类似于弱键的组合)。如果我们想要有创意,我们可能会称之为弱关系。
如果我被迫为此绘制ER图,我可能会这样呈现:
ER模型不是一个完整的逻辑模型(与关系模型不同),并且有些情况处理得不好或根本没有。这是其中一种情况。
答案 1 :(得分:0)
根据说明,用户和图书是实体。
一个用户可以借用一本书的实例。 同样,一个用户可以借用多个图书实例,无论它是否相同 实例或各种实例。
因此,用户和图书之间的每笔交易都有发行日期。 用户和书籍都没有发行日期。
此处,用户与图书之间的关系为多对多。
Bridge 表是交易。我们可以根据您的兴趣将其命名为Borrow。
现在,用户有一对多的交易。 每本书都有一对多的交易。
每笔交易都是用户和图书的组合。
注意:由于每个用户可以在同一天多次拥有同一本书。因此,我们可以拥有user_id,book_id和Issue_timestamp的复合主键,因为在同一组合中发行日期可能存在冗余。