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

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

一对一的关系

一对多关系

哪个是正确的??

【问题讨论】:

    标签: database mysql-workbench erd


    【解决方案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 对“类表继承”的处理建议!非常好用!
    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多