单列的主键数据类型 Table
Primary Key Datatype for Single Column Table
我正在研究一个数据库模型,并且有一些 tables(我们称它们为 T-table),它们的记录数量总是非常有限(< 100)。而这些 T-table 将只有一列 varchar(100)。而且这些T-table不会经常变化,大概千载难逢。
此类表格的示例:
- 公司部门名称
现在,我很困惑:
具有 单列(例如部门(varchar 和主键 ))类型 varchar table 和 相同的 table 有两列 ID(int 和主键 ) 和 department(varchar).
谁能解释一下在我的场景中哪一个更有意义?
非常感谢。
大多数开发人员将这些 table 称为查找 table。
想想部门名称是否允许更改。我不是在谈论他们改变的可能性有多大,而是说它是否会发生。事实上,如果这种情况很少发生,考虑这一点就更重要了。
如果您使用以 varchar 作为主键的单列 table,并且部门名称发生变化,您将如何更新引用它的其他 table 中的行?您只需要更新 Departments
table 中的一行,但您可能需要更新 Employees
table 或 Budgets
中引用该部门的数百行] table,或 Reports
table 中的数千行,或 Sales
table.
中的数百万行
如果您使用带有关联 varchar 的整数主键作为部门名称,则无需更改引用该部门的所有其他行。他们可以继续通过整数引用它,即使名称发生变化。
PK总是用sequence或者serial number,关键是没意义,既然没意义就没必要改(毕竟把一个没意义的东西改成另一个没意义的东西有什么意义? ), 那么我们就可以达到稳定。
我正在研究一个数据库模型,并且有一些 tables(我们称它们为 T-table),它们的记录数量总是非常有限(< 100)。而这些 T-table 将只有一列 varchar(100)。而且这些T-table不会经常变化,大概千载难逢。 此类表格的示例:
- 公司部门名称
现在,我很困惑: 具有 单列(例如部门(varchar 和主键 ))类型 varchar table 和 相同的 table 有两列 ID(int 和主键 ) 和 department(varchar).
谁能解释一下在我的场景中哪一个更有意义?
非常感谢。
大多数开发人员将这些 table 称为查找 table。
想想部门名称是否允许更改。我不是在谈论他们改变的可能性有多大,而是说它是否会发生。事实上,如果这种情况很少发生,考虑这一点就更重要了。
如果您使用以 varchar 作为主键的单列 table,并且部门名称发生变化,您将如何更新引用它的其他 table 中的行?您只需要更新 Departments
table 中的一行,但您可能需要更新 Employees
table 或 Budgets
中引用该部门的数百行] table,或 Reports
table 中的数千行,或 Sales
table.
如果您使用带有关联 varchar 的整数主键作为部门名称,则无需更改引用该部门的所有其他行。他们可以继续通过整数引用它,即使名称发生变化。
PK总是用sequence或者serial number,关键是没意义,既然没意义就没必要改(毕竟把一个没意义的东西改成另一个没意义的东西有什么意义? ), 那么我们就可以达到稳定。