ERD图中的继承关系

时间:2015-04-25 10:59:01

标签: database mysql-workbench erd

我对ERD图中的继承表示有疑问。 以下示例: 我有飞机,我也有两种类型的飞机 1-PersonsPlane 2- CargoPlane 我很困惑使用哪种关系(1对1或1对多)。我的数据库老师告诉我应该使用一对一的关系,但我在互联网上发现许多例子使用(1对多)关系而不是(1对1)。 检查这些图片:

One-to-One relationship

One-to-Many relationship

哪一个是正确的?

2 个答案:

答案 0 :(得分:2)

ERD中的

继承关系应表示为一对一关系或一对一或零对一关系,具体取决于具体情况。

1)0..1-1:如果可能存在飞机实体,因为飞机可以存在而没有像货物或个人那样的子实体但是没有父飞机实体就不能存在货物和个人。

2)1-1:如果每个实体都不能自己存在。飞机上的PK是货物和个人儿童赌桌中的外键和主键。

我不认为在任何情况下它都是一对多的,我会给你一个例子:飞机的db记录pk = 1。具有外键的个人平面的两个db记录= 1引用父平面表中的一个记录。这意味着有两个具有相同键的子实体是错误的。子表中必须只有一个引用的记录,因此0..1-1或1-1关系。

答案 1 :(得分:1)

ER建模(或更确切地说,EER建模)有一种方法来表示图中的继承。它的名称是“泛化/专业化”。您可以通过搜索在网上找到一些好文章。

图表技术不会告诉您如何设计反映此继承情况的关系表。这更像是数据库设计而不是ER图表。如果你查看Martin Fowler对“类表继承”或“单表继承”的处理,你会得到一些设计模式的好表现。

在SO中有这些名称的标签,这些标签下的信息是有用的,以及用它们标记的问题。