如何在 ER 图中创建角色层次结构?

How can I create a role hierarchy in an ER-Diagram?

我知道有两个角色的递归关系,例如:
工人为经理工作
Worker 和 Manager 都是 Employee 的两个角色,我们这样表示:

但是如果 Employee 的角色如下:
1. 导演
2.经理
3.秘书
4. 工人
较低等级的每个角色都为较高等级的角色工作。

例如:
经理 为总监工作秘书为总监工作工人为总监工作

然后,
秘书和工人也为经理工作等等...

如何在 ER 图中显示?

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

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

等等

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

在员工之间创建自我关系(递归关系)说哪个员工为另一个员工工作,但没有告诉您哪个角色管理什么。


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

and every role in the lower hierarchy works for the ones in the higher rank.

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

我想这就是你的情况。您不想要 people/employees 之间的层次结构,而是 positions/roles 之间的层次结构。一件事导致另一件事。使用这种方法,根据您在这里强加的基数,您甚至可以说是一个或多个角色管理还是由其他角色管理。方便以后维护。

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