对数据库关系代数中除法运算的理解

一、基本概念

1.象集

给定一个关系R(X,Z),X和Z为属性组,当t[X]=x时,x在R中的象集定义为:
Z x = { t [ Z ] ∣ t ∈ R , t [ X ] = x } Z_x=\{t[Z]|t\in R,t[X]=x\} Zx={t[Z]tR,t[X]=x}
表示R中属性组X上值为x的诸元组在Z上分量的集合。

例:
有如下表R

X取值 Z取值
x 1 x_1 x1 Z 2 Z_2 Z2
x 1 x_1 x1 Z 2 Z_2 Z2
x 1 x_1 x1 Z 3 Z_3 Z3
x 2 x_2 x2 Z 2 Z_2 Z2
x 2 x_2 x2 Z 3 Z_3 Z3
x 3 x_3 x3 Z 1 Z_1 Z1
x 3 x_3 x3 Z 3 Z_3 Z3


x 1 x_1 x1在R中的象集 Z x 1 = { Z 1 , Z 2 , Z 3 } Z_{x1}=\{Z_1,Z_2,Z_3\} Zx1={Z1,Z2,Z3}
x 2 x_2 x2在R中的象集 Z x 2 = { Z 2 , Z 3 } Z_{x2}=\{Z_2,Z_3\} Zx2={Z2,Z3}
x 3 x_3 x3在R中的象集 Z x 3 = { Z 1 , Z 3 } Z_{x3}=\{Z_1,Z_3\} Zx3={Z1,Z3}

2.除法运算

R ÷ S = { t r [ X ] ∣ t r ∈ R ∧ Π Y ( S ) ⊆ Y x } \div S=\{t_r[X] |t_r\in R\wedge \Pi_Y(S)\subseteq Y_x\} ÷S={tr[X]trRΠY(S)Yx}

除运算的结果为P(X)
P是R中满足满足以下条件的元组在X属性上的投影:元组在X上分量值x的象集 Y x Y_x Yx包含S在Y上投影的集合。

这个定义看起来比较难以理解,因此下面给出几个例子。

二、除法运算的例子(通过例子更容易理解)

例一

对数据库关系代数中除法运算的理解_第1张图片
R和S共有的属性为B和C,在S中(B,C)组合有三种,即 ( b 1 , c 2 ) , ( b 2 , c 1 ) , ( b 2 , c 3 ) (b_1,c_2),(b_2,c_1),(b_2,c_3) (b1,c2),(b2,c1),(b2,c3),因此接下来就要找到R中象集为这三个的元素A。
R中
a 1 a_1 a1的象集为 { ( b 1 , c 2 ) , ( b 2 , c 3 ) , ( b 2 , c 1 ) } \{(b_1,c_2),(b_2,c_3),(b_2,c_1)\} {(b1,c2),(b2c3),(b2,c1)}
a 2 a_2 a2的象集为 { ( b 3 , c 7 ) , ( b 2 , c 3 ) } \{(b_3,c_7),(b_2,c_3)\} {(b3,c7),(b2c3)}
a 3 a_3 a3的象集为 { ( b 4 , c 6 ) } \{(b_4,c_6)\} {(b4,c6)}
a 4 a_4 a4的象集为 { ( b 6 , c 6 ) } \{(b_6,c_6)\} {(b6,c6)}
由于只有 a 1 a_1 a1的象集包含了S在(B,C)属性组上的投影,所以 R ÷ S = { a 1 } R\div S=\{a_1\} R÷S={a1}

例二

假设有如下R表:

姓名 性别 班级 年龄
A 1班 14
B 1班 15
C 2班 14
D 2班 15
E 2班 15

有如下S表:

性别 班级
2班

R ÷ S R\div S R÷S 的结果如下:

姓名 年龄
C 14
D 15

即我们可以将S看作是一个条件,从R中筛选出满足条件S的元组,同时,除去R中与S共有的属性(列)
例如上面一个例子就是选择出既是2班的,性别又为男的所有学生的姓名和年龄。

参考资料

1.《数据库系统概论》王珊,萨师煊
2. 数据库-——关系代数的除法运算最白话解析 by lmo星星呐

你可能感兴趣的:(数据库,数据库)