公司与员工ID困境

Gui*_*rmo 2 php mysql database database-design

我的SQL数据库中有两个表:

公司:

  • ID(自动增量)
  • 名称
  • 地址
  • ...

雇员:

  • ID(自动增量)
  • COMPANY_ID
  • INTERNAL_ID
  • 名称

问题是我希望有一个与他们所属公司相关的员工ID(internal_id).我得到了这个困境,因为我一直在寻找实现它的最干净的方法.

一种选择是只做一个SELECT MAX(internal_id)FROM员工WHERE company_id = X,但问题是如果我碰巧删除了最后一个员工,下一个员工将使用下一个员工的ID创建.

任何想法或建议?

PD:我想要这样做的原因是我不希望公司X的用户创建一个例如ID = 2000的员工,而在他的公司创建的最后一个员工是1532.这通常会发生在Y和Z公司的系统中,也在同一系统上创建员工.我希望这个ID不能用作foreign_key,而是用于内部(甚至文档或报告)使用.

PD2:在这种情况下,员工永远不必改变公司

HLG*_*GEM 12

不,不要那样做!这将在您的数据库中创建许多问题(您必须担心其他事情中的并发问题)来解决不是问题并且事实上正确设计的问题.id应该没有意义,差距也不重要.您需要employeeid/companyid组合上的唯一索引,以确保没有员工分配给多个公司.

您的员工ID应该是永远不需要更改的东西.如果您制作某种基于公司的愚蠢ID并且公司A购买公司B并成为公司C,则最终必须更改所有ID和所有相关表.在您当前的设计中,您只需更新公司代码,但不需要更新相关表.

  • 不幸的是,"愚蠢"的基于公司的ID有时是有效的业务要求 (3认同)