database - UML 中的继承对您的 ERD 有什么作用?

标签 database inheritance uml

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

现在有一个只有几个属性的基类,但是有很多类继承自它。现在,我的转换 list 显示我必须为每个类(class)创建一个表格。

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

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

提前致谢

最佳答案

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

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

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

关于database - UML 中的继承对您的 ERD 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3318233/

相关文章:

UML - 是否可以将 ActivityPartitions 添加到 StructuredActivityNodes?

UML关联多重性

MySQL查询以获取范围内的计数

sql-server - SQL Server - 更改 PK 数据类型的最佳方法是什么?

php - UNION ALL 查询不匹配的表

java - 存储每几个小时更新一次的小型、交替、公共(public)数据的最佳方法是什么?

c# - 在 C# 中,是否可以将 List<Child> 转换为 List<Parent>?

c++ - 使用 bool operator== 比较对象

python - 在python3中使用现有的父类(super class)实例初始化子类

uml - 具有泛化和专门化的聚合顺序