Mysql 基于组织结构图的数据库设计

Mysql 基于组织结构图的数据库设计,mysql,database-design,erd,Mysql,Database Design,Erd,我正在尝试将组织结构图转换为实体(部门、员工和项目)所在的数据库模型 有条件: 一名员工只在一个部门工作,而一个部门可能有许多员工在其中工作 一个分区只能有一个管理器,但一个管理器可以管理多个分区 一个剖面可以有多个项目,一个项目可以分配给一个或多个剖面 我创建了以下ERD: 在我的模型中,我将经理和员工包含在一个表中(因为所有人都必须登录仪表板),但这会产生问题,我需要专家指导员工、经理和部门的关系 是否应该为经理设置单独的表格?否,因为经理是用户。有一件事会打乱苹果的购物车,那就是,在一个

我正在尝试将组织结构图转换为实体(部门、员工和项目)所在的数据库模型 有条件:

  • 一名员工只在一个部门工作,而一个部门可能有许多员工在其中工作
  • 一个分区只能有一个管理器,但一个管理器可以管理多个分区
  • 一个剖面可以有多个项目,一个项目可以分配给一个或多个剖面
  • 我创建了以下ERD:

    在我的模型中,我将经理和员工包含在一个表中(因为所有人都必须登录仪表板),但这会产生问题,我需要专家指导员工、经理和部门的关系


    是否应该为经理设置单独的表格?

    否,因为经理是用户。有一件事会打乱苹果的购物车,那就是,在一个项目期间,你如何应对管理者的变化?这一设计假设员工变动不具有流动性,我认为这是一个有缺陷的假设。您可能需要考虑一些与截面相关的缓慢变化维度表,该节表示节段头部,允许您在一个时间点获取节头。(现实世界变得一团糟……)祝你好运。

    但它会制造问题什么问题?在这一点上,我建议的改变是:1。添加自引用层次结构表以对组织层次结构建模。这是一个只包含列
    u\u id
    parent\u id
    的表,它引用自身来建模组织层次结构。另外,我不喜欢用特殊标识符预处理表中的每一列。这没有意义。如果每个用户只能在一个节中,那么用户表中应该有一个节id。如果部分到项目是多对多,那么您需要中间的一个桥接表。所以你需要两个新的表格,就我所知,谁说经理不是用户?