【发布时间】:2019-03-14 09:10:56
【问题描述】:
我正在处理以下问题。
公司有很多员工,一旦他们的合同进入系统,他们都会收到一个唯一的员工编号。有时合同会延迟,员工在获得员工编号之前就开始工作。
公司部门需要一个包含更多员工详细信息的数据库。他们一开始就需要这样做。所以我有一个完美的主键,因为它是公司范围内的唯一整数,但有时它还不存在。这里的最佳做法是什么?
用一个临时编号将它们存储在同一个地方是不可能的,PK应该是不可变的。
就我个人而言,我正在考虑将员工数据存储在具有自动递增 PK 的单独表中,并在该表不为空时将其与其余表一起查询。一旦员工收到它的号码,它将从此表中删除并添加到主表中。对我来说,这似乎比为每个员工添加另一个唯一标识符更好的选择,因为每隔一段时间就会出现一个异常值。
想法或建议?
【问题讨论】:
-
我认为为每个人设置一个自动增量编号并没有什么坏处,而且它比单独的表格更容易。
-
使用代理 PK....
-
我认为您需要修复您的业务流程,以解决部门一开始就需要员工 ID 的问题。入职流程应该在开始日期之前开始,并且分配员工 ID 应该是该流程的一部分。当需要修复这个过程时,我不会跳过数据库中的障碍。
-
PK 不应该是员工编号。在我看来,内部 id 应该没有超出数据库范围的意义。
-
@GordonLinoff 这也是我的首选解决方案。可悲的是,这是我必须处理的情况,我无法改变它。
标签: mysql sql database database-design primary-key