我在数据库中有一个员工表,我想将员工与他们的经理联系起来:
如果manager_id只是同一个表中经理将其作为员工的另一行,那么强制执行该操作的最佳方法是,如果我删除员工,则会验证该员工不是其他员工的经理? / p>
对此有更好的最佳做法吗?
答案 0 :(得分:2)
您可以使用外键约束(不进行级联删除)。如果您尝试删除仍有其他员工的经理,数据库将自动检测到该操作并且操作将失败。
答案 1 :(得分:2)
您可以使用自我加入,就像您使用 PK &加入其他桌子一样的 FK 强>
我认为你应该设计一些需要考虑的事情。例子:
您可能需要考虑将数据拆分为单独的实体 - 按如下方式对数据进行规范化(或根据您的需要进行规范化)
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您的应用程序(或组织)发展,请使用多对多关联来覆盖您的基础。
Employee.Employee_id <- EmployeeManager.Employee_id
EmployeeManager.Manager_id -> Employee.Employee_id
Manager_role_type
etc.
始终使用外键约束。