国开《数据库基础与应用》第二章 2-4-3:连接运算
2-4-3:连接运算
连接运算是双目运算,运算对象是两个关系,它把两个关系R和S中的所有元组,按照相应属性值的比较条件连接起来,得到的结果关系是R和S的笛卡尔积中的一个子集。比较条件是由比较运算符和关系中的相应属性所构成的表达式,连接运算将按照所使用的比较运算符进行分类,可以被分为大于连接、小于连接、大于等于连接、小于等于连接、等于连接、不等于连接等6种,同统称为θ连接。
假定A和B分别为R和S中的属性,t是连接运算结果中的一个元组,tR和tS分别表示t元组中属于R和S中的元组,即t由tR和tS这前后两个部分共同组成,R.A θ S.B为比较条件。对R和S按比较条件R.A θ S.B进行连接记作为R∞R.A θ S.B S,用笛卡尔积和选择运算表示的连接运算公式如下:
R∞R.A θ S.B S =δR.A θ S.B(R×S)={tRtS | tR∈R ∧ tS∈S ∧ R.A θ S.B = True}
例如:设两个关系R和S分别如下表6和下表7所示,若按照比较条件R.B>S.C进行大于连接,则连接结果如下表8所示。
两个关系的连接运算,需要进行双重循环,对于第1个关系中的每个元组,都要试着与第2个关系中的每个元组进行连接,若每两个对应元组满足所给的连接条件,就把它写入到结果关系中。
最后在表8中得到8个元组,每个元组都具有5个属性,其中前3个来自关系R,后两个来自关系S。为了表明属性所属的关系,应在属性名之前带上关系名,它们之间使用句点分开。
表6 关系R
A | B | C |
---|---|---|
XC | 30 | 15 |
WR | 18 | 20 |
XK | 12 | 20 |
GL | 25 | 30 |
SF | 43 | 35 |
表7 关系S
C | D |
---|---|
15 | TT |
20 | TF |
30 | FF |
表8 大于连接
R.A | R.B | R.C | S.C | S.D |
---|---|---|---|---|
XC | 30 | 15 | 15 | TT |
XC | 30 | 15 | 20 | TF |
WR | 18 | 20 | 15 | TT |
WR | 18 | 20 | 15 | TT |
GL | 25 | 30 | 15 | TT |
GL | 25 | 30 | 20 | TF |
SF | 43 | 35 | 20 | TF |
SF | 43 | 35 | 30 | FF |
在连接运算中,一种常用的连接是等于连接,又称等值连接。如对于上面的表6和表7,若使用的连接条件为R.C=S.C,这就是等值连接,利用双重循环依次把对应属性C的值相等的元组拼接起来,顺序写入到结果关系中。
对R和S进行C属性值的等值连接后,得到5个属性和4个元组。
在等值连接中,其连接结果存在着与连接条件对应的重复取值的属性。例如在上面刚刚介绍的等值连接中,等值连接条件为R.C=S.C,在连接结果中,R.C属性和S.C属性的两列的取值就完全相同。
在连接运算中,对于被连接的两个关系,若根据属性名相同进行等值连接,并且在结果关系中只保留每对相同属性中的一个属性,即去掉不必要的重复属性,这种连接称之为自然连接。关系R和S的自然连接被简记为R∞S。
例如:设学生关系S如下表9所示,课程关系C如下表10所示,选课关系SC如下表11所示,则S和SC的自然连接标记为S∞SC,连接结果如表12所示。在表12中,属性个数为6,它等于S的属性个数4加上SC的属性个数3再减去1;元组个数为7,它等于SC中的元组数7。
表9 学生关系S
学号 | 姓名 | 年龄 | 专业 |
---|---|---|---|
J0301 | zjt | 18 | Jsj |
J0302 | lhy | 20 | Dz |
D0301 | lhy | 20 | Dz |
D0302 | wjm | 19 | Dz |
X0301 | xps | 19 | Xx |
表10 课程关系C
课号 | 课名 | 学分 |
---|---|---|
001 | Comp | 4 |
002 | Prog | 3 |
003 | Math | 6 |
表11 选课关系SC
学号 | 课号 | 成绩 |
---|---|---|
J0301 | 001 | 78 |
D0301 | 001 | 82 |
D0301 | 002 | 73 |
D0302 | 003 | 90 |
X0301 | 001 | 65 |
X0301 | 002 | 77 |
X0301 | 003 | 82 |
表12 学生关系S∞SC
学号 | 姓名 | 年龄 | 专业 | 课号 | 成绩 |
---|---|---|---|---|---|
J0301 | zjt | 18 | jsj | 001 | 78 |
D0301 | lhy | 20 | dz | 001 | 82 |
D0301 | lhy | 20 | dz | 002 | 73 |
D0302 | wjm | 19 | dz | 003 | 90 |
X0301 | xps | 19 | xx | 001 | 65 |
X0301 | xps | 19 | xx | 002 | 77 |
X0301 | xps | 19 | xx | 003 | 82 |