sql - 两个连接表之间的关系

标签 sql sql-server database sql-server-2012

我有以下表格:DepartmentSectionEmployeeManagerPosition 。表之间的关系如下:

  • 每个部门包含许多部分
  • 每个部门包含多个职位,每个职位可能与不同部门共享
  • 每个部门都有一名经理
  • 每个经理可能有不同的职位,例如,泌尿科主任是经理的职位,而作为员工,他是泌尿科顾问。作为一名员工,他有两个职位。

enter image description here

从上图中可以看出

  • DepartmentSections 是部门和部门之间的联接表
  • DepartmentPositions 是部门和职位之间的联接表

我现在的问题是,我应该如何配置管理器?我正在考虑建立两个关系,第一个是 Manager 和 DepartmentSections 之间的关系,以及 Manager 和 DepartmentPositions 之间的关系,这里的问题是我将得到两个 DepartmentId Manager 表中的 code> 字段。

我的分析有错误吗?如何构建此模型以避免 Managers 表中出现 2 个 DepartmentId?

最佳答案

对你的帖子的一些想法。这不是一个答案(太长,无法评论),但可能会有所帮助。

Each Department contains many sections

据此我猜您不需要查找表DepartmentSections,因为这句话描述了一对多而不是多对多关系。您可以在 Sections 表中添加 DepartmentId

Each department section has a manager

因此,您可以将 ManagerId 添加到 Sections 表中。

现在对于职位和经理,如果我理解正确,我会将 ManagerId 添加到 DepartmentPositions

关于sql - 两个连接表之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39800960/

相关文章:

sql - 如何在Mysql4.x中实现 "contains"函数?

java - 如何在 java 中映射 TYPE TABLE OF VARCHAR2(5)?

sql - 如何获取与另一列中的项目匹配的一列中的项目计数?

c# - mysql语法错误

sql-server - 将垂直布局转换为水平布局sql

mysql - SQL - 使用 WHERE IN 子句选择多个列

c# - 无法通过 C# 中的存储过程在可空列中插入空值

database - 在Redis中存储用户 View

ruby-on-rails - 移动 Heroku 共享数据库

database - 遗留数据库、Fluent NHibernate 和测试我的映射