如何在SQL表中正确使用FK

时间:2018-12-22 17:41:03

标签: sql sql-server

Department

DeptId
Name

Team

TeamId
*DeptId (FK)
Name

Employee

EmpId
*DeptId
*TeamId

我正在对一个旧项目进行一些更新,但是我不知道为什么老程序员设计这样的表(例如将DeptIdTeamId都放在Employee中表格)。

我发现这没用,因为我可以从Team表中获得部门,并且无需将两个FK ID都放入Employee表中,TeamId就足够了。

还有其他原因会迫使我将两个FK放在该表中吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

在编写数据模型时,员工可能是不在其部门中的团队的成员。

例如,如果员工暂时借贷,这可能是可能的。

我对数据模型更大的问题是员工与团队之间以及员工与部门之间的关系会随着时间而变化。因此,我将为每个实体提供三个表。表中的唯一关系是在teamdepartment之间(因为假定时间不会改变)。

然后我将有两个联结表,一个employeeDepartments和一个employeeTeams,它们捕获随时间变化的关系。