【问题标题】:How can I create a role hierarchy in an ER-Diagram?如何在 ER 图中创建角色层次结构?
【发布时间】:2016-03-05 09:02:34
【问题描述】:

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

但是,如果 Employee 具有以下角色呢:
1. 导演
2. 经理
3. 秘书
4. 工人
较低层级中的每个角色都为较高级别的角色工作。

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

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

如何在 ER DIAGRAM 中显示?

【问题讨论】:

  • 您是否混淆了职位层次结构(即可用职位之间的关系)与显示员工与经理的组织结构图?

标签: database entity-relationship erd entity-relationship-model


【解决方案1】:

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

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


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

低层的每个角色都为高层的角色工作 排名。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    等等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 2016-06-27
      • 2012-06-16
      • 2020-10-09
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多