【问题标题】:Should a reference table include numeric PK identity column value of 0?参考表是否应包含数字 PK 标识列值 0?
【发布时间】:2011-09-15 12:42:01
【问题描述】:

我们有一个包含有效货币代码的表。例如,我们选择使用数值作为主键,而不是 3 字符 ISO 货币代码。

普遍的共识是,此CurrencyId 列应包含以零开头的值。由于美元是我们的主要货币,因此它以0的价值占据了第一位。

我的想法是,标识列不应从​​零开始,唯一的原因是某些语言将数字初始化为零,因此货币代码可能无意中设置为 USD,而实际上从未分配过。

我都湿了吗?我更愿意将 1 的 CurrencyId 分配给 USD

【问题讨论】:

  • 无论您决定什么 - 只需确保在某处清楚地记录这一点,并就您选择的解决方案征得所有开发人员和 DBA 的同意!另外:如果您确实使用 0 作为“真实”值,您仍然可以始终选择例如-1 作为“未知”或“未定义”的占位符值,并将引用此表的列设置为使用该值作为默认值。

标签: sql-server database-design


【解决方案1】:

实际的 ID 应该无关紧要。让它从 0(或 1)开始是完全任意的,因为该数字对用户没有任何意义——它仅被系统用作参考。无论是从 0、1 还是 4,536,901 开始,都不是关键的设计决策。

我认为您提出的问题是 100% 有效的;从 0 开始可能会导致副作用,其中一些可能最终成为微妙且难以追踪的错误。避免这种远胜过任何人反对从零开始编号的随意/审美愿望。

【讨论】:

  • +1,短版:从 1 开始,你不是在 C 中做数组
猜你喜欢
  • 1970-01-01
  • 2018-11-09
  • 2017-05-11
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多