在介绍关系代数的除法以前我们必须熟悉象集的概念
象集
给定一个关系R(X,Z),X 和Z 为属性组。当 t[X] = x 时,x 在 R 中的象集(Images Set)为:
Zx= { t[Z] | t ∈R,t[X] = x},表示R中属性组X上值为x的诸元组在属性组Z上分量的集合。
S在B2上的象集为上图右方的关系。
除法
R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组tr在X上分量值tr [X]的象集Ytr [X]包含S在Y上投影的集合。
R
÷
÷
÷S = { tr [X] | tr∈R ∧ Ytr[X] ⊆ πY (S) }
其中: Ytr[X] : tr [X]在R中的象集
R中a1的象集包含S在B、C上的投影,R
÷
÷
÷S为新关系关系模式为P(A),关系的值为{a1}
求解步骤
找出关系R和关系S中相同的属性,即Y属性。
被除关系R中与S中不相同的属性列是X ,关系R在属性(X)上做取消重复值的投影。
求关系R中X属性对应的像集Y。
判断包含关系;包含则符合,否则不符合
示例
选课关系SC如下
求选修了95002学生所选全部课程的学生的学号,这个时候用除法。用关系代数可以表示为:
πsno,cno (S)={(95001,c1),(95001,c2),(95001,c5),(95002,c2),(95002,c5)}
πcno (σsno=95002)={{c2},{c5}}
πsno,cno (S)
÷
÷
÷={95001,95002}
**用SQL语句表示为:**找出这些学生的学号,这些学生所选的课程包含了95002学生所选的全部课程。