【问题标题】:What does inheritance in UML do with your ERD?UML 中的继承对您的 ERD 有什么作用?
【发布时间】:2010-07-23 12:45:04
【问题描述】:

我为一个系统创建了一个类图,现在我必须将它建模成一个真实的系统。这意味着将其转换为数据库。

现在有一个基类,它只有几个属性,但有很多类继承自它。现在我的转换清单说我必须为每个班级创建一个表格。

我不知道如何处理继承,我可以看到关联是通过 PK 和 FK 完成的,但是子类呢?

有没有文章可以解决这个问题,或者有人可以向我解释一下吗?

提前致谢,

【问题讨论】:

标签: database inheritance uml


【解决方案1】:

您可以通过三种方式将类层次结构转换为关系表: - 只为超类创建一个表(子类的所有属性和关联都移动到与超类对应的表中,并可能取 NULL 值) - 仅为子类创建表:超类的所有属性和关联在每个子类中重复 - 为超类和每个子类创建表。在这种情况下,子类的 PK 在同一个表中是父类的 FK(这确保子类表中的所有标识符都对应于超类表中的现有标识符。两个表之间的连接允许恢复完整信息元素)

最佳策略取决于问题(例如,每个类中的属性数量,层次结构中的层数,层次结构是否不相交,......)

如果你想看一些例子,你可以将你的层次结构上传到UMLtoDB在线服务http://modeling-languages.com/content/uml2db-full-code-generation-sql-scripts-databases

【讨论】:

    【解决方案2】:

    放弃所有的 UML 废话 - 保持简单。它只是无益的重复。 Microsoft 或 Sun 是否发布了用于 dOT NET 或 Java 的 UML...忘记奇怪的示例,这些框架中的大多数在任何地方都没有任何官方 UML。

    【讨论】:

      【解决方案3】:

      通常,在设计实际类图时,您会并行设计数据模型(数据库表/PK/FK 等)。在确定了所有候选类和每个类的依赖关系之后,您可能会继续设计序列图。此时,您的数据模型应该已经完成​​。

      我无法理解您的情况,但 IMO 您遵循的流程对我来说似乎是个坏主意。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-24
        • 2015-07-04
        • 1970-01-01
        • 1970-01-01
        • 2014-08-04
        • 1970-01-01
        • 2020-09-22
        • 1970-01-01
        相关资源
        最近更新 更多