摘要 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 Admin
、Teacher
和 Student
。 table 中的每一个都包含 User
的所有属性和关系的列
- 临
- 具体子class的所有字段都在同一个table中,因此无需连接即可获取所有学生数据
- 简单的数据验证约束(例如
Student
的必填字段)
- 缺点
User
的所有字段在每个子class中都是重复的table
User
的外键必须拆分为三个 FK 字段。一份用于 Admin
,一份用于 Teacher
,一份用于 Student
。
2。关于 table 整个泛化集
在这种情况下,您只有一个 table 调用 User
,其中包含 User
的所有字段 + User
的所有子 class 的所有字段=]
- 临
- 所有字段都在同一个 table 中,因此无需连接即可获取所有
User
数据
- FK 未拆分为
User
- 缺点
- 有一堆字段从未使用过。
Student
和 Teacher
的所有字段都不会为 Admins
填写,反之亦然
- 诸如
Student
之类的具体 class 的必填字段等数据验证变得相当复杂,因为它不再是一个简单的 Not Null
约束。
3。每个混凝土table一个class,一个超级class
在这种情况下,您为每个具体子 class 创建 table,并为 class User
创建一个 table .每个具体子 class table 都有一个强制 FK 到 User
- 临
- 最规范化的架构:用户属性没有重复字段,也没有未使用的字段。
- FK 未拆分为
User
- 简单的数据验证约束(例如
Student
的必填字段)
- 缺点
- 如果你想要一个
Student
的所有数据,你必须查询两个table
- 确保每个
User
记录恰好有一个 Admin
、Teacher
或 Student
记录的复杂验证规则。
您选择这些选项中的哪一个取决于许多因素,例如子class的数量,子class或超级[=111=中的属性数量]、FK 到超级的数量class,可能还有其他一些我没想到的事情。
我有下面的 UML class 图和摘要 Class,以及从它延伸的子 Classes。我想用这个 class 图制作一个 ER 图。
我的问题是如何在 ER 图中表示摘要 class?作为 Table ?还是我应该忽略它?
谢谢。
基本上有三种选择可以将泛化转化为数据库模型
1。每个混凝土一个 table class
创建 tables Admin
、Teacher
和 Student
。 table 中的每一个都包含 User
- 临
- 具体子class的所有字段都在同一个table中,因此无需连接即可获取所有学生数据
- 简单的数据验证约束(例如
Student
的必填字段)
- 缺点
User
的所有字段在每个子class中都是重复的tableUser
的外键必须拆分为三个 FK 字段。一份用于Admin
,一份用于Teacher
,一份用于Student
。
2。关于 table 整个泛化集
在这种情况下,您只有一个 table 调用 User
,其中包含 User
的所有字段 + User
的所有子 class 的所有字段=]
- 临
- 所有字段都在同一个 table 中,因此无需连接即可获取所有
User
数据 - FK 未拆分为
User
- 所有字段都在同一个 table 中,因此无需连接即可获取所有
- 缺点
- 有一堆字段从未使用过。
Student
和Teacher
的所有字段都不会为Admins
填写,反之亦然 - 诸如
Student
之类的具体 class 的必填字段等数据验证变得相当复杂,因为它不再是一个简单的Not Null
约束。
- 有一堆字段从未使用过。
3。每个混凝土table一个class,一个超级class
在这种情况下,您为每个具体子 class 创建 table,并为 class User
创建一个 table .每个具体子 class table 都有一个强制 FK 到 User
- 临
- 最规范化的架构:用户属性没有重复字段,也没有未使用的字段。
- FK 未拆分为
User
- 简单的数据验证约束(例如
Student
的必填字段)
- 缺点
- 如果你想要一个
Student
的所有数据,你必须查询两个table
- 确保每个
User
记录恰好有一个Admin
、Teacher
或Student
记录的复杂验证规则。
- 如果你想要一个
您选择这些选项中的哪一个取决于许多因素,例如子class的数量,子class或超级[=111=中的属性数量]、FK 到超级的数量class,可能还有其他一些我没想到的事情。