集合运算
关系代数运算中,五中基本运算为并,差,选择,投影,笛卡尔积。
集合运算包括并(UNION)(∪)、交(INTERSECT)(∩)、差(MINUS)(-)、乘积(TIMES)(×)。
使用并、交、差运算,需要参与运算的数据表具有兼容性要求,兼容性要求即:如果数据表R和数据表S具有相同的列结构,对应的列来自于相同的数据类型域并且具有相同的含义,那么我们说他们是兼容的。
对于并,交,差的定义与数学中的定义相同,以下是并,交,差运算的示例:
A | B | C |
a1 | b1 | c1 |
a1 | b2 | c3 |
a2 | b1 | c2 |
A | B | C |
a1 | b1 | c1 |
a1 | b1 | c2 |
a1 | b2 | c3 |
a3 | b2 | c3 |
R∪S:通俗来说就是把数据表S的每一行加到数据表R之后,(有完全相同的行只需要写一次),
R∩S:就是取相同元素。
R-S:在R中去掉与S中有相同的元组
结果:
A | B | C |
a1 | b1 | c1 |
a1 | b2 | c3 |
a2 | b1 | c2 |
a1 | b1 | c2 |
a3 | b2 | c3 |
A | B | C |
a1 | b1 | c1 |
a1 | b2 | c3 |
A | B | C |
a2 | b1 | c2 |
乘积不需要兼容,乘积(笛卡尔积)的原则是行数=行数相乘,列相加,实例如下:
A | B |
1 | 2 |
3 | 4 |
A | B | C |
1 | 3 | 4 |
5 | 6 | 7 |
8 | 8 | 9 |
R.A | R.B | S.A | S.B | S.C |
1 | 2 | 1 | 3 | 4 |
1 | 2 | 5 | 6 | 7 |
1 | 2 | 8 | 8 | 9 |
3 | 4 | 1 | 3 | 4 |
3 | 4 | 5 | 6 | 7 |
3 | 4 | 8 | 8 | 9 |
自然关系运算
包含投影([])、选择(where)、连接(JOIN或∞)、除运算(DIVIDEBY或÷)。
运算优先级:投影>选择>乘积>连接>除法>交>并>差
1、投影:选取数据表中需要的属性列,例:
A | B | C |
a1 | b1 | c1 |
a2 | b2 | c2 |
a3 | b3 | c3 |
经过投影操作R[B]得到
B |
b1 |
b2 |
b3 |
2、选择:是根据条件查找出相应的结果(以上诉R为例):
关系代数表达式:R where C = c2
意思是,找出C列中值等于c2的行,得到结果为:
A | B | C |
a2 | b2 | c2 |
3、连接(⋈):简单来说就是将两个表先做笛卡尔乘积,后做选择,最后得出的就是连接的结果。
例:给出如下两个表,做连接:R⋈S(R.B>S.B)
其中R⋈S表示连接,括号中的内容作为选择的条件,删去不满足该条件的行即得结果
A | B | C |
4 | 5 | 6 |
7 | 8 | 9 |
A | B |
1 | 3 |
4 | 6 |
7 | 9 |
步骤一:先做笛卡尔积得到如下的表:
R.A | R.B | R.C | S.A | S.B |
4 | 5 | 6 | 1 | 3 |
4 | 5 | 6 | 4 | 6 |
4 | 5 | 6 | 7 | 9 |
7 | 8 | 9 | 1 | 3 |
7 | 8 | 9 | 4 | 6 |
7 | 8 | 9 | 7 | 9 |
步骤二:选择出满足括号内关系的行,即保留R.B>S.B的行:最终结果为:
R.A | R.B | R.C | S.A | S.B |
4 | 5 | 6 | 1 | 3 |
7 | 8 | 9 | 1 | 3 |
7 | 8 | 9 | 4 | 6 |
关于一些特殊的连接:如果选择的条件为等于,则连接方式称为等值连接,
在等值连接后,再将连接的两个表中,相同重复的列删去简化为一列后得到的结果称为自然连接。
4、除运算:
条件:两个表要能够进行除运算,被除的表的属性(列数)必须大于除的表,以R÷S示例,S的属性,应为R属性的真子集。
R÷S的运算结果(用一个实例来说明运算方法):
A | B | C |
a | b | c |
a | d | c |
d | b | c |
a | b | b |
d | b | b |
b | c | a |
C |
c |
C |
c |
b |
(1)、对于R÷S,结果得到的列数(属性)为A和B,去掉了C,结果如下:
A | B |
a | b |
a | d |
d | b |
满足结果中有三个元组,(a,b)、(a,d)和(d,b),这三个元组和S组合得到的三个元组(a,b,c)、(a,d,c)和(d,b,c)都在被除表R中。
(2)、对于R÷T,结果的列数也为2,得到:
A | B |
a | b |
d | b |
满足结果中有两个元组(a,b)和(d,b),这两个元组和T中的两个元组(c)和(b)随机组合得到的四个三元组都在被除表R中。