【问题标题】:How many tables will the Relational Schema have for this ER Diagram?这个 ER 图的关系模式有多少个表?
【发布时间】:2016-09-29 19:47:20
【问题描述】:

我有以下作为我的 ER 图。我仍在学习 DBMS,并尝试将此 ER 图转换为关系模式。我知道 ER 图中的每个实体都有一个单独的表。但是,我不确定如何处理这个特定 ER 图的关系。我们被告知实体之间的每个关系也将有一个表。因此,我是否也需要为这个 ER 图中的关系分开?但是,没有关系的属性。另外,我对这到底是一种什么样的关系感到困惑?这是一对多吗?

我将链接附加到 ER 图的图片。请指导我正确的方向。谢谢!

【问题讨论】:

    标签: database schema er-diagrams


    【解决方案1】:

    您的图不是该术语最初意义上的 ER 图。在实体-关系模型中,关系是实体集之间的关联,旨在以表的形式实现。例如,您的AUTHOR_BOOKCASTPURCHASE 表是关系表,每个表关联两个实体集(请记住,关系不仅限于两个实体集)。请注意如何使用实体集的键表示关系,例如(actorID, inventID)。在您的其他一些表格中可以找到相同的模式,即(inventID, publisher)(inventID, director)(inventoryID, genre)(inventoryID, supplier)(receiptID, inventID)(receiptID, customerID)。这些是您的关系 - 而不是只是外键约束的鱼尾纹。在 Chen 的原始符号中,关系将使用两个实体类型之间并连接到两个实体类型的菱形来表示。此外,Chen 会为这些关系中的每一个创建一个单独的关系表(也称为联结表)。

    您的表格图显示了 14 个表格。按照陈的方法,一共有19个表:

    您的标题引用了关系模式。请注意,关系模式不限于实体关系模型,而是可以表示任何一组规范化表(1NF 或更高)。表的数量部分取决于规范化水平。

    但是,没有关系的属性。

    这是不正确的。您的 Purchase 关系显示两个属性 - quantityamountPaid。请注意,属性是从实体或关系集到值集的映射。因此,我没有将实体键算作关系的属性。我还将BookpubYear 建模为BookPublisher 之间关系的属性。

    在实践中,我可能会使用相同的行列式对关系进行非规范化,这会给出与原始图表相似的物理架构,尽管单独实现每个关系表在关系基数发生变化时缓解架构更改方面确实有一些优势。

    【讨论】:

    • 你能帮我从更新的完整帖子中识别出所有的实体关系和关系关系吗?谢谢! :)
    • receipt_customer 和inventory_genre 等关系表将包含两个连接实体的主键,对吧?
    • 还有一件事。实体 Inventory 本身分为两部分。一种是书籍和DVD。在编写用于为这三个实体创建表的 SQL 命令时,是否必须在正常的 Create Table 命令之外编写一些额外的命令才能显示这种层次关系?
    • 子类型具有与其超类型相同的主键属性,并且通常由外键约束控制。如果您想强制使用独占子类型,请在此处查看我的答案:stackoverflow.com/questions/37442413/…。如果您的目标 DBMS 支持检查约束,请使用它而不是触发器。
    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 2012-02-26
    相关资源
    最近更新 更多