gpt4 book ai didi

php - 公司 vs 员工 ID 困境

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:34 29 4
gpt4 key购买 nike

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

公司:

  • ID(自增)
  • 姓名
  • 地址
  • ...

员工:

  • ID(自增)
  • 公司编号
  • internal_id
  • 姓名
  • 姓氏

问题是我想要一个与他们所属的公司相关的员工 ID (internal_id)。我陷入了困境,因为我一直在寻找最干净的实现方式。

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

有什么想法或建议吗?

PD:我之所以要这样做,是因为我不希望 X 公司的用户创建 ID=2000 的员工,而他公司创建的最后一名员工是,比如说, 1532. 这通常会发生在 Y 公司和 Z 公司也在同一系统上创建员工的系统中。我希望此 ID 不用作外键,而是供内部(甚至文档或报告)使用。

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

最佳答案

不,不要那样做!这将在您的数据库中产生许多问题(您必须担心并发问题等)来解决一些不是问题但实际上设计正确的问题。 id 应该是无意义的,间隙也不重要。您可能需要一个关于 employeeid/companyid 组合的唯一索引,以确保没有员工被分配到多个公司。

您的员工 ID 应该永远不需要更改。如果你制作了某种愚蠢的基于公司的 ID,而 A 公司收购了 B 公司并成为 C 公司,你最终不得不更改所有 ID 和所有相关表。在您当前的设计中,您只需要更新公司代码,而不需要更新相关表。

关于php - 公司 vs 员工 ID 困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761378/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com