假设我有桌子:
company (id, name)
user (id, username)
employee (id, user_id, company_id, position) -- position is an integer enum
department (id, title, company_id)
我还需要存储关系user
是department
一个department
可能有多个managers
,user
可能manager
departments
所以我有两种方法可以做到这一点:
manager
表格如下所示:manager (employee_id, department_id)
manager(user_id, department_id)
在第一种情况下,我保证完整性(只有员工可能是经理),但为了从users
到达department
字段,我将不得不进行三次加入department
- &gt ; manager
- > employee
- > user
。
在第二种情况下,我少了一个连接,但我必须手动确保完整性(删除经理,当员工被删除等等。)
我可以想到另一种方法,它是employee
和manager
表上的复合键,但由于我使用的是Doctrine 2,因此不建议使用它。
那你觉得怎么会更好?或者首先可能出现问题?另外我应该在哪里查找下一次能够自己解决它?我该如何测试?