扩展的关系运算可以从基本的关系运算中导出,主要包括:交、连接、除、广义投影、外连接、聚集函数。
1. 交(Intersection)
关系R与S具有相同的关系模式,关系R与S的交是由属于R同时又属于S的元组构成的集合,关系A与3的交可记为R4S,其形式定义如下:
RflS = {f R/UeS}
2. 连接(Join)
连接分为θ连接、等值连接及自然连接三种。连接运算是从两个关系我和S的笛卡儿积中选取满足条件的元组。因此,可以认为笛卡儿积是无条件连接,其他的连接操作是有条件连接。
1) θ连接
2)等值连接(equijoin)
3)自然连接(Naturaljoin)
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉。
特别需要说明的是:一般连接是从关系的水平方向运算,而自然连接不仅要从关系的水平
方向,而且要从关系的垂直方向运算。因为自然连接要去掉重复属性,如果没有重复属性,那么自然连接就转化为笛卡儿积。
3. 除(Division)
除运算是同时从关系的水平方向和垂直方向进行运算。给定关系R(X,Y)和
s(、z),x、y、z为属性组.R;S应当满足元组在x上的分量值x的象集七包含关系s在属
性组y上投影的集合。其形式定义如下:
4 广义投影(generalized projection)
广义投影运算允许在投影列表中使用算术运算,实现了对投影运算的扩充。
5. 外连接(outer jion)
外连接运算是连接运算的扩展,可以处理缺失的信息。
外连接运算有三种:左外连接、右外连接
和全外连接。
1) 左外连接(leftouterjion) 2X1
左外连接:取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值null填充
所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。对于图7-9的S和SC关系,当我们对其进行左外连接时,其结果如图7-14所示。
2) 右外连接(right outer jion) [XE
右外连接:取出右侧关系中所有与左侧关系中任一元组都不匹配的元组,用空值null填充
所有来自左侧关系的属性,构成新的元组,将其加入自然连接的结果中。对于图7-9的SC和。关系,当我们对其进行右外连接SCXZC时,其结果如图7-15所示。
3)全外连接(fill outer jion) 2XE
全外联接:完成左外连接和右外连接的操作。既填充左侧关系中所有与右侧关系中任一元组都不匹配的元组,又填充右侧关系中所有与左侧关系中任一元组都不匹配的元组,将产生的
6. 聚集函数
聚集运算是关系代数运算中的一个非常重要的扩展。聚集函数输入一个值的集合,返回单—值作为结果。例如,集合{2,4,6,8,10,15}。将聚集函数sum用于该集合时返回和45;将聚集函数avg用于该集合时返回平均值7.5;将聚集函数count用于该集合时返回集合中元数的个数
6;将聚集函数min用于该集合时返回最小值2;将聚集函数max用于该集合时返回最大值15。
需要说明的是,使用聚集函数的集合中,一个值可以出现多次,值出现的顺序是无关紧要的,这样的集合称之为多重集。集合是多重集的一个特例,其中每个值都只出现一次。
但是,有时在计算聚集函数前必须去掉重复值,此时可以将“distinct”用连接符附加在函数名后,如 count-distinct。