首页 > 解决方案 > 如何在 SQL 表中正确使用 FK

问题描述

Department

DeptId
Name

桌子Team

TeamId
*DeptId (FK)
Name

桌子Employee

EmpId
*DeptId
*TeamId

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

我觉得这没什么用,因为我可以从Team表中获取部门,并且不需要将两个 FK ID 都放入Employee表中,TeamId就足够了。

还有其他原因可以迫使我将两个 FK 都放在那张桌子上吗?

谢谢你。

标签: sqlsql-server

解决方案


在编写数据模型时,员工可能是不属于他或她部门的团队的成员。

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

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

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


推荐阅读