员工和部门与组数据库模式建议


Employees and departments with groups database schema advice

我得到的是

表:

employee {id, name, phone, dep_link[fk]} 
department {id, name}
groups {id, name}
employees_groups {id, emp_id_link[fk] ,group_id_link[fk]}
departments_groups {id, dep_id_link[fk], group_id_link[fk]}

逻辑:

  1. 每个员工可以在一个部门,一个部门可以有多个员工。(一对多是选择,就像我对{dep_link[fk]}所做的那样)
  2. 每个员工可以属于多个组,一个组可以有多个员工。
  3. 一个部门可以隶属多个组,一个组可以隶属多个部门。

我对表和关系的处理是正确的吗?我有两个部门(信息技术部、档案部),它们是集团的一部分(全部)。将关系添加到departments_groups表后,如何检索这些部门的员工?

例如,我有两个部门(IT,档案),他们是一部分在departments_groups中添加关系后,group (All)表如何检索这些部门的员工?

SELECT * FROM employee WHERE employee.dep_link 
IN (SELECT dep_id_link FROM departments_group INNER JOIN groups 
    ON groups.id = group_id_link AND groups.name = 'All')

我想这就是你想要的:

select e.id
      ,e.name
      ,e.phone
from employee e
    ,group g
    ,employee_groups eg
where e.id = eg.emp_id_link
  and g.id = eg.group_id_link
  and g.name = "all"

希望有帮助。:)