|
|
知识路径: > 数据库技术 > 关系数据库 > 关系运算 > 关系代数运算及关系代数表达式 >
|
|
被考次数:14次
|
|
被考频率:
高频率
|
|
总体答错率:
48%
|
|
知识难度系数:
|
|
考试要求:
掌握
|
|
相关知识点:7个
|
|
|
|
扩展的关系运算可以从基本的关系运算中导出,主要包括:交、连接、除、广义投影、外连接、聚集函数。
|
|
|
|
关系R与S具有相同的关系模式,关系R与S的交是由属于R同时又属于S的元组构成的集合,关系R与S的交可记为R∩S,其形式定义如下:
|
|
|
|
显然,R∩S=R-(R-S),或者R∩S=S-(S-R)。
|
|
|
|
|
|
连接分为θ连接、等值连接及自然连接三种。连接运算是从两个关系R和S的笛卡儿积中选取满足条件的元组。因此,可以认为笛卡儿积是无条件连接,其他的连接操作是有条件连接。θ连接
|
|
|
θ连接是从R与S的笛卡儿积中选取属性间满足一定条件的元组。其形式定义如下:
|
|
|
|
其中:'XθY'为连接的条件,θ是比较运算符,X和Y分别为R和S上度数相等,且可比的属性组。tn[X]表示R中tn元组的相应于属性X的一个分量。tm[Y]表示S中tm元组的相应于属性Y的一个分量。需要说明的是:
|
|
|
|
|
其中:i=1,2,3,…,n,j=1,2,3,…,m,'iθj'的含义为从两个关系R和S中选取R的第i列和S的第j列之间满足θ运算的元组进行连接。
|
|
|
.θ连接可以由基本的关系运算笛卡儿积和选取运算导出。因此θ连接可表示为:
|
|
|
|
|
当θ为“=”时,称之为等值连接,记为。其形式定义如下:
|
|
|
|
|
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉。
|
|
|
若tn表示R关系的元组变量,tm表示S关系的元组变量;R和S具有相同的属性组B,且B=(B1,B2,…,BK);并假定R关系的属性为A1,A2,…,An-k,B1,B2,…,Bk,S关系的属性为B1,B2,…,BK,BK+1,BK+2,…,Bm;为S的元组变量tm去掉重复属性B所组成的新的元组变量为。自然连接可以记为,其形式定义如下:
|
|
|
|
自然连接可以由基本的关系运算笛卡儿积和选取运算导出,因此自然连接可表示为:
|
|
|
|
特别需要说明的是:一般连接是从关系的水平方向运算,而自然连接不仅要从关系的水平方向,而且要从关系的垂直方向运算。因为自然连接要去掉重复属性,如果没有重复属性,那么自然连接就转化为笛卡儿积。
|
|
|
|
除运算是同时从关系的水平方向和垂直方向进行运算。给定关系R(X,Y)和S(Y,Z),X、Y、Z为属性组。R÷S应当满足元组在X上的分量值x的象集Yx包含关系S在属性组Y上投影的集合。其形式定义如下:
|
|
|
|
其中:Yx为x在R中的象集,x=tn[X]。且R÷S的结果集的属性组为X。
|
|
|
广义投影(generalized projection)
|
|
|
广义投影运算允许在投影列表中使用算术运算,实现了对投影运算的扩充。
|
|
|
若有关系R,条件F1,F2,…,Fn中的每一个都是涉及R中常量和属性的算术表达式,那么广义投影运算的形式定义为:。
|
|
|
|
|
|
外连接运算是连接运算的扩展,可以处理缺失的信息。对于上图的S和SC关系,当进行的自然连接时,其结果如下图所示。
|
|
|
|
|
从上图可以看出S与SC的自然连接的结果丢失了黎明、刘明远、赵国庆的信息。可是,使用外连接就可以避免这样的信息丢失。外连接运算有三种:左外连接、右外连接和全外连接。
|
|
|
左外连接(left outer jion)
|
|
|
|
|
左外连接:取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值null填充所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。对于上图的S和SC关系,当我们对其进行左外连接时,其结果如下图所示。
|
|
|
|
|
右外连接(right outer jion)
|
|
|
|
|
右外连接:取出右侧关系中所有与左侧关系中任一元组都不匹配的元组,用空值null填充所有来自左侧关系的属性,构成新的元组,将其加入自然连接的结果中。对于上图的SC和C关系,当我们对其进行右外连接时,其结果如下图所示。
|
|
|
|
|
全外连接(full outer jion)
|
|
|
全外联接:完成左外连接和右外连接的操作。既填充左侧关系中所有与右侧关系中任一元组都不匹配的元组,又填充右侧关系中所有与左侧关系中任一元组都不匹配的元组,将产生的新元组加入自然连接的结果中。
|
|
|
|
聚集运算是关系代数运算中的一个非常重要的扩展。聚集函数输入一个值的集合,返回单一值作为结果。例如,集合{2,4,6,8,10,15}。将聚集函数sum用于该集合时返回和45;将聚集函数avg用于该集合时返回平均值7.5;将聚集函数count用于该集合时返回集合中元数的个数6;将聚集函数min用于该集合时返回最小值2;将聚集函数max用于该集合时返回最大值15。
|
|
|
需要说明的是,使用聚集函数的集合中,一个值可以出现多次,值出现的顺序是无关紧要的,这样的集合称之为多重集。集合是多重集的一个特例,其中每个值都只出现一次。
|
|
|
但是,有时在计算聚集函数前必须去掉重复值,此时可以将“distinct”用连接符附加在函数名后,如count-distinct。
|
|
|