2011-09-06 73 views
2

我有一个jobs表一中projectmanageridprojectdirectorid加入2分主键列1分外键列在同一个表

jobs 
---------------- 
pk jobid 
pk projectmanagerid 
pk projectdirectorid 

这两个ID列需要使用employeeid链接到一个雇员表pk作为链接。这是好的做法还是有更好的方法?

employees 
------------------ 
pk employeeid 
    other stuff 

回答

4

这似乎很好,只要你只有两种类型:经理和主任。但请考虑将来是否需要添加其他员工类型,例如协调员。如果这是一种可能性,那么您在jobsemployees之间有多对多的关系,您应该使用中间联结表来解决问题,也许还需要添加第三个表来描述员工在工作中的角色(经理,总监, ...)。

enter image description here

0

它没有错,它是完全可以接受的。字段名称是描述性的,因此表示您确实需要有两个不同的FK指向用户表。如果它是xy,那么它看起来很奇怪。

0

似乎很合理 - 并且在很多姐妹中很常见 - 与同一张桌子有两种关系。与所有外键一样,但在这种情况下可能更加如此,请谨慎使用级联。我猜想,删除经理或董事不应导致删除工作记录。

0

有是状态的表款实体/类或实体/班,但不是两者之间的关系经验法则。因此,考虑创建两个关系表来对两个关系,项目经理和项目负责人分别进行建模。我不推荐Joe Stefanelli的employee_role_id方法。我认为你会发现每个角色的属性(是的,关系的确具有属性)将会使通用表的方法增加价值太大了。