ERD图中的继承关系

Inheritance relationship in ERD diagrams

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

一对一关系

一对多关系

哪一个是正确的??

ERD 中的继承关系应根据情况表示为一对一关系或一对或零对一关系。

1) 0..1-1 : 如果可能存在飞机实体,因为飞机可以在没有子实体(如货物或个人)的情况下存在,但货物和个人不能在没有父飞机实体的情况下存在。

2) 1-1: 如果每个实体都不能独立存在。 plane中的PK是cargo和personal child中的外键和主键tables.

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

ER 建模(或更准确地说,EER 建模)有一种在图中表示继承的方法。它的名字是 "generalization/specialization"。你可以通过搜索在网络上找到许多好的文章。

图表技术不会告诉您如何设计反映这种继承情况的关系表。与 ER 图表相比,这实际上更像是数据库设计问题。如果您查看 Martin Fowler 对 "class table inheritance" 或 "single table inheritance" 的处理,您会很好地介绍一些设计模式。

SO 中有带有这些名称的标签,这些标签下的信息很有帮助,以及用它们标记的问题。