
1.3.2 关系运算
对关系数据库进行查询操作时,要找到满足用户需要的数据,就必须对关系进行相应的关系运算。关系运算有两类:一类是传统的集合运算,另一类是专门的关系运算。
1.传统的集合运算
传统的集合运算主要有:并、差、交、笛卡儿积4种。其中并、差、交要求运算对象必须是两个关系模式完全相同的关系,即两张具有相同结构的表,两张表的属性都完全相同。如关系R(见表1.2)、关系S(见表1.3)。
表1.2 关系R

表1.3 关系S

1)并运算
对上述具有相同关系模式的两个关系R、S进行并运算的结果为:先将R、S两个关系合并成一个关系,再去掉关系中相同的元组,记为R∪S。结果如表1.4所示。
表1.4 R∪S

2)交运算
对上述具有相同关系模式的两个关系R、S进行交运算的结果为:将既属于关系R又属于关系S的元组存放到一个关系中,记为R∩S。结果如表1.5所示。
3)差运算
对上述具有相同关系模式的两个关系R、S进行差运算的结果为:将属于关系R但不属于关系S的元组存放到一个关系中,记为R-S。结果如表1.6所示。
表1.5 R∩S

表1.6 R-S

4)笛卡儿积
对两个关系进行笛卡儿积运算时,不要求它们具有相同的关系模式。对于关系M(有a个属性m个元组)、N(有b个属性n个元组),进行笛卡儿积运算的结果为:由(m×n)个元组构成,每个元组有(a+b)个属性,每个元组的前a个属性值来自关系M的一个元组,后b个属性值来自关系N的一个元组,记为M×N。如表1.7~表1.9所示。
表1.7 关系M

表1.8 关系N

表1.9 M×N

续表

2.专门的关系运算
专门的关系运算主要有:选择、投影、连接、除4种。其中选择、投影只有一个运算对象,连接、除则需要两个运算对象,并且需是两个关系模式不完全相同的关系。
1)选择
选择运算是按照某个逻辑条件(F)对关系(R)中的元组进行选择,选出满足条件的元组作为运算结果,记为σF(R)。如在关系R中查询性别为“男”的学生,结果如表1.10所示。
2)投影
投影运算是从关系(R)中挑选若干属性(Ai,Aj,…,Ak)组成一个新的关系,如果新关系中包含重复元组,则要删除重复元组,记为πAi,Aj,…,Ak(R)。如在关系R中查询学生的学号、姓名,结果如表1.11所示。
表1.10 σ性别="男"(R)

表1.11 π姓名,性别(R)

3)连接
连接运算是从两个关系的笛卡儿积中选取属性值满足连接条件的元组,记为,也可记为σiθj(G×K)。其中i为关系G的一个属性,j为关系K的一个属性,θ为比较符,可以是:>、<、≥、≤、=、≠。iθj为连接条件,即在G和K的笛卡儿积中,选择G的i属性值与K的j属性值满足θ条件的元组。对关系G(见表1.12)、K(见表1.13)进行连接条件为G.B>K.C的连接运算的结果如表1.15所示,即在G、K的笛卡儿积(见表1.14)中选择满足条件G.B>K.C的元组。
在连接运算中有两种最为重要的连接:等值连接和自然连接。
(1)等值连接。当θ为“=”时的连接操作称为等值连接,等值连接运算是从G×K中选取G的i属性与K的j属性值相等的元组。对关系G、K进行连接条件为A=D的等值连接运算的结果如表1.16所示,即在G、K的笛卡儿积中选择满足条件A=D的元组。
(2)自然连接。自然连接是一种特殊的等值连接,要求从G×K中选取G与K都具有的属性做等值连接,最后通过投影运算去掉重复的属性。对关系G、K进行自然连接运算的结果如表1.17所示,即在G、K的笛卡儿积中选择关系G的B、C属性与关系K的B、C均对应相等的元组,即G.B=K.B并且G.C=K.C,再去掉重复的属性,两个关系的B、C字段重复,需去掉一组。
自然连接是最常用的连接运算。
表1.12 关系G

表1.13 关系K

表1.14 G×K

表1.15 σG.B>K.C(G×K)

表1.16 σA=D(G×K)

表1.17 G、K的自然连接运算

4)除
除运算是笛卡儿积的逆运算。设被除关系T为m元关系,除关系E为n元关系,那么它们的商为m-n元关系,记为T÷E。商的构成原则是:将被除关系T中的m-n列,按其值分成若干组,检查每一组的n列值的集合是否包含除关系E,若包含则取m-n列的值作为商的一个元组,否则不取。对关系T(见表1.18)、E(见表1.19)进行除运算的结果如表1.22所示,对关系T、W(见表1.20)进行除运算的结果如表1.23所示,对关系T、V(见表1.21)进行除运算的结果如表1.24所示。
表1.18 关系T

表1.19 关系E

表1.20 关系W

表1.21 关系V

表1.22 T÷E

表1.23 T÷W

表1.24 T÷V
