我有jobs
表,其中包含projectmanagerid
和projectdirectorid
,例如
jobs
----------------
pk jobid
pk projectmanagerid
pk projectdirectorid
这两个id列都需要使用employeeid
pk作为链接链接到employees表。这是一种好的做法还是有更好的方法?
employees
------------------
pk employeeid
other stuff
答案 0 :(得分:4)
只要您只拥有这两种类型:Manager和Director,这似乎没问题。但考虑一下将来是否需要添加其他员工类型,例如Coordinator。如果这是可能的话,那么你应该通过使用中间联结表解决jobs
和employees
之间的多对多关系,也许还要添加第三个表来描述员工的角色在工作中(经理,主任,......)。
答案 1 :(得分:0)
它没有任何问题,这是完全可以接受的。字段名称是描述性的,因此表示您确实需要有两个不同的FK指向users表。如果它是x
和y
,那么它看起来很奇怪。
答案 2 :(得分:0)
在同一张桌子上有两个关系似乎很合理 - 在很多层面上很常见。与所有外键一样,但在这种情况下可能更是如此,请谨慎使用级联。我猜测删除经理或导演不应该导致删除工作记录。
答案 3 :(得分:0)
有一条经验法则规定表格模拟实体/类或实体/类之间的关系,但不是两者。因此,考虑创建两个关系表来分别为两个关系,项目经理和项目主管建模。我不推荐Joe Stefanelli的employee_role_id
方法。我想你会发现每个角色的属性(是的,关系确实也有属性)将太过不同,以使通用表方法增加价值。