除运算
非传统的集合运算
除运算是一种非传统的集合运算,是广义笛卡儿积的逆运算。设有两个关系R和关系S,其元数分别为n和m(n>m>0),则R和S进行除法的结果记为P=R÷S,其中P是一个元组数最大为n-m(有重复需去掉重复项)的关系且满足以下性质:P中的每个元组u与R中每个元组v所组成的元组(u,v)不在关系S中。
定义
给定关系R(X,Y)和S(Y,Z),其中X、Y、Z是属性组,做除运算的前提是两个关系具有相同的属性或属性组。可以看出关系R和关系S的相同属性组是Y。R中的Y与S中的可以有不同的属性名,但必须出自相同的域集(相同的数据类型)。
以下根据像集来定义:关系R除以关系S是一个新关系P(X),P是R中满足下列条件的元组:在X上分量值x的像集Yx包含S在Y上投影的集合。其中Yx为值x在R中的像集,有x=tr[x]。
R与S的除运算为:R÷S={tr[X]|tr∈RΛΠY(S)⊆Yx}
运算的结果是为了找出来tr[x],tr∈表示tr的条件是它本身属于R,πY(S)表示而且tr属于S关系对于Y属性组的投影,⊆Yx表示还要包含于分量值x的像集Yx。x=tr[x]表示运算后发现要找出来的关系组就是在X上的分量值x。
除操作是同时从行和列角度进行运算。在进行除运算时,将被除关系R的属性分成两部分:与除关系相同的部分Y和不同的部分X。在被除关系中按X分组,即相同的X值的元组分为一组。出发的运算是求包括除关系中全部Y值的组,这些族中的X将做为除结果的元组。
像集
当t[X]=x时,x在R中的象集(Images Set)为:
Zx={ t[Z] | t ∈ R,t[X]=x }
它表示R中属性组为X上值为x的诸元组在Z上分量的集合,实际上就是所有值等于x的元组(或记录),然后在Z上的投影。
计算步骤
计算关系R除以关系S的步骤
性质
两个关系的除法运算可表示为:
R÷S=Πx(R)-Πx((Πx(R)×S)-R)
示例
设关系R、S分别如下表所示。
a1在R中的象集为{(b1,c2),(b2,c3),(b2,c1)}
a2在R中的象集为{(b3,c7), (b2,c3)}
a3在R中的象集为{(b4,c6)}
a4在R中的象集为{(b6,c6)}
S在(B,C)上的投影为{(b1,c2),(b2,c1),(b2,c3)},所以只有a1的像集(B,C)a1包含S在(B,C)属性组上的投影,即:R÷S={a1}
应用
查询至少选修1号课程和3号课程的学生号码。
首先建立一个临时关系K,然后求ΠSno,Cno(SC)÷K。这里先求投影是为了简便运算书写,直接相除仍然包含K,有一样的结果。
求解过程与示例类似,先对SC关系在(Sno,Cno)属性上投影,然后逐一求出每一学生(Sno)的像集,一次检查这些像集是否包含K。
结果为{201215121}
参考资料
最新修订时间:2024-12-19 11:17
目录
概述
定义
参考资料