摘要 Class 从 UML 到 ER 图。可能的 ?如何?

Abstract Class from UML to ER diagram. Possible ? How?

我有下面的 UML class 图和摘要 Class,以及从它延伸的子 Classes。我想用这个 class 图制作一个 ER 图。

我的问题是如何在 ER 图中表示摘要 class?作为 Table ?还是我应该忽略它?

谢谢。

基本上有三种选择可以将泛化转化为数据库模型

1。每个混凝土一个 table class

创建 tables AdminTeacherStudent。 table 中的每一个都包含 User

的所有属性和关系的列
    • 具体子class的所有字段都在同一个table中,因此无需连接即可获取所有学生数据
    • 简单的数据验证约束(例如 Student 的必填字段)
  • 缺点
    • User的所有字段在每个子class中都是重复的table
    • User 的外键必须拆分为三个 FK 字段。一份用于 Admin,一份用于 Teacher,一份用于 Student

2。关于 table 整个泛化集

在这种情况下,您只有一个 table 调用 User,其中包含 User 的所有字段 + User 的所有子 class 的所有字段=]

    • 所有字段都在同一个 table 中,因此无需连接即可获取所有 User 数据
    • FK 未拆分为 User
  • 缺点
    • 有一堆字段从未使用过。 StudentTeacher 的所有字段都不会为 Admins 填写,反之亦然
    • 诸如 Student 之类的具体 class 的必填字段等数据验证变得相当复杂,因为它不再是一个简单的 Not Null 约束。

3。每个混凝土table一个class,一个超级class

在这种情况下,您为每个具体子 class 创建 table,并为 class User 创建一个 table .每个具体子 class table 都有一个强制 FK 到 User

    • 最规范化的架构:用户属性没有重复字段,也没有未使用的字段。
    • FK 未拆分为 User
    • 简单的数据验证约束(例如 Student 的必填字段)
  • 缺点
    • 如果你想要一个Student
    • 的所有数据,你必须查询两个table
    • 确保每个 User 记录恰好有一个 AdminTeacherStudent 记录的复杂验证规则。

您选择这些选项中的哪一个取决于许多因素,例如子class的数量,子class或超级[=111=中的属性数量]、FK 到超级的数量class,可能还有其他一些我没想到的事情。