一、关系模型的数据结构及其形式化定义
关系模型的数据结构非常简单,只包含单一的数据结构——关系。
在关系模型中,无论是实体还是实体之间的联系,骏由单一的结构类型即关系来表示。
关系模型是以集合代数理论为基础的。
1、关系的形式化定义及其有关概念
- 域(Domain)
域是一组具有相同数据类型的值的集合,又称为值域(D)。例如:整数,实数,字符串的集合都是域。
域中所包含的值的个数称为域的基数(m)。
在关系中用域来表示属性的取值范围。
例如:D1={王伟,张三,李四},m1=3
D1表示姓名域的集合。
域名没有排列次序,如:D2={男,女}={女,男}
笛卡尔积
笛卡尔积也是一个集合
【1】每一个元素(d1,d2,d3…,dn)中的每一个值di叫做一个分量,分量来自对应的域。
【2】每一个元素(d1,d2,d3…,dn)叫做一个n元祖,简称元祖。但元祖是有序的。
笛卡尔积可以使用二维表来表示。
3. 关系(Relation)
关系是笛卡尔积的子集。
笛卡尔积的任一子集称为定义在域上的n元关系,关系用R来表示。
R:关系的名字
n:关系的目或者度
【1】R=1:单元关系,R=2:二元关系。
【2】关系中的每个元素是元组,用t表示。关系中元组的个数是关系的基数。
【3】
无限关系:一个关系当中的元组个数是无限的
有限关系:一个关系当中的元组个数是有限的
【4】关系是笛卡尔积的子集,因此关系也是二维表
1、表的框架由域构成,即表的每一列对应一个域。
2、表的每一行对应一个元组
3、每列有唯一的名字,叫属性。
n元关系必有n个属性。
属性的取值范围称为值域,对应域当中的取值范围。
【4】具有相同关系框架的关系称为同类关系
【5】定义在域上的关系由关系头和关系体组成
关系头是属性名的集合(A1,A2 , A3)
关系头是关系的数据结构的描述,是固定不变的
关系体是指关系结构中的内容或者数据,它随元组的插入,删除,修改而变化。【考】【只是增,删,改,而没有查询,因为查询只是read only】
2、关系的性质
关系是一种规范化了的二维表中的行的集合。
关系的性质:
【1】列是同质的,即每列中的分量必须来自同一个域,必须是同一类型的数据
【2】不同的属性可来自同一个域
【3】列的顺序可以任意交换。但交换时,应该连同属性名一起交换,否则得到不同的关系
【4】关系当中元组的顺序可以任意,在一个关系中可以任意交换两行的次序。因为关系是以元组为元素的集合,而集合中的元素是无序的,所以作为集合元素的元组也是无序的。
【笛卡尔积当中的元组是有序的】
【5】关系当中不允许出现相同的元组(去重)
作为集合元素的元组是唯一的。
【6】关系中的每一分量必须是不可分的数据项
所有的属性值都是一个确定的值。
满足此关系的称为规范化关系,否则为非规范化关系。
3、关系模式
在关系数据库当中,关系模式是型,关系是值(实例化)。
关系模式是一个五元组。
关系的描述称为关系模式
关系模式可以形象化的表示为:R(U,D,DOM,F)
【1】R:关系名
【2】U:组成该关系的属性名集合
【3】D:属性组U中属性所来自的域
【4】DOM:属性向域的映像集合
【5】F:属性间数据的依赖关系集合
关系模式通常还可以简化为:R(U)或者R(A1,A2,…An)
【1】R:关系名
【2】U:属性名的集合
【3】A1,A2,…An:各属性名
关系模式是型,即关系头
关系是值,即关系体
实际中常把关系和关系模型统称为关系
【考试当中关系模式的写法:】
1、学生(学号,姓名,年龄)
2、教师(教师号,姓名,性别,工资)
4、关系数据库和关系数据库模式
- 关系数据库的型称为关系数据库模式
- 关系数据库的值称为关系数据库。是关系模式在某一时刻对应关系的集合
- 与关系数据库模式对应的数据库中的当前值就是关系数据库的内容,称为关系数据库的实例
二、关系的码和关系的完整性
1、候选码和主码
候选码
能唯一标识关系中元组的一个属性或属性集,称为候选码,也称候选键或者候选关键字。
如:在选课当中
只有属性组合“ 学号+课程号 ” 才能唯一地区分每一条选课记录,则属性组合“ 学号+课程号 ”就是选课关系的候选码。
当且满足以下两个条件,K才被称为候选码:
【1】唯一性:关系R的任意两个不同元组,其属性集K的值是不同的。
【2】最小性:组成关系键的属性集中,任一属性都不能从属性集K中删去,否则破坏唯一性。
例如:选课关系中的“ 学号+课程号 ” 满足最小性,从中去掉任何一个属性,都无法唯一标识选课记录。
2、主码(PK)
如果一个关系当中有多个候选码,可以从中选择一个作为查询,插入或者删除元组的操作变量,被选用的候选码称为主码,或者称为主键,关键字等等。
每个关系必须选择一个主码,选定后不得随意改变。
通常选最少的属性组合作为主码。
3、主属性和非主属性
主属性【Prime Attribute】:包含在主码中的各个属性称为主属性。
非主属性【None-Prime Attribute】:不包含在任何候选码中的属性称为非主属性。
【考试判断题】
包含在候选码中的各个属性称为主属性。(错,不是候选码,是主码)
全码:所有属性的组合是关系的候选码,这是称为全码。
4、外键(FK)
如果关系R2的一个或一组属性X不是R2的主码,而是另一关系R1的主码,则该属性或属性组X称为关系R2的外码或外部关系键。
并称关系R2为参照关系,关系R1为被参照关系。
5、关系的完整性
对关系数据库的插入、删除和修改操作必须有一定的约束条件,这些约束条件实际上是现实世界的要求。
任何关系在任何时刻都要满足这些语义约束。
关系模型当中,有三类完整性约束:实体完整性,参照完整性,用户自定义完整性。
【1】实体完整性和参照完整性是关系模型当中必须满足的完整性约束条件,被称为关系的两个不变性。
【2】用户自定义完整性:不同关系数据库系统由于应用环境不同,需要的一些特殊的约束条件。体现在具体的领域中的语义约束。
实体完整性【考试:填空和判断中都有】
实体完整性指的是主码的值不能为空或者部分为空。
参照完整性
如果关系R2的外码X与关系R1的主码相符,则X的每个值或者等于R1中主码的某一个值,或者去空值。
例如:
- 用户自定义完整性
同关系数据库系统由于应用环境不同,需要的一些特殊的约束条件。体现在具体的领域中的语义约束。
三、关系代数
关系模型由关系数据结果,关系操作和关系完整性约束三部分组成。
1、关系代数的分类以及其运算符
【1】传统的集合运算:该类运算把关系看成元组的集合,以元组为集合的元素来进行运算,其运算是从关系的水平方向(axis=0)来进行的。传统的集合运算包括:并,交,差,笛卡尔积。
【2】专门的关系运算:该类运算不仅涉及行方向,也涉及列方向。包括选取,投影,连接和除法运算。
【考试判断题】
专门的关系运算只包括行运算是错的。(错)
除了笛卡尔积运算外,其他集合运算要求参加运算的关系必须满足下述相容性的定义:
【1】两个关系R,S具有相同的列数
【2】R的第i个属性和S的第i个属性必须来自同一个域
2、传统的集合运算
【1】并(Union)
关系R和关系S的并运算结果由属于R或者S的元组组成。即R或者S的所有元组合并,删去重复元组,组成一个新的关系,其结果仍然是n元关系。
【2】差(Difference)
关系R和关系S的差运算结果由属于R而不属于S的元组组成。即R中删去与S中相同的元组,组成一个新的关系,其结果仍然是n元关系。
【3】交(Intersection)
关系R和关系S的交运算结果由即属于R又属于S的元组组成。
【4】广义笛卡尔积
3、专门的关系运算
选课表
【1】选取(Selection)
因此选择是从行的角度挑出来符合条件的行。
【2】投影(Projection)
【3】连接(join)
【4】除法(Division)
【1】R ÷ S的属性是在R当中但是没有在S当中的属性。
【2】R ÷ S的元组和S的元组进行组合,组合的结果必须都在R当中
第一步:找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);所得结果如下
第二步:被除关系R中与S中不相同的属性列是X ,关系R在属性(X)上做取消重复值的投影为{X1,X2};
第三步:求关系R中X属性对应的像集Y
根据关系R的记录,可以得到与X1值有关的记录,如图3所示;与X2有关的记录,如图4所示
第四步:判断包含关系
R÷S其实就是判断关系R中X各个值的像集Y是否包含关系S中属性Y的所有值。对比即可发现:
X1的像集只有Y1,不能包含关系S中属性Y的所有值,所以排除掉X1;
而X2的像集包含了关系S中属性Y的所有值,所以R÷S的最终结果就是X2