4、除(Division): 除操作是同时从行和列的角度进行运算。 定义:象集(Image Set) 给定关系R(X , Z), X, Z是属性组,x是X上的取值,定义当t[X]=x时,x在R中的象集为: 即从R中选出在X上取值为x的元组,去掉X上的分量,只留Z上的分量。 例如,图3-10中,a)为学生选课表R(X姓名,Z课程),X上的取值有x=张会,x=张会在选课表R中的象集为表b)的内容,张会同学所选修的全部课程。 图3-10 象集示例 定义:除 给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组,R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X属性列上分量值x的象集包含S在Y上投影的集合。记作: 其中为x在R中的象集,x= 例如,有关系R和S分别为图3-11中的a)和b),R/S的结果为图3-11c)。除运算过程分析如下:在关系R中,三个属性分为学生和(教师,课程)两组。在关系S中,三个属性分为(教师,课程)和学分两组。计算R/S,实际上是要从学生选修的教师和课程关系中,找出选课符合关系S中所以教师和课程的元组集合的学生。在关系R中学生有4个取值:{张会、李学、王大、赵四}。其中 张会的象集为(教师和课程集合):{(t1,c2), (t2,c3), (t2,c1)} 李学的象集为(教师和课程集合):{(t3,c7), (t2,c3)} 王大的象集为(教师和课程集合):{(t4,c6)} 赵四的象集为(教师和课程集合):{(t6,c6)} S在(教师、课程)上的投影为{(b1,c2), (b2,c3), (b2,c1)}。在R中,分析前面的四个象集,只有张会的象集(教师、课程) 张会包含了S在(教师、课程)属性组上的投影,所以,R÷S = {张会}(就是说只有张会一个学生选择了关系S中的教师和课程集合) 图3-11 除运算示例
|