2.3关系的完整性约束条件

关系的两个不变性:关系模型必须满足实体完整性和参照完整性这两个完整性约束条件。

2.3.1 实体完整性

若属性A是基本表R的主属性,则属性A不能取空值。即主码的各个属性都不能取空。

2.3.2 参照完整性

(1)关系间的引用

如,不同关系间的引用

学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)

学生关系中引用了专业关系的主码“专业号”,且专业号必须是确实存在的专业号。

又如,同一关系中的自我引用

学生(学号,姓名,班长)

学号 姓名 班长
801 WANG 802
802 LI
803 ZHAO 802

“学号”是主码,“班长”是外码,它引用了本关系的“学号”,且班长必须是确实存在的学号。

(2)外码

若F是一个基本关系R中的一个或一组属性,但不是R的码。且F与另一个基本关系S的主码相对应,则F是R的外码。此时,R称作参照关系,S称为被参照关系

相对应”指的是语义上相同,如,上述第二个例中 班长 和 学号 语义上都是学号。此时,参照关系和被参照关系为同一个关系。

又如上述第一个例中:

在这里插入图片描述

小结:“R,S可相同”,“外码与对应主码要同域但可不同名”

(3)参照完整性规则

即要么取空值,要么取被参照关系S中主码值。

如,选修(学号,课程号,成绩)中课程号是选修关系的外码,课程关系的主码,但与此同时,学号与课程号同时组成选修关系的主码,因此既要满足实体完整性约束,也要满足参照完整性约束,课程号不能取空。

2.3.3 用户定义的完整性

如: 课程(课程号,课程名,学分),其中 “学分”属性只能取值{1,2,3,4}。

发布了6 篇原创文章 · 获赞 3 · 访问量 2503

猜你喜欢

转载自blog.csdn.net/qq_37208863/article/details/104313100