0

我知道有 2 个角色的递归关系,例如:
Worker 为 Manager
工作 ,Worker 和 Manager 都是 Employee 的 2 个角色,我们这样展示: 在此处输入图像描述

但是,如果员工的角色如下:
1. 主管
2. 经理
3. 秘书
4. 工人
和较低层级的每个角色都为较高级别的角色工作。

例如:
经理 为主任工作,秘书为主任工作工人为主任工作

再说一次,
秘书和工人也为经理工作等等......

如何在 ER 图中显示?

4

2 回答 2

1

如果员工有职位(角色),那么我们这里就有一个功能冗余属性/属性。这种冗余是员工的当前职位(角色)。当分解(分解)时,它将成为另一个与员工具有 1-N 关系的实体。

在员工之间创建自我关系(递归关系)表示哪个员工为另一个员工工作,但不会告诉您哪个角色支配什么。


另一方面,如果您需要定义并坚持哪些职位(角色)相互适用,那么您需要创建一个角色实体,并为其创建一个递归关系,表达哪个职位(角色)支配另一个。完成后,您将员工与角色相关联(后来,角色表中的一行/寄存器),定义了哪个员工具有哪个角色的关系。

较低层级中的每个角色都为较高级别的角色工作。

根据用户的职位(角色)以及在他们之间创建的层次结构(角色),您可以知道哪个员工为哪个员工工作。例如,这是通过简单的 SQL 连接完成的。

我认为这是你的情况。您不想要人员/员工之间的层次结构,而是职位/角色之间的层次结构。一件事导致另一件事。使用这种方法,根据您在此处施加的基数,您甚至可以说是一个或多个角色管理还是由其他角色管理。这有利于将来的维护。

有任何疑问或问题,请评论,我会回答。

于 2016-05-31T19:52:24.947 回答
0

您使用的是什么 ERD 表示法?我不认识它。它是否支持显示子类型?如果是这样,我会将 Director、Manager、Secretary 等设置为 Employee 的子类型,然后显示子类型之间的关系:

[Manager] --- <works for> ---> [Director]

等等

于 2016-03-05T13:58:28.000 回答