1

我正在学习有关数据库系统的 ER 建模。我的问题是有一个实体称为书籍,实体名为用户,我想在用户和书籍之间创建具有属性发行日期的借阅关系。我按照描述对其进行建模,但有人指出借用不能是关系,因为同一个用户可以借一本书两次。谁能解释一下这是什么,因为我使用问题数据作为属性,因此借用关系中的记录不会发生冲突,因为我将使用 PK 作为用户 ID、书籍 ID 和发行日期。我怎样才能准确地建模呢?我对此有点困惑。

4

2 回答 2

1

在 ER 模型中,实体关系由单个实体集的属性组成,其中 PK 仅标识一个实体集。关系关系具有表示两个或多个实体集的复合 PK。

您的问题使用表示两个实体集(useridbookid)和一个值集(issue date)的复合 PK。严格来说,既不是实体关系,也不是关系关系。它是关系关系(两个实体键)和弱实体集(issue date功能类似于弱键)的组合。如果我们想有创造力,我们可以称之为弱关系。

如果我被迫为此绘制 ER 图,我可能会这样呈现:

借用ER图

ER 模型不是一个完整的逻辑模型(与关系模型不同),并且有些情况没有很好地处理或根本没有处理。这是其中一种情况。

于 2017-03-20T15:56:20.760 回答
0

根据描述,UserBook是实体。

一个用户可以借阅一本书。同理,一个用户可以借阅多个实例,可以是同一个实例,也可以是多个实例。

所以用户和书之间的每笔交易都有发行日期。用户和图书都没有发行日期。

在这里, UserBook之间的关系是Many to Many

Bridge Transaction。_ 我们也可以根据您的兴趣将其命名为 Borrow。

现在,用户有一对多的交易。每本书都有一对多的交易。

每笔交易都是用户和书的组合。

注意:因为每个用户都可以在同一天多次拥有同一本书。因此,我们可以拥有 user_id、book_id 和 Issue_timestamp 的复合主键,因为同一组合中的 Issue Date 可能存在冗余。

于 2017-09-28T06:15:43.830 回答