我知道唯一键和主键有什么区别,如以下链接所述
http://sqlhints.com/2013/06/02/difference-between-primary-key-and-unique-key-in-sql-server/
difference between primary key and unique key
但是在采访中有人问我一些不同的事情,
如果我在表中有2列可以唯一标识
条目,说学生卷号和身份证号。那哪一个
我将选择为主键,主键之间有什么区别
和唯一键(如果我们在唯一键上添加非null约束)。
有什么帮助吗?
提前致谢。
最佳答案
我是第三种方法的拥护者-具有自动递增的整数主键。然后可以将唯一索引放在其他索引上。
这样的密钥提供了几件事。首先,它使您可以确定记录的插入顺序-至少近似。其次,它使外键引用更容易。我通常将此类列命名为<tablename>Id
,这使外部引用变得显而易见。
第三,整数是一种非常有效的索引机制(固定宽度值,通常为四个字节)。诚然,它们确实会在原始表中产生一些开销,但这通常很小。
第四,这些列可能不适用。在美国,离国家身份证号最近的是社会保险号-不能保证它是唯一的。此外,可能有一些入学人数没有这个数字的学生,例如外国学生。