ERD图中的继承关系

Posted

技术标签:

【中文标题】ERD图中的继承关系【英文标题】:Inheritance relationship in ERD diagrams 【发布时间】:2015-07-04 01:09:35 【问题描述】:

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

一对一的关系

一对多关系

哪个是正确的??

【问题讨论】:

【参考方案1】:

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

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

2) 1-1:如果每个实体不能单独存在。 plane中的PK是cargo和personal子表中的外键和主键。

我认为无论如何它都不是一对多的,我举个例子:平面 pk=1 的 db 记录。个人平面的两个数据库记录,外键=1,引用父平面表中的一条记录。这意味着有两个具有相同键的子实体是错误的。子表中必须只有一个引用记录,因此是 0..1-1 或 1-1 关系。

【讨论】:

谢谢!我已经明白了。但是如果你检查这个link 他们使用一对多的关系!!我觉得这有点奇怪。【参考方案2】:

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

图表技术并没有告诉您如何设计反映这种继承情况的关系表。这实际上更多是数据库设计的问题,而不是 ER 图表。如果您查看 Martin Fowler 对“类表继承”或“单表继承”的处理,您会很好地介绍一些设计模式。

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

【讨论】:

感谢您的评论,但我已经知道了。我的问题只是想知道使用哪种关系。感谢 Martin Fowler 对“类表继承”的处理建议!非常好用!

以上是关于ERD图中的继承关系的主要内容,如果未能解决你的问题,请参考以下文章

如何识别 ERD 上的强弱关系?

UML图中类的关系

如何让 Doxygen 忽略继承关系?

继承与多态

UML图中继承和实现的区别

面向对象——对继承关联聚合组合依赖的理解