我正在建立一个数据库来管理项目任务,而那个让我特别麻烦的部分就是为员工分配他们正在处理的每个项目的职位。
我不确定如何使用表来表示这个;我想出的每一个布局都可以使一个员工在一个不同项目的职位下工作,或者他们能够在两个不同的职位下工作同一个项目。
基本上,我有三张桌子:
然后是一个名为Assignments的交叉引用表。到目前为止我为分配提出的两种方式如下:
这种方式将员工限制为每个项目一个标题,但允许他们在作业中使用不属于项目的标题。
这种方式通过标题将员工分配到项目中,因此无法将某人分配给具有无效标题的项目。但是,这允许将员工分配到多个标题下的同一项目。
同样,图表可在此处获取:http://i.imgur.com/IbR0P.png
我知道必须有一种方法可以干净利落地完成这项工作,但我没有在数据库设计方面进行任何真正的正式培训,除了如何建立多对多关系外,我无法通过我的搜索找到任何内容,这不完全是我需要帮助的。
谢谢!
答案 0 :(得分:2)
为您Job Titles
表添加ID字段 - 让我们称之为JobTitleID
现在,您的Assignments
表格有Employee ID
和JobTitleID
。
这意味着,为了找到员工的项目,您需要加入Assignments
表和 Job Titles
表
修改强>
在评论中讨论后,请忽略上述内容,我只将其作为历史记录。
现在这里是新版本:您的Assignments
表需要(正如您已经考虑过的)
但它还需要UNIQUE INDEX(EmployeeID, ProjectID)
- 这将使一名员工无法进入不同职位的相同项目。
仍然允许同一职位下的多名员工,以及一名员工的不同项目中的多个职位。
答案 1 :(得分:0)
这是你提到的第一种方式。它不会将一个人限制为一个职位,您可以使用相同的员工ID和项目ID创建另一个具有不同标题ID的记录,只需使用新的分配ID作为主键。
您甚至可能希望从Job Title表中取出Project ID。