之前在学习数据库时接触过关系代数,只是在经过很长一段时间不应用之后,不能很快从大脑中将知识调出来,今天就来了个再次学习总结加深自己的印象。
关系代数:是一种抽象的查询语言,用对关系的运算来表达 查询。关系代数运算的是关系,运算结果亦是关系。关系代数的基本关系包括:并、交、差、笛卡尔积、选择、投影、连接、除法运算。由于并、交、差运算很简单,这里不再赘述,只说明了几个容易遗忘和混淆的运算。
1、笛卡尔积
计算两个关系R和S的笛卡尔积,R的元数为r,S的元数为s,则R×S是一个(r+s)元的元组集合,如下例所示:
结果:
由结果分析:笛卡尔积得到的结果元数为r+s即:3+3=6;记录数为:R中的记录数与S中的记录数相乘,即:3×2=6。
2、选择
选择是根据某些条件对关系做水平切割,例如δ2 > '4'(R),表示从R中挑选第二个分量值(也就是R中B列的值)大于4的元组所构成关系。
结果:
3、投影π
投影与选择正好相反,是对关系的一种垂直切割,消去某列,并重新安排列的顺序。投影用(π)表示。例如:π3,1(R)表示的结果如下:
由结果可以看出:查询表达式中的下标可以用数字表示,也可以用列的名字表示,返回列的名字,而其他的列在结果关系中被去掉,也可以通过投影来重新布局关系的排列。
4、连接
连接运算:从两个关系的笛卡尔积中选取属性间满足一定条件的元组,用(R ⋈ S)表示,连接分为两种,一种是等值连接(有的书上写的是连接),另一种是自然连接。等值连接:条件AθB中的θ为‘=’的连接;自然连接:关系R与S选取A、B属性值相等的那些元组。
看个例子就很容易明白了:
等值连接:如下有关系R和S,则是什么呢?
结果:
自然连接:一般自然连接使用在R和S有公共属性时,如果没有公共属性,自然连接就转为笛卡尔积操作。
例如:关系R和S,则自然连接的结果呢?
结果:
5、除法
例子:R÷S
R: S:
结果:
计算过程:
(1)T=π1,2(R),从R中选取除去与S中相同的属性,即选择S#,SName
(2)W=(T ×S)-R,将上面得到的T与S进行笛卡尔积,再减去R,即计算T×S中不在R的元组
(3)V=π1,2(W),从W中选取1,2对应的属性列,即:S#,SName
(4)R ÷ S = T-V
总结:
经过总结之后,发现其实关系之间的运算并不难,关键在于要认真分析,将符号与我们的实际找到联系,只有对各种符号印象深刻之后,这些关系之间的运算也就变得很简单。在平时要多找联系多总结,方是正道。