1、关系代数专题,任何一种运算都是将一定的运算符作用 于一定的运算对象,得到预期的运算结果。 关系代数的运算对象和结果都是关系。,运算符包括四类:集合运算符、专门关系运算符、算术比较符、逻辑运算符,关系代数的概念,3,1.关系代数的基本操作,(1)定义 关系代数是一组建立在关系上的高级运算,每个运算都以一个或多个关系作为它的运算对象,并且生成一个关系作为运算结果。,(a) 运算对象:关系 (b) 运算结果:关系,(2) 关系运算分类,(a)传统的集合运算:合并 、相交 、求差-(相减)、笛卡尔积 (运算从关系的水平(行)的角度来进行)(b)专门的关系运算:选择 、投影 、联接 、求商(运算不仅涉及
2、行而且涉及列),具有相同属性集的两个关系R1,R2 的合并,是由属于R1或属于R2(或属于两者)的所有元组t(不计重复元组)组成的一个新的关系,新关系具有和R1相同的属性名集合。 运算符:“” 记为: R1R2, 合并,例如,R,S,RS的结果为:, 差(相减),具有相同属性集的两个关系R1, R2的求差,是由属于R1而不属于R2的所有元组t组成的一个新的关系,新关系具有和R1相同的属性名集合。 运算符:“” 记为: R1- R2,例如,R,S,R-S的结果为:, 笛卡尔积,两个关系R,S(设R为k1元关系,M个元组,S为k2元关系,N个元组)的广义笛卡尔积,是一个(K1+K2)列的元组的集合
3、,是由属于R1的任何一个元组tk1和属于S的元组tk2连接而成的新元组t所组成的一个新关系。(新关系中元组的前K1列是关系R的一个元组,后K2列是关系S的一个元组,基数为M*N) 运算符:“ 记为: R S,例如:,例如:RS,R,S,RS结果为:,RS结果中元组的个数(即基数,行数) = R和S中行数之积; 属性的个数(即元数,列数) =R和S中列数之和。, 交,具有相同属性集的两个关系R1, R2的相交,是由既属于R1又属于R2的所有元组t组成的一个新的关系,新关系具有和R1相同的属性名集合。 运算符:“ 记为: R1 R2,S-R,R-S,RS,RS =R-(R-S) RS =S-(S-
4、R),例如,R,S,RS的结果为:,16, 选择(限制),从现有关系中选择满足一定条件的元组组成新的关系。(从行的角度进行运算) 运算符“” 记为: F(R)=t|t R F(t)=true 其中F为选择条件,是一个逻辑表达式 运算对象:常量、属性名(序号)、简单函数 运算符:算术比较运算符、逻辑运算符,17,选择运算是从行的角度进行的运算,例如,设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC。,18,选择(续),(a),Student,19,选择(续),(b),Course,20,选择(续),(c),SC,21,选择(续),例1 查询信息系(IS系)
5、全体学生Sdept = IS (Student)或 5 =IS (Student) 结果:,注意:常量要用单引号括起来,而属性名或属性 序号不用加引号。,22,选择(续),例2 查询年龄小于20岁的学生Sage 20(Student) 或 4 20(Student)结果:,投影,从现有关系中选取某些属性(列),可对选取的属性重新排序,并删除重复的行(元组),组成新的关系。(从列的角度进行运算) A(R)=tA|tR A为R的属性列。 tA表示元组在相应A属性中的分量。,24,投影操作主要是从列的角度进行运算但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行),25,投影(
6、续),例3 查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影Sname,Sdept(Student)或 2,5(Student)结果:,26,投影(续),27,投影(续),例4 查询学生关系Student中都有哪些系 Sdept(Student)结果:, 联结,联结也称为联结,它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作: R S=trts |trRtsStrAtsB其中A和B分别为R和S上度数相等并且可比的属性组。是比较运算符。联结运算从R和S的广义笛卡尔积RS中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较运算符的元组。,AB,29
7、,两类常用联结运算 等值联结(equijoin) 什么是等值连接 为“”的联结运算称为等值联结 等值联结的含义 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值联结为: R S = | tr Rts StrA = tsB ,A=B,30,自然联结(Natural join) 什么是自然联结 自然联结是一种特殊的等值联结 两个关系中进行比较的分量必须是相同的属性组 在结果中把重复的属性列去掉 自然联结的含义R和S具有相同的属性组BR S = | tr Rts StrB =tsB ,31,一般的联结操作是从行的角度进行运算。自然联结还需要取消重复列,所以是同时从行和列的角度进行运
8、算。,32,例5,R,S,33,R S,34,等值联结 R S,35,自然连接 R S,36,自然联接的具体的计算过程如下: 计算RS 设R和S的公共属性是A1,A2,AK,挑选RS中满足R.A1=S.A1,R.A2=S.A2,R.AK=S.AK的那些元组 从RS结果中去掉S.A1,S.A2,S.AK这些列,自然联接与等值联接的区别:,(1)在做自然联接的两个关系中,要求值相等的属性名也必须相等,而在等值联接中不要求值相等的属性名相等。,(2)在自然联接的结果中,去掉重复的属性名,而在等值联接的结果中不去掉重复的属性名。,若两个关系没有公共属性,则其自然联接就转化为笛卡尔积操作。,R,S,R
9、S,自然联接,R,S,R S,等值联接,3=2,R S,1=1,40,除运算(Division)设关系R和S的元数分别为m和n (设mn0),那么RS是一个(m-n)元的元组集合。RS是满足下列条件的最大关系:最大关系中每个元组t与S中每个元组u组成的新元组t,u必在关系R中。为了方便起见,我们假设关系S的属性为关系R中后S个属性。,41,则RS的具体计算过程如下: (1) T=1,2,m-n(R) (2) W=(TS)-R (计算TS中不在R的元组) (3) V=1,2,m-n(W) (4) RS=T-V 即RS=1,2,m-n(R)-1,2,m-n(1,2,m-n (R) S)-R) 除运
10、算是同时从行和列角度进行运算,42,象集,给定一个关系R(X,Y),X和Y为属性组。定义,当tX=x时,x在R中的象集为: Yx =tY|tR,tX=x 它表示R中属性组X上值为x的诸元组在Y上各分量的集合。,tY,Y为R中的一个属性组,Y=yi1,yi2yik,tY=(tyi1,tyi2tyik)表示R中的元组t在属性组Y上各分量的集合,43,(1)将R中属性分为两个集合X和Y,R(X,Y),其中Y就是S中的前半部分属性的集合,S(Y,Z)。 (2)若X的某个值x的象集YxYx=tYtRtX=x 包含S表中tY的所有元组 ,则将x放入结果集中。,因此,求RS的操作步骤如下:,44,例如:,R
11、,S,X,Y,Y,当x=(b,c)时,其象集Yx为:,45,RS的结果为:,X,当x=(a,b)时,其象集Yx为:,当x=(e,d)时,其象集Yx为:,46,X,Y,Y,Z,例: RS,R,S,(1)当x=(a1)时,其象集为,X可以取值为a1,a2,a3,a4,47,(2)当x=(a2)时,(3)当x=(a3)时,(4)当x=(a4)时,其象集为,其象集为,其象集为,S在(B,C)Y上的投影为,RS的结果为:,X,48,何时除运算?以学生-课程数据库为例,例 查询至少选修1号课程和3号课程的学生号码 首先建立一个临时关系K: 然后求:Sno.Cno(SC)K,各种运算总结: 关系代数运算有五个基本操作,另三个非基本运算可以由这5个基本运算组合而成。,由和 组合而成,由、- 和组合而成,