ER图表情况,其中有许多未知角色,但一个特定的角色是不同的

时间:2017-09-17 09:01:29

标签: database database-design entity-relationship

让我们说我有员工,他们都有基本的东西,如姓名和电话号码,但他们也有一个或多个角色,但对于一个特定的角色,比如销售人员(没有其他人)需要存储一些额外的信息。我也不知道,也永远不会知道所有可能的角色,并且可以随时发挥新角色。

在ER图上表示这个的最佳方法是什么?如果不是销售人员,我会使用多值属性。

我能想到的最佳方式是: 重叠子类以'salesperson'和'other'作为可能性。但是我并不认为这是一个很好的解决方案,因为我之前从未在ER图上看过“其他”。

我可以为销售人员提供一个可以存储额外信息的非全参与子类,但是否则在员工实体上有一个代表所有角色的多值属性?对我来说似乎仍然不好,因为有冗余和信息没有存储在一起。

1 个答案:

答案 0 :(得分:0)

您可以有两个表,Employee和Salesperson。

员工包括您为各类员工(包括销售人员)捕获的所有数据。关键是Employee.Id

销售员只有销售人员的条目。它包含销售人员的专业数据。关键是Salesperson.EmployeeId。这也是一个外键,引用Employee.Id。

如果您需要有关销售人员的所有数据,只需使用密钥将两个表连接在一起即可。您可以拥有一个使此连接可用的视图。

这是class-table-inheritance和shared-primary-key的改编。