Database design 重新启动主键以识别员工
我们公司决定在员工编号前加一个“X”来指定承包商。但他们并不是在所有系统中都这样做Database design 重新启动主键以识别员工,database-design,Database Design,我们公司决定在员工编号前加一个“X”来指定承包商。但他们并不是在所有系统中都这样做 这是一件危险的事情吗?为什么?我认为这完全取决于你如何实施它。我宁愿给他们正确的数字,然后创建一个新表,用数字作为外键,并用一行说明他是否是承包商。如果不了解他们的系统,我会说这是一个糟糕的设计 如果他们想查找一名员工,但他们只有员工编号,但不知道该员工是否是承包商,那么他们必须检查是否有X 数据库可能允许承包商和非承包商使用相同的员工编号,因为唯一的约束将允许它 加入替换(员工,'X','')将起作用,但效率
这是一件危险的事情吗?为什么?我认为这完全取决于你如何实施它。我宁愿给他们正确的数字,然后创建一个新表,用数字作为外键,并用一行说明他是否是承包商。如果不了解他们的系统,我会说这是一个糟糕的设计
- 如果他们想查找一名员工,但他们只有员工编号,但不知道该员工是否是承包商,那么他们必须检查是否有X
- 数据库可能允许承包商和非承包商使用相同的员工编号,因为唯一的约束将允许它
- 加入替换(员工,'X','')将起作用,但效率低下
可能会发生的每一件坏事,但我可以说这很可能会产生问题”。在这种情况下,这种糟糕的做法是试图在一个值上赋予多个含义
其他人提到了您可能会遇到的一些问题。我还知道其他几个:
在国际海事组织,一个更好的解决方案是添加一个列,指明员工或承包商在公司中的角色 非常糟糕的想法。首先,出于性能原因,如果可能的话,PKs不应该是除数字以外的任何东西。第二,因为现在是字符串数据排序,所以将使用字符串排序和数字排序。这真的会让人恼火,因为121将跟随12而不是13 这项计划的另一个困难是,承包商有时成为雇员。您不想因为他的id号已更改而必须更改所有相关表 如果有人想用X来显示编号,那么如果有人是或不是承包商,则使用位字段在数据库中进行标记,使用自动编号字段获取员工编号,并在查询中使用案例语句将显示屏上的122更改为X122(如果该人是承包商)
进一步的绩效将受到影响,因为您无法使用自动生成的编号获取员工编号,这几乎是一个错误,因为现在您必须担心竞争条件。以这种方式识别承包商的目的是什么?如果贵公司的工资单和人力资源系统没有更好的方式记录这些信息,那么我认为这些系统存在缺陷,应该予以修复或更换。最好添加一个新的表格,列出具有日期范围的顾问/联系人。如果表格无法修改,您可以添加一个额外的承包商查找表格(仍然不是理想的设计)只包含员工编号。