从UML到ER图的抽象类。有可能吗 怎么样?

ham*_*ber 1 mysql uml entity-relationship

我有下面的带有抽象类的UML类图,以及从其扩展的子类。我想使用该类图制作一个ER图。

在此处输入图片说明

我的问题是如何在ER图中表示Abstract类?作为表?还是我应该忽略它?

谢谢。

Gee*_*ens 5

将泛化转换成数据库模型基本上有三种选择

1.每个具体班级一张桌子

创建表AdminTeacherStudent。这些表中的每一个都包含列的所有属性和关系User

  • 专业版
    • 具体子类的所有字段都在同一表中,因此不需要连接即可获取所有学生数据
    • 简单的数据验证约束(例如的必填字段Student
  • 骗局
    • User每个子类表中的的所有字段都重复
    • User必须将外键分为三个FK字段。一为Admin一一为TeacherStudent

2.整个归纳集的表

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

  • 专业版
    • 所有字段都在同一个表中,因此无需联接即可获取所有User数据
    • 不将FK拆分为 User
  • 骗局
    • 有很多字段从未使用过。专门针对StudentTeacher从未填写的所有字段Admins,反之亦然
    • 诸如具体类之类的必填字段之类的数据验证Student变得相当复杂,因为它不再是一个简单的Not Null约束。

3.每个具体类一张表,一个超类一张表

在这种情况下,您将为每个具体的子类创建表,并为该类创建一个表User。每个具体的子类表都有一个强制FKUser

  • 专业版
    • 最标准化的架构:没有用于用户属性的重复字段,也没有未使用的字段。
    • 不将FK拆分为 User
    • 简单的数据验证约束(例如的必填字段Student
  • 骗局
    • 如果要获取一个表的所有数据,则必须查询两个表 Student
    • 复杂的验证规则,以确保每个User记录都只有一个AdminTeacherStudent记录。

您选择这些选项中的哪一个取决于许多因素,例如子类的数量,子类或超类中的属性的数量,超类中FK的数量以及可能我没有的其他一些东西。想一想。