178.关系数据库理论基础 (3)

•                 针对集合进行,即操作的对象是元组的集合,操作后所得到的结果也是元组的集合。

•                 非关系模型(网状模型和层次模型)的操作对象是一个元组。

 

 

•         2.1.3 关系的完整性约束

   关系是关系模型的数据结构。关系需要满足一些基本要求——关系的完整性约束。

   完整性约束包括:实体完整性约束、参照完整性约束、用户定义的完整性约束。

 

 

1.实体完整性

Ø 每一个关系中的主码属性的值不能为空(NULL),能够唯一标识对应的元组。

    原因:主码设置的目的是用于区分关系中的元组,以将各个元组区别开来。如果主码中的属性值可以为空,那么在关系中将存在一些不确定的元组,这些元组将不知道是否能够与别的元组有区别(因为空值被系统理解为“不知道”或“无意义”的值),这在关系模型中是不允许的。各个元组在主码上的取值不允许相等,否则就不满足实体完整性约束。

Ø 实体完整性是关系模型必须满足的完整性约束条件。

 

 

【例2.1】考虑如表2.3所示的学生关系student(学号, 姓名, 性别, 专业号)和表2.4所示的课程关系course(课程号, 课程名, 学分)。假设学生关系的主码为“学号”,课程关系的主码为“课程号”,那么学生关系的“学号”以及课程关系的“课程号”的取值就不能为空,而且取值不能重复(能唯一标识每一行),否则就不满足实体完整性。

178.关系数据库理论基础

 

2. 参照完整性

Ø 参照完整性与外码密切相关,这里先介绍外码的概念。

Ø 对于关系R和S,假设F是关系R的一个属性或一组属性,但F不是R的码,K是关系S的主码,且F与K相对应(或相同),则F称为R的外码(Foreign key),R和S分别称为参照关系(Referencing relation)和被参照关系(Referenced relation),如图2.1所示。

 

178.关系数据库理论基础

 

 

•         F与K是相同的属性或属性集,它们的取值范围相同。

•         关系模型的参照完整性约束:外码F中的每个属性值等于主码K的某一个属性值或F的每个属性值均为空值。

•         如果要在关系R中插入一个元组,则该元组在属性F上的取值等于关系S中某一个元组在主码K上的取值或全置为空值,否则不能插入该元组。当关系S为空时,不能向关系R中插入元组;当要删除关系S中的一些元组时,必须先删除关系R中与这些元组相关联的元组。

•         参照完整性也是关系模式必须满足的完整性约束条件。

 

 

【例子】选课关系SC(学生编号, 课程编号, 成绩),如表2.5所示。可见属性组{学生编号,课程编号}为该关系的主码。

 

178.关系数据库理论基础

    属性“学生编号”是选课关系的外码,它与关系“student(学号, 姓名, 性别, 专业号)”的主码“学号”相对应,选课关系为参照关系,学生关系为被参照关系,“课程编号”同理。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzfxwz.html