【问题标题】:Primary Key Datatype for Single Column Table单列表的主键数据类型
【发布时间】:2020-09-02 10:36:01
【问题描述】:

我正在研究一个数据库模型,并且有一些表(我们称它们为 T 表),它们的记录数总是非常有限(

  • 公司部门名称

现在,我很困惑: 一个单列(例如部门(varchar 和主键))类型 varchar 表具有两列 ID(int 和主键)的同一表) 和部门(varchar)

谁能解释一下在我的场景中哪一个更有意义?

非常感谢。

【问题讨论】:

    标签: mysql sql database data-modeling datamodel


    【解决方案1】:

    大多数开发人员将这些表称为查找表。

    考虑是否允许更改部门名称。我不是在谈论他们改变的可能性有多大,而是说它是否可能发生。事实上,如果这种情况很少发生,考虑这一点更为重要。

    如果您使用以 varchar 作为主键的单列表,并且部门名称发生更改,您将如何更新引用它的其他表中的行?您只需要更新Departments 表中的一行,但您可能需要更新Employees 表或Budgets 表中引用该部门的数百行,或Reports 表中的数千行,或 Sales 表中的数百万行。

    如果您使用带有关联 varchar 的整数主键作为部门名称,则无需更改引用该部门的所有其他行。即使名称发生变化,他们也可以继续通过整数引用它。

    【讨论】:

      【解决方案2】:

      PK总是用序列号或序号,关键是它们没有意义,既然它们没有意义,就没有必要改变它(毕竟把一个无意义的东西换成另一个无意义的东西有什么意义呢?),那么我们就可以实现稳定了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-05
        • 2012-03-31
        • 1970-01-01
        • 1970-01-01
        • 2020-03-17
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多