加入2分主键列1分外键列在同一个表
问题描述:
我有一个jobs
表一中projectmanagerid
和projectdirectorid
如加入2分主键列1分外键列在同一个表
jobs
----------------
pk jobid
pk projectmanagerid
pk projectdirectorid
这两个ID列需要使用employeeid
链接到一个雇员表pk作为链接。这是好的做法还是有更好的方法?
employees
------------------
pk employeeid
other stuff
答
这似乎很好,只要你只有两种类型:经理和主任。但请考虑将来是否需要添加其他员工类型,例如协调员。如果这是一种可能性,那么您在jobs
和employees
之间有多对多的关系,您应该使用中间联结表来解决问题,也许还需要添加第三个表来描述员工在工作中的角色(经理,总监, ...)。
答
它没有错,它是完全可以接受的。字段名称是描述性的,因此表示您确实需要有两个不同的FK指向用户表。如果它是x
和y
,那么它看起来很奇怪。
答
似乎很合理 - 并且在很多姐妹中很常见 - 与同一张桌子有两种关系。与所有外键一样,但在这种情况下可能更加如此,请谨慎使用级联。我猜想,删除经理或董事不应导致删除工作记录。
答
有是状态的表款实体/类或实体/班,但不是两者之间的关系经验法则。因此,考虑创建两个关系表来对两个关系,项目经理和项目负责人分别进行建模。我不推荐Joe Stefanelli的employee_role_id
方法。我认为你会发现每个角色的属性(是的,关系的确具有属性)将会使通用表的方法增加价值太大了。