组织DB关系的更好方法是什么?

时间:2017-03-21 12:26:40

标签: mysql performance relationship referential-integrity

假设我有桌子:

  1. company (id, name)
  2. user (id, username)
  3. employee (id, user_id, company_id, position) -- position is an integer enum
  4. department (id, title, company_id)
  5. 我还需要存储关系userdepartment

    的管理员

    一个department可能有多个managersuser可能manager departments

    所以我有两种方法可以做到这一点:

    1. 使manager表格如下所示:manager (employee_id, department_id)
    2. manager(user_id, department_id)
    3. 在第一种情况下,我保证完整性(只有员工可能是经理),但为了从users到达department字段,我将不得不进行三次加入department - &gt ; manager - > employee - > user。 在第二种情况下,我少了一个连接,但我必须手动确保完整性(删除经理,当员工被删除等等。)

      我可以想到另一种方法,它是employeemanager表上的复合键,但由于我使用的是Doctrine 2,因此不建议使用它。

      那你觉得怎么会更好?或者首先可能出现问题?另外我应该在哪里查找下一次能够自己解决它?我该如何测试?

0 个答案:

没有答案