关系代数是实现关系操作的基本表示方法,关系代数运算按运符的不同分为传统的集合运算和专门的关系运算。专门的关系运算包括投影、选择、连接和除法运算,最后学习的运算是除法运算。
一、除法运算的定义
给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。
R与S的除运算得到一个新的关系P(X),
P是R中满足下列条件的元组在X属性列上的投影:
R中元组在X上分量值x的象集Yx包含S在Y上投影的集合,
象集:
给定一个关系R(X,Y),X和Y为属性组。定义,当t[X]=x时,x在R中的象集为:
它表示R中属性组X上值为x的诸元组在Y上各分量的集合。
如下图所示,除法运算具体实例:R是选课关系,S是课程关系,a、b、c、d四个属性分别是学号、姓名、课程号、课程名,C、D就是课程号、课程名。
如果事先不知道课程表中的数据和选课表中的数据有哪些课、有哪些选课记录,那么,R÷S的结果是选了全部课程的学生的学号和姓名。
除法运算适合表达全部的问题。
二、除法运算的实现
除法运算是组合运算,可以用其它基本关系运算实现。R÷S还可表示为
求R:S的操作步骤如下:
如下图所示将除法运算分解:
第一步:关系R做第一列到第r-s列的投影,取中间结果赋值为T;
第二步:用关系T和S做笛卡尔积,再减去关系R,得到的结果为W;
第三步:对W做第一列到第r-s列的投影,结果赋值为V;
第四步:R÷S的结果就为T-V的结果,即最终结果。
R(X,Y)能被S(Y,Z)除的充分必要条件:
(1)R中包含S中的部分属性(R与S中的属性可以不同名,但必须有相同的值域);
(2)R中有一些属性不出现在S中。
例题:已知集合R和集合S,求R÷S的结果。
第一步:对于关系R做投影,对前两列的投影,它的结果是将前两列投影出来;
第二步:然后和S做笛卡尔积,其结果再减去关系R,也就是说,对A、B的投影跟C、D做一个笛卡尔积,再把R减去,得出的b、c、c、d数据就是W是值;
第三步:再对W做A、B这两列的投影,结果就是b、c,也就是V的结果;
第四步:最后再把b、c减去,得出的结果就是a、b、e、d。