【问题标题】:What's the relationship between the two entities?这两个实体之间是什么关系?
【发布时间】:2017-03-10 07:33:50
【问题描述】:

数据库的ER图如下:

现在,飞机和航班实体之间的关系是什么?

我会说一对多,但这是错误的,因为虽然一架飞机可以有多个航班,但许多航班不能同时拥有一架(单)飞机。

那么,到底是什么关系呢?

我是数据库新手。如果我错了,请告诉我。

【问题讨论】:

    标签: database rdbms er-diagrams


    【解决方案1】:

    首先,您的图表不是 ER 图,而是表格图。 ER 图必须能够表示 ER 模型,它支持三元和更高的关系、弱实体集和识别关系,以及其他表图没有符号的概念。正确的 ER 图符号通常称为陈氏符号。

    现在,通过查找出现在同一个表中的实体域(标识实体集的列),可以轻松识别 ER 关系。这些通常由 PK 和/或 FK 表示,但不一定是。

    当你有二元关系时(同一张表中有两个实体域),查看这些域上的唯一约束:

    • 一对一关系需要两个单独的唯一约束,每个域一个。

    • 一对多关系需要对多方域的唯一约束。

    • 多对多关系需要对两个域同时使用复合唯一约束。

    一对多关系可以非规范化为多方实体的实体关系,因为关系所需的唯一约束与实体关系的 PK 相匹配。一对一关系可以非规范化为任一实体关系。多对多关系需要组合键,并且必须表示为单独的关系,因为组合键与任一实体关系的 PK 都不匹配。

    在您的示例中,(flight_num, planeID) 表示关系,并且由于只有 flight_num 是唯一受约束的(由于是 flights 关系的 PK),这是一个多对一的关系:每个航班都是只与一架飞机相关联,而每架飞机可以参与许多次飞行。

    这是一个视觉参考,其中独特的约束用下划线表示:

    许多人仍然使用旧网络数据模型中的术语和概念,例如将关系与 FK 约束和实体集与表混为一谈(这就是为什么表图经常被错误地称为 ERD)。我强烈推荐阅读 Codd 的论文“A Relational Model of Data for Large Shared Data Banks”和 Chen 的论文“The Entity-Relationship Model - Toward a Unified View of Data”。

    【讨论】:

      【解决方案2】:

      正如你所说的关系是一对多因为如果它是一个多对多关系它必须在这两个表之间有一个联结表(Tbl_Plane_Flight) ,另一件事是在Flights表中引用了Plane_Id

      但必须有一个验证规则(或航班表中的约束)对于这种关系,一个飞机不能同时有许多航班

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-31
        • 1970-01-01
        • 2013-04-09
        • 1970-01-01
        • 2015-03-27
        • 1970-01-01
        相关资源
        最近更新 更多