1、2.4 关系代数关系代数n关系代数是一种抽象的数据语言。它以关系代数是一种抽象的数据语言。它以集合代数为基础发展起来的,它是以关集合代数为基础发展起来的,它是以关系为运算对象,运算结果也是关系。系为运算对象,运算结果也是关系。n关系是元组的集合,传统的集合运算关系是元组的集合,传统的集合运算并、并、交、差、笛卡尔积交、差、笛卡尔积也适用于关系代数;也适用于关系代数;n关系还包括关系还包括4个专门的运算个专门的运算:选择、投:选择、投影、连接和除影、连接和除。n这这8种运算中种运算中,选择、投影、并、差和选择、投影、并、差和笛卡儿积笛卡儿积5种种运算称为关系代数的基本运算称为关系代数的基本运算,
2、其他运算,其他3个运算实际上都可以用这个运算实际上都可以用这5种运算表达出来种运算表达出来。n关系代数运算涉及的运算符分为四类关系代数运算涉及的运算符分为四类:n传统的集合运算符(传统的集合运算符(、-、););n专门的关系运算符(专门的关系运算符(、););n算术比较运算符算术比较运算符(=、););n逻辑运算符(逻辑运算符(、)2.4.1 传统的集合运算传统的集合运算 n传统的集合运算是二目运算,它要求参传统的集合运算是二目运算,它要求参与运算的关系(设为关系与运算的关系(设为关系R和关系和关系S)具)具有属性个数相同,即两个关系都是有属性个数相同,即两个关系都是n元,元,且相应的属性取自
3、同一个域。且相应的属性取自同一个域。1并(并(Union)关系关系R与与S的并仍是一个的并仍是一个n元关系,它由属元关系,它由属于于R或属于或属于S的元组组成。记作:的元组组成。记作:R S=t|t R t S2差(差(Difference)关系关系R与与S的差仍是一个的差仍是一个n元关系,由属于元关系,由属于R而不属于而不属于S的所有元组组成。记作:的所有元组组成。记作:R-S=t|t R t Sn3交(交(Intersection)n关系关系R与与S的交仍是一个的交仍是一个n元关系,由属元关系,由属于于R而不属于而不属于S的所有元组组成。记作:的所有元组组成。记作:nR S=t|t R t
4、 S4笛卡儿积(笛卡儿积(Cartesian Product)n目关系目关系R和和m元关系元关系S的笛卡儿积是一的笛卡儿积是一个(个(n+m)目的新关系,其中每个元组)目的新关系,其中每个元组的前的前n列是关系列是关系R的某个元组,后的某个元组,后m列是列是关系关系S的某个元组。记作:的某个元组。记作:R S=(a1,an,b1,bm)|(a1,an)R (b1,bm)S 若若R有有k1个元组,个元组,S有有k2个元组,则个元组,则关系关系R和关系和关系S的广义笛卡儿积有的广义笛卡儿积有k1 k2个元组。个元组。n两个关系进行笛卡儿积运算后会得到一两个关系进行笛卡儿积运算后会得到一个非常大的关
5、系。如个非常大的关系。如R有有10个元组,个元组,S有有20个元组,则个元组,则R S有有200个元组,而且个元组,而且其每个元组要比其每个元组要比R和和S的元组要大。的元组要大。n关系关系R和关系和关系S可能有相同的属性名,为可能有相同的属性名,为加以区别,就在属性名前标上相应的关加以区别,就在属性名前标上相应的关系名作为前缀,例如系名作为前缀,例如R.A和和S.A等。属等。属性名不同时可以不用加前缀性名不同时可以不用加前缀。n例例2 已知关系已知关系R和和S分别如下图分别如下图3.1(a)、图、图3.1(b)所示。所示。求(求(1)R S。(。(2)R S (3)R S (4)R S AB
6、CaddsngfkaS解:解:.ABCaecaddfkaR3.2.3专门的关系运算专门的关系运算 n专门的关系运算包括选择、投影、连接、专门的关系运算包括选择、投影、连接、除除。n下面介绍几个记号:下面介绍几个记号:(1)设关系模式为)设关系模式为R(A1,A2,An)。它的一个关系记为它的一个关系记为R。t R表示表示t是是R的的一个元组。一个元组。TAi则是表示元组则是表示元组t中对应中对应于属性于属性Ai的一个分量。的一个分量。(2)若若A=Ai1,Ai2,Aik,其中,其中Ai1,Ai2,Aik是是A1,A2,An中的一部分,则中的一部分,则A称称为属性组。为属性组。tA=(tAi1,
7、tAik)表示元表示元组组t在属性列在属性列A上各分量的集合。上各分量的集合。A则表示则表示A1,A2,An中去掉中去掉Ai1,Ai2,Aik后剩余的属性组。后剩余的属性组。(3)给定一个关系给定一个关系R(X,Z),X和和Z为属性组。为属性组。定义,当定义,当tX=x时,时,x在在R中的象集为:中的象集为:Zx=tZ|t R tX=x 例例:已知关系已知关系R为:为:ABCDa1b1c1d1a1b1c2d2a2b2c1d2求求:(a1,b1)在在R中的象集。中的象集。一、选择(一、选择(selection)关系关系R上的上的选择运算选择运算是在关系是在关系R中选择满中选择满足给定条件的元组。
8、记作足给定条件的元组。记作 F(R)。其中其中 为选择运算符,为选择运算符,F为条件。选择运为条件。选择运算是单目运算,可表示为:算是单目运算,可表示为:F(R)=t|t R F(t)=真真 条件条件F是逻辑表达式,其结果为是逻辑表达式,其结果为“真真”或或“假假”。n为了举例方便,我们先给出学生为了举例方便,我们先给出学生-课程课程管理数据库。该数据库有管理数据库。该数据库有3个关系:学个关系:学生关系、选课关系、课程关系。生关系、选课关系、课程关系。3个关个关系的内容如下系的内容如下:n学生关系学生关系S:S(sno,sname,ssex,sage,sdept)n课程关系课程关系C:C(C
9、no,Cname,Pcno,credit)n成绩关系成绩关系SC:SC(Sno,Cno,grade)n例例1 查找计算机系学生情况。查找计算机系学生情况。二、投影(二、投影(Projection)关系关系R上的上的投影运算投影运算是从关系是从关系R中选择若中选择若干属性形成新的关系,并在结果中删去干属性形成新的关系,并在结果中删去重复元组。投影操作记为:重复元组。投影操作记为:A(R)。其中其中 为投影运算符,为投影运算符,A为指定保留的属为指定保留的属性组。性组。投影操作也是单目运算,只有一个操作对投影操作也是单目运算,只有一个操作对象。象。例例2 查询所有学生的学号,姓名,查询所有学生的学
10、号,姓名,班级信息。班级信息。例例3 查询计算机系所有学生的学查询计算机系所有学生的学号,姓名。号,姓名。n三、连接(三、连接(Jion)n在数据库查询中所要数据常常需要从两在数据库查询中所要数据常常需要从两个以上的关系中导出,而且对于参与运个以上的关系中导出,而且对于参与运算的各个关系的元组常常附加了某些限算的各个关系的元组常常附加了某些限制条件,这时可以采用连接运算。制条件,这时可以采用连接运算。n关系关系R和关系和关系S的连接运算是指从的连接运算是指从R与与S的笛卡儿积中选择的笛卡儿积中选择R与与S的属性间满足连的属性间满足连接条件接条件F的元组。记为的元组。记为:R (R.B(R.BS
11、(Y,Z)=R.X,R.Y,S.Z (R.Y=S.Y(R S)nR S=R.X(R)-R.X(R.X(R)S)R)3.2.4 关系代数表达式关系代数表达式 在关系代数运算中,把由在关系代数运算中,把由8种运算经过有种运算经过有限次复合的式子称为关系代数表达式。限次复合的式子称为关系代数表达式。关系代数表达式的运算结果仍是一个关关系代数表达式的运算结果仍是一个关系。我们可以用关系代数表达式表示我系。我们可以用关系代数表达式表示我们所需要的各种数据查询和更新处理。们所需要的各种数据查询和更新处理。n下面我们以学生下面我们以学生选课数据库为例说明选课数据库为例说明如何用关系代数表达式表示各种数据查如
12、何用关系代数表达式表示各种数据查询和更新操作。询和更新操作。nS(Sno,Sname,Sex,Birth,Class,Dept)nSC(Sno,Cno,Score)nC(Cno,Cname,Credit,cdept)例例8 查询学习课程号为查询学习课程号为C1的学生学号与成的学生学号与成绩。绩。例例9 查选修课程号查选修课程号C2的学生学号与姓名。的学生学号与姓名。例例10 查找选修课程名为查找选修课程名为Maths的学生学号的学生学号与姓名。与姓名。例例11 查询选修课程号为查询选修课程号为C2或或C4的学生学的学生学号。号。例例11 查询选修课程号为查询选修课程号为C2和和C4的学生学的学
13、生学号。号。例例12 查询不学查询不学C4课的学生姓名及其班级。课的学生姓名及其班级。例例13 查询选修了计算机系所开全部课程的查询选修了计算机系所开全部课程的学生学号。学生学号。例例14 查找学习全部课程的学生姓名。查找学习全部课程的学生姓名。例例15 将新开课程记录(将新开课程记录(C7,数据仓库数据仓库,2,数据库数据库)插入到数据库中。)插入到数据库中。例例16 将学号为将学号为601012的学生的的学生的C1课的成绩课的成绩修改为修改为75。修改操作用关系代数表示分两步实现,修改操作用关系代数表示分两步实现,先删去原来的元组,然后再插入新元组。先删去原来的元组,然后再插入新元组。由于由于(601012,C1)是主键,可唯一标是主键,可唯一标识该元组,因此成绩未知没关系。识该元组,因此成绩未知没关系。n删除操作在关系代数中用差来实现。删除操作在关系代数中用差来实现。n作业:作业:P80 2,3,4,5,6,7