答案 0 :(得分:2)
主键和唯一键之间的技术差异是主键中的所有列都是必需的,而我们可以在唯一键中使用空值。
就使用而言,主键不应更改,而唯一键可以更改。在物理实现中,这意味着表的主键通常是合成的(使用序列或类似机制生成),并且其业务键(例如客户名称)使用唯一约束强制执行。
外键约束应该引用主键而不是唯一键。
一个表只能有一个主键,但只能有任意数量的唯一键。我们只能在列的任何给定排列上有一个索引。因此,如果我们在T23(COL_1)上有一个主键,我们也无法在T23(COL_1)上构建一个唯一键,为什么我们想要?但是,我们可以在T23(COL_1,COL_2)上构建一个唯一键。
关于索引,我们可以在表列上创建唯一索引,然后在添加唯一或主键约束时使用该索引。 (事实上,我们可以使用普通索引来强制执行主键约束,前提是实际值没有任何重复。)