Oracle Table约束与唯一索引?

时间:2014-05-29 04:02:56

标签: oracle database-design constraints

  1. Oracle的主要和唯一密钥的区别是什么?
  2. 如果我为A列设置了唯一索引,那么我还能设置一个 列A或其他列的约束唯一键或主键?

1 个答案:

答案 0 :(得分:2)

主键和唯一键之间的技术差异是主键中的所有列都是必需的,而我们可以在唯一键中使用空值。

就使用而言,主键不应更改,而唯一键可以更改。在物理实现中,这意味着表的主键通常是合成的(使用序列或类似机制生成),并且其业务键(例如客户名称)使用唯一约束强制执行。

外键约束应该引用主键而不是唯一键。

一个表只能有一个主键,但只能有任意数量的唯一键。我们只能在列的任何给定排列上有一个索引。因此,如果我们在T23(COL_1)上有一个主键,我们也无法在T23(COL_1)上构建一个唯一键,为什么我们想要?但是,我们可以在T23(COL_1,COL_2)上构建一个唯一键。

关于索引,我们可以在表列上创建唯一索引,然后在添加唯一或主键约束时使用该索引。 (事实上​​,我们可以使用普通索引来强制执行主键约束,前提是实际值没有任何重复。)