我有以下作为我的 ER 图。我仍在学习 DBMS,并尝试将此 ER 图转换为关系模式。我知道 ER 图中的每个实体都有一个单独的表。但是,我不确定如何处理这个特定 ER 图的关系。我们被告知实体之间的每个关系也将有一个表。因此,我是否也需要为这个 ER 图中的关系分开?但是,没有关系的属性。另外,我对这到底是一种什么样的关系感到困惑?这是一对多吗?
1 回答
您的图不是该术语最初意义上的 ER 图。在实体-关系模型中,关系是实体集之间的关联,旨在实现为表。例如,您的AUTHOR_BOOK
和CAST
表PURCHASE
是关联两个实体集的关系表(请记住,关系不仅限于两个实体集)。请注意如何使用实体集的键表示关系,例如(actorID, inventID)
。在您的其他一些表格中可以找到相同的模式,即(inventID, publisher)
, (inventID, director)
, (inventoryID, genre)
, (inventoryID, supplier)
,(receiptID, inventID)
和(receiptID, customerID)
. 这些是您的关系 - 而不是只是外键约束的鱼尾纹线。在 Chen 的原始符号中,关系将使用两个实体类型之间并连接到两个实体类型的菱形来表示。此外,Chen 会为这些关系中的每一个创建一个单独的关系表(也称为联结表)。
您的表格图显示了 14 个表格。按照 Chen 的方法,将有 19 个表:
您的标题引用了关系模式。请注意,关系模式不限于实体关系模型,而是可以表示任何一组规范化表(1NF 或更高)。表的数量将部分取决于规范化水平。
但是,没有关系的属性。
这是不正确的。您的Purchase
关系显示两个属性 -quantity
和amountPaid
。请注意,属性是从实体或关系集到值集的映射。因此,我没有将实体键算作关系的属性。Book
我还将's建模为和pubYear
之间关系的属性。Book
Publisher
在实践中,我可能会用相同的行列式对关系进行非规范化,这会给出与原始图类似的物理模式,尽管单独实现每个关系表在关系基数变化时缓解模式变化方面确实有一些优势。