目录
一.关系的完整性
二.实体完整性
三.参照完整性
四.用户自定义完整性
一.关系的完整性
关系的完整性是指关系中的数据及具有关联关系的数据间必须遵循的制约条件和依存关系,以保证数据的正确性、有效性和相容性。
关系模型中的三类完整性约束:
- 实体完整性(Entity Integrity)
- 参考完整性(Referential Integrity)
- 用户自定义完整性(User-defined Integrity)
实体完整性和参考完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。
二.实体完整性
指主属性值不能取空null,它具有唯一标志性–主码约束性。
实体完整性保证关系中的每个元组都是可识别的和唯一的。
表中不允许存在如下记录:
- 无主键值的记录
- 主键值相同的记录
原因:实体必须可区分。
例如:其中学号为主键。
学号 | 姓名 | 年龄 | 性别 | 专业 |
000001 | 张三 | 18 | 男 | 法学 |
000002 | 李四 | 18 | 男 | 人工智能 |
000001 | 张三 | 18 | 男 | 法学 |
在上表中就出现了主键值重复的情况,当在表中定义了主键时,数据库管理系统会自动保证数据的实体完整性,即保证不允许存在主键值为空的记录以及主键值重复的记录。
三.参照完整性
也称为引用完整性,指外码或者空或者与其对应关联表的主码相等–外码约束性。
- 在关系模型中,实体以及实体之间的联系都是用关系来表示的
- 参照完整性就是描述实体之间的联系的
- 参照完整性一般是指多个实体或者关系之间的关联关系
- 参照完整性规则就是定义外键与被参照的主键之间的引用规则
- 外键一般应符合:或者值为空或者等于其所参照的关系中的某个元组的主键值
- 外码不能是这个关系(参照关系)的主码
以选课为例:
选课表中的学号就称为选课表里的一个外码,它对应的是学生表中的学号。其中,选课关系为参照关系,学生关系为被参照关系。
四.用户自定义完整性
也叫域完整性(Domain Integrity)或者语义完整性,是对数据表中字段属性的约束,它包括字段的值域、类型及有效规则等。
- 是针对某一具体应用领域定义的数据约束条件
- 反映某一具体应用所涉及的数据必须满足应用语义的要求
- 实际上就是指明关系中属性的取值范围,防止属性的值与应用语义矛盾
- 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统方法处理它们,而不要由应用程序承担这一功能