【发布时间】:2010-07-23 12:45:04
【问题描述】:
我为一个系统创建了一个类图,现在我必须将它建模成一个真实的系统。这意味着将其转换为数据库。
现在有一个基类,它只有几个属性,但有很多类继承自它。现在我的转换清单说我必须为每个班级创建一个表格。
我不知道如何处理继承,我可以看到关联是通过 PK 和 FK 完成的,但是子类呢?
有没有文章可以解决这个问题,或者有人可以向我解释一下吗?
提前致谢,
【问题讨论】:
标签: database inheritance uml
我为一个系统创建了一个类图,现在我必须将它建模成一个真实的系统。这意味着将其转换为数据库。
现在有一个基类,它只有几个属性,但有很多类继承自它。现在我的转换清单说我必须为每个班级创建一个表格。
我不知道如何处理继承,我可以看到关联是通过 PK 和 FK 完成的,但是子类呢?
有没有文章可以解决这个问题,或者有人可以向我解释一下吗?
提前致谢,
【问题讨论】:
标签: database inheritance uml
您可以通过三种方式将类层次结构转换为关系表: - 只为超类创建一个表(子类的所有属性和关联都移动到与超类对应的表中,并可能取 NULL 值) - 仅为子类创建表:超类的所有属性和关联在每个子类中重复 - 为超类和每个子类创建表。在这种情况下,子类的 PK 在同一个表中是父类的 FK(这确保子类表中的所有标识符都对应于超类表中的现有标识符。两个表之间的连接允许恢复完整信息元素)
最佳策略取决于问题(例如,每个类中的属性数量,层次结构中的层数,层次结构是否不相交,......)
如果你想看一些例子,你可以将你的层次结构上传到UMLtoDB在线服务http://modeling-languages.com/content/uml2db-full-code-generation-sql-scripts-databases
【讨论】:
放弃所有的 UML 废话 - 保持简单。它只是无益的重复。 Microsoft 或 Sun 是否发布了用于 dOT NET 或 Java 的 UML...忘记奇怪的示例,这些框架中的大多数在任何地方都没有任何官方 UML。
【讨论】:
通常,在设计实际类图时,您会并行设计数据模型(数据库表/PK/FK 等)。在确定了所有候选类和每个类的依赖关系之后,您可能会继续设计序列图。此时,您的数据模型应该已经完成。
我无法理解您的情况,但 IMO 您遵循的流程对我来说似乎是个坏主意。
【讨论】: