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