这两个实体之间的关系是什么?

时间:2017-03-10 07:33:50

标签: database rdbms er-diagrams

数据库的ER图如下:

ER Diagram

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

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

那么,这种关系究竟是什么?

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

2 个答案:

答案 0 :(得分:1)

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

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

如果您有二元关系(同一个表中有两个实体域),请查看这些域上的唯一约束:

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

  • 一对多关系需要在多方面对域进行唯一约束。

  • 多对多关系需要在两个域上一起使用复合唯一约束。

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

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

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

Binary relationship types

许多人仍然使用旧网络数据模型中的术语和概念,例如将关系与FK约束和实体集与表格混淆(这就是为什么表格图表经常被错误地称为ERD)。我强烈建议阅读Codd的论文“大型共享数据库的数据关系模型”和陈的论文“实体 - 关系模型 - 走向统一的数据视图”。

答案 1 :(得分:0)

正如您所说,关系是一对多,因为如果它是多对多关系,它必须在这两个表之间有一个联结表< em>(Tbl_Plane_Flight),另一件事是在航班表中引用了 Plane_Id。

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