如何强制数据库自连接(或者有更好的方法)
-
06-07-2019 - |
题
我的数据库中有一个员工表,我想将员工链接到他们的经理:
员工 桌子
- 员工ID
- 名
- 姓
- 经理 ID
如果 manager_id 只是同一个表中的另一行,经理将其作为其员工,那么强制执行的最佳方法是什么,如果我删除员工,它会验证该员工不是另一个员工的经理?
对此有更好的最佳实践吗?
解决方案
您可以使用 自加入 就像您使用连接到其他表一样 PK & 氟肯.
我认为你应该考虑一些事情来设计这个。例子:
- 不同的管理者: 汤姆是个小学生。今天是 Pgmr,而 Jerry 今天是他的经理。明天汤姆可能会向塞巴斯蒂安汇报。
- 促销活动: 汤姆是个小学生。今天是 Pgmr,而 Jerry 今天是他的经理。明天汤姆可能会成为一名经理,并让其他人向他汇报。
- 促销2: Tom 可能会从初级项目经理、高级项目经理、团队负责人、项目负责人到经理。你想保存这个吗?
- 报告: 您可能想在某个时间点显示层次结构(有些用户迟早会要求提供报告)
您可能需要考虑将数据拆分为单独的实体 - 按如下方式标准化数据(甚至根据您的需要进行更多标准化)
- 员工表: 员工基本信息
- 位置查找表: 组织中所有职位的列表
- 员工职位表: 跟踪员工发生职位变动的开始日期和结束日期。
- 员工职位层次表: 哪些员工职位向另一个员工职位报告(使用双连接而不是自连接);带有开始和结束时间戳
不隶属于 StackOverflow