当名称已经是单义时,是否有必要为Country表使用整数ID?

时间:2015-06-07 17:25:13

标签: mysql database primary-key

由于国家名称是单义的,因此将其用作主键是一个不错的选择吗?

dnorm(data.frame(z), p[1, ][1:2], data.frame(R_noise))

我在网上找到的示例使用整数ID作为主键。有必要吗?

2 个答案:

答案 0 :(得分:2)

虽然很常见,但没有必要使用整数ID。 将国家/地区名称作为密钥将生成一个大密钥,其中包含(有时)空格或特殊字符。这意味着使用它们的速度较慢,如果您在HTML / JavaScript应用程序中使用它们,则可能需要将它们转义。

此外,您可能希望将这些本地化一次,或者更改国家/地区名称是否应使用自己的语言,或者使用英文名称或拉丁文脚本中的注音符号的决定。或者名称本身可能会更改(尽管这可能不会对国家造成太大影响),或者您可能有一个想要纠正的拼写错误,最好不必更新所有引用国家的表格。

所以拥有代理钥匙根本不是一个坏主意。如果你真的想拥有国家的文本密钥,我会选择一个国家的ISO代码而不是全名。

相关问题:When not to use surrogate keys

答案 1 :(得分:0)

没错!但是,我们使用带有整数的columnn或每个国家/地区与每个国家/地区记录相关的iso。这在很多方面有所帮助,但这取决于你想要创造什么。我建议使用另一列作为id,它也是主键。通过这种方式,您可以更准确地查询查询,并且不会浪费时间调试或尝试查找错误,这很容易成为排版错误。 所以,这取决于你,你是创造者!