一、基本概念
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]∣t∈R,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]∣tr∈R∧ΠY(S)⊆Yx}
除运算的结果为P(X)
P是R中满足满足以下条件的元组在X属性上的投影:元组在X上分量值x的象集 Y x Y_x Yx包含S在Y上投影的集合。
这个定义看起来比较难以理解,因此下面给出几个例子。
二、除法运算的例子(通过例子更容易理解)
例一
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),(b2,c3),(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),(b2,c3)}
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星星呐