如果我们有2个唯一列,我们应该选择哪个列作为主键

时间:2015-03-22 18:58:18

标签: mysql database primary-key unique-key rdms

我知道唯一密钥和主密钥之间的区别,如以下链接所述

http://sqlhints.com/2013/06/02/difference-between-primary-key-and-unique-key-in-sql-server/ difference between primary key and unique key

但在接受采访时我被问到了一些不同的东西,

  

如果表中有2列可以唯一标识   条目,说学生的滚动号和国家号码没有。然后是哪一个   我将选择作为主键,以及主要内容之间的区别   如果我们在唯一键上添加非空约束,则使用唯一键。

对此有何帮助?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我是第三种方式的大力倡导者 - 拥有一个自动递增的整数主键。然后,您可以将唯一索引放在其他索引上。

这样的钥匙提供了几件事。首先,它允许您确定记录的插入顺序 - 至少接近近似值。其次,它使外键引用更容易。我通常将这些列命名为<tablename>Id,这使得外部引用显而易见。

第三,整数是一种非常有效的索引机制(固定宽度值,通常是四个字节)。不可否认,它们确实会在原始表中产生一些开销,但这通常很小。

第四,列可能不适用。在美国,我们最接近国家身份证号码的是社会安全号码 - 并不保证是唯一的。此外,可能有学生在学校注册没有这些数字的学生 - 例如,外国学生。