文档介绍:第4讲实现数据完整性
数据完整性的类型
定义约束
约束的类型
使用默认值和规则
数据完整性的类型
数据完整性的类型
数据完整性
指的是数据库中存储的数据的一致性和准确性
数据完整性的类型:域完整性、实体完整性、引用完整性
域完整性
域(或列)完整性是指对列指定一组有效的值并决定是否可为空值
实体完整性
实体(或表)完整性要求表中的所有行都有一个惟一的标识符,称为主键值
引用完整性
引用完整性确保主键(在被引用表中)和外键(在引用表中)之间的关系得到保持
(包括数据的类型、长度、单位、精度等)
例如:
空值表示未定义或未知的值,与零值和空格不同。
返回
域完整性
实体完整性规则
若属性A是基本关系R的主属性,则属性A不能取空值。
例如:在关系“学生(学号,姓名,性别,出生日期,联系方式)”中,“学号”属性为主码,则学号不能取空值。
返回
引用完整性
例1 学生实体和专业实体可以用下面的关系表示,
其中主码用下划线标识:
学生(学号,姓名,性别,专业号,出生日期)
专业(专业号,专业名)
例2 学生,课程,学生与课程之间的多对多联系可以
用如下三个关系表示:
学生(学号,姓名,性别,专业号,出生日期)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
例3 学生(学号,姓名,性别,专业号,年龄,班长)
引用完整性规则
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码KS相对应,则对于中每个元组在上的值必须为:
或者取空值
或者等于S中某个元组的主码值
第4章实现数据完整性
数据完整性的类型
定义约束
约束的类型
使用默认值和规则
定义约束
决定使用何种约束
创建约束
使用约束的注意事项
定义约束
决定使用何种约束
决定使用何种约束
完整性类型
约束类型
描述
域
DEFAULT
如果在INSERT语句中未显式提供值,则指定为列提供的值
CHECK
指定列中可接受的数据值
REFERENTIAL
基于其他表中的列的值,指定可接受的用于更新的数据值
实体
PRIMARY KEY
惟一标识每一列,确保用户没有输入重复的值。同时创建一个索引以增强性能。不允许空值
UNIQUE
确保在非主键列中不输入重复值,并创建一个索引以增强性能。允许空值
引用
FOREIGN KEY
定义一列或多列的值与同表或其他表中主键的值匹配
CHECK
基于同表中其他列的值,指定列中可接受的数据值
创建约束
使用 CREATE TABLE 或者 ALTER TABLE
CREATE TABLE 是在创建表时创建约束
ALTER TABLE 是在一个已有的表上创建约束
可以添加约束到已有数据的表上
可添加单列或多列约束
若约束应用于单列,称为列级约束
若约束引用了多列,称为表级约束,即使它并没有引用表中的所有列
创建约束
下一页