员工、部门和经理 ID Table 结构

Employee, Departments, and ManagerID Table Structures

在 MS SQL 中,我有员工和部门 table。我需要改造 table 以允许我分配部门经理。

以下是现有的table:

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


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

我的规则如下:

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

知道经理就是我所说的员工。 我可以使用什么 SQL 查询来列出分配有经理的所有部门的部门名称、经理姓名、经理分机、经理电子邮件?

谢谢

您可以添加第三个 table:

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

当然,您还必须将您提到的其他字段添加到员工 table(如果您需要该数据(分机等))或添加到 DepartmentManagers table如果您不需要非经理。部门名称在逻辑上属于然后你可以用类似的东西查询它 (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

另一种选择是向员工 table 添加一个 "IsManager" 字段;在那种情况下,您不需要第三个 table.

那么查询会更像(伪SQL,特别是因为可能没有 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