【实体完整性定义】
在 SQL 中,关系模型的实体完整性在 CREATE TABLE
语句中用 PRIMARY KEY
短语来定义
对于单属性构成的码,既可以定义为列级约束条件,又可以定义为表级约束条件
例如,将 student 表中的 Sno 属性定义为码
1 | /*列级定义主码*/ |
对于多属性构成的码,只能定义为表级约束条件
例如,将 sc 表中的 Sno、Cno 属性定义为码
1 | CREATE TABLE sc ( |
【实体完整性检查与违约处理】
用 PRIMARY KEY
短语定义了关系的主码后,每当用户程序对基本表插入一条记录或对主码列进行更新时,RDBMS 会按照实体完整性规则进行检查,包括:
- 检查主码值是否唯一:如果不唯一则拒绝插入或修改
- 检查主码的各个属性是否为空:只要有一个为空就拒绝插入或修改
检查记录中主码值是否唯一的一种方法是进行全表扫描,依次判断表中每一条记录的主码值与插入或修改的新主码值是否相同
但全表扫描是极其耗时的,为避免对基本表进行扫描,RDBMS 一般都在主码上自动建立一个索引,通过索引查找基本表中是否已存在新主码值,目前,最常用的索引是 B+ 树索引