Employee,Departments和ManagerID表结构

时间:2015-11-21 14:56:28

标签: sql-server database database-design sql-server-2008-r2 constraints

在MS SQL中,我有员工和部门表。我需要重新构建表格,以便我分配部门经理。

以下是现有表格:

Employee 
---------
emp_id
emp_name 
emp_email
Dept_id


Departments 
-----------
Dept_id
Dept_name

我的规则如下:

  • 部门经理是已经在emp中的现有员工 表
  • 员工只能分配到一个部门。
  • 部门可能没有经理。

我需要添加哪些新字段和约束?

据我所知,知道经理是雇员。 我可以使用什么SQL查询来列出所有部门的部门名称,经理姓名,经理人员 - 分机号码,经理 - 电子邮件?

由于

1 个答案:

答案 0 :(得分:0)

您可以添加第三个表格:

DepartmentManagers 
-----------
Dept_id
emp_id

当然,如果你想要那些数据(扩展名等),你还必须将你提到的那些其他字段添加到Employee表中,如果你不需要它,你还需要添加到DepartmentManagers表中。经理。部门名称在逻辑上属于当时你可以用(pseudoSQL):

之类的东西查询它
SELECT E.emp_name, E.email, E.extension, E.email, D.Dept_name FROM EMPLOYEE E, DEPARTMENTS D, DEPARTMENTMANAGERS M WHERE E.emp_id = M.emp_id AND D.Dept_id = M.Dept_id

另一种选择是将“IsManager”字段添加到Employee表中;在这种情况下,你不需要第三个表。

然后查询会更像(pseudoSQL,特别是因为可能没有boolen类型;您可能必须使用1而不是TRUE):

SELECT E.emp_name, E.email, E.extension, E.email, D.Dept_name FROM EMPLOYEE E, Departments D WHERE E.Dept_id = D.Dept_id AND E.IsManager = TRUE