我正在建立一个数据库来管理项目分配,而给我带来特别麻烦的一个部分是为员工分配他们正在从事的每个项目的职位。
要求
- 一个员工可以同时参与多个项目
- 一个项目有多个员工
- 一个项目有多个职位
- 员工在项目的一个职位下工作
- 多个员工可以在一个项目中以相同的职位工作
我不确定如何使用表格来表示它;我想出的每个布局要么使员工能够以不同项目的职位从事项目工作,要么他们能够以两个不同的职位从事同一个项目。
示例图
基本上,我有三个表:
表
- 项目
- 项目名称(唯一)
- 项目编号
- 雇员
- 员工姓名(唯一)
- 员工ID
- 职称
- 标题
- 项目 ID(Title-ProjectID 唯一)
- 标题 ID
然后是一个交叉引用表,称为分配。到目前为止,我为作业提出的两种方法如下:
示例 1
- 作业
- 员工ID
- 项目 ID(EmployeeID-ProjectID 唯一)
- 标题 ID(唯一)
- 作业 ID
这种方式将员工限制为每个项目一个头衔,但允许他们在分配中使用不属于该项目的头衔。
示例 2
- 作业
- 员工ID
- 职务 ID(EmployeeID-TitleID 唯一)
- 作业 ID
这种方式通过职称将员工分配到项目中,因此不可能将某人分配到具有无效职称的项目中。但是,这允许将员工分配到多个头衔下的同一项目。
同样,图表可在此处获得:http: //i.imgur.com/IbR0P.png
我知道必须有一种方法可以干净地做到这一点,但我没有接受过任何真正的数据库设计方面的正式培训,除了如何建立多对多关系之外,我无法通过搜索找到任何东西,这不是这正是我需要帮助的地方。
谢谢!
- 编辑 1
- 粗体主键字段(在图表图像中加下划线,但很难分辨,因为它们是最后一个字段)
- 在问题中的分配表中添加了 AssignmentID(主键)(存在于设计中,在创建问题和图表时忘记包含)
- 编辑 2
- 添加了缺失的要求 (5)
- 添加了示例和要求的标题
- 编辑 3
- 我现在有10个代表,所以我可以放图表!
- 编辑 4
- 添加了唯一键的标识符(图中标识的各个唯一键,但我不知道如何在 DIA 中执行复合键)