8.5完整性约束
完整性介绍
- 数据库的完整性是指数据库正确性和相容性,
- 是防止合法用户使用数据库时向数据库加入不符合语义的数据
8.5.1主键约束
一、完整性约束条件
1、静态
- 列级约束:对列的取值域说明,包括数据类型、格式的约束、取值范围、空值的约束
- 元组约束:规定元组各列之间的约束关系
- 关系约束:实体、参照完整性约束、函数依赖约束、统计约束
2、动态
- 列级约束:修改列定义是的约束、修改列值时的约束
- 元组约束:修改元组值是元组中各个字段间需要满足的某种约束条件
- 关系约束:加在关系变化前后状态上的限制条件
二、完整性控制:应具有定义功能、检测功能、处理功能
三、实体完整性:关系中只能一个主键,主键可以有多个属性:primary key (sno)\primary key (sno cno)
8.5.2外键约束
参照性完整性定义格式:foreign key (属性) references 表名(属性名)
【on delete cascade | set null】
foreign key:定义哪些列为外码
references: 指明外码对应哪个表的主码
on delete cascade: 指明删除被参照关系的元组是,同时删除参照关系的元组
set null :表示置为空值方式
8.5.3属性值上的约束
属性值的约束可以通过not null、unique、check进行
null 值是所有域的成员,也是属性默认的合法值
not null:属性不允许为空
unique:唯一标识数据库表中的每条记录
check:保证属性值满足条件
8.5.4全局约束
- 指一些比较复杂的完整性约束,涉及多个属性间的联系或多个不同关系间的联系
- 基于元组的检查子句:check (age>=16 and age<=20)
- 基于断言的语法格式:create assertion 断言名 check (条件)