主键索引和唯一索引的区别

概念模型、逻辑模型、物理模型

实体(长方形)、属性(圆形)、关系(菱形)、主键(带下划线)

常用的数据模型:层次模型、网状模型、关系模型、面向数据对象模型、对象关系数据模型、半结构化数据模型。

层次模型:

1、有且只有一个节点没有双亲结点,这个节点称为根节点。

2、根以外的其他结点有且只有个双亲节点。

网状模型:

1、允许一个以上的节点没有双亲

2、一个节点可以有多于一个双亲。

关系模型:

一个关系对应通常说的一张表

元组:表中的一行

属性:表中的一列

码:也称码键,表中的某个属性组

域:是一组具有相同数据类型的值的集合。

分量:元组中的一个属性。

主键和唯一索引都要求值唯一,但是它们还是有区别的:

①.主键是一种约束,唯一索引是一种索引;
②.一张表只能有一个主键,但可以创建多个唯一索引;
③.主键创建后一定包含一个唯一索引,唯一索引并一定是主键;
④.主键不能为null,唯一索引可以为null;
⑤.主键可以做为外键,唯一索引不行;

主键是一种约束,目的是对这个表的某一列进行限制;

唯一索引是一种索引,索引是数据库表的一个冗余结构,目的是为了更好的查询;

主键列不允许为空值,而唯一性索引列允许空值;

一个表最多只能一个主键,但是可以包含多个唯一索引;

1.主键索引一定是唯一索引,唯一索引不一定是主键索引,

2.唯一索引可以为空,主键索引不能为空

主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。

主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。

唯一性索引列允许空值,而主键列不允许为空值。

主键列在创建时,已经默认为空值 + 唯一索引了。

主键可以被其他表引用为外键,而唯一索引不能。

一个表最多只能创建一个主键,但可以创建多个唯一索引。

主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。

在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。(Oracle 10g后就开始不支持RBO了)