数据完整性约束
数据完整性是指存储在数据库中的所有数据值均正确的状态。
- 防止数据库中存在不符合语义规定的数据
- 防止因错误信息的输入输出造成无效操作或错误信息
数据完整性约束分为4类:
- 实体完整性
- 域完整性
- 参照完整性
- 用户定义的完整性
实体完整性
规定表的每一行在表中是唯一的实体
使用主键约束且主键不能为空
- 在满足实体完整性约束的条件下,一个关系中应该有一个或多个候选关键字
域完整性
表中的列必须满足某种特定的数据类型约束
通常指数据的有效性,包括
-
字段的值域
-
字段的类型
-
字段的有效规则
-
……
-
由确定关系结构时所定义的字段的属性决定
-
域完整性可以确保不会输入无效的值
参照完整性
两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散
- 不允许关系引用不存在的元组
- 外键或是实际存在的元组,或是为空
用户定义的完整性
在具体应用所涉及的数据必须满足的语义要求
约束
约束是表级的强制规定
not null
not null是列级约束,只能作用在列上
unique
唯一约束
- 唯一约束允许多个空值
primary key
主键约束
- 一个表只能有一个主键
- 主键非空
foreign key
外键约束
check
检查约束