目录

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

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

一、基本概念

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}

Z

x

=

{

t

[

Z

]

t

R

,

t

[

X

]

=

x

}

表示R中属性组X上值为x的诸元组在Z上分量的集合。

例:

有如下表R

X取值Z取值
x 1 x_1 x 1 ​Z 2 Z_2 Z 2 ​
x 1 x_1 x 1 ​Z 2 Z_2 Z 2 ​
x 1 x_1 x 1 ​Z 3 Z_3 Z 3 ​
x 2 x_2 x 2 ​Z 2 Z_2 Z 2 ​
x 2 x_2 x 2 ​Z 3 Z_3 Z 3 ​
x 3 x_3 x 3 ​Z 1 Z_1 Z 1 ​
x 3 x_3 x 3 ​Z 3 Z_3 Z 3 ​

x 1 x_1

x

1

在R中的象集

Z x 1

{ Z 1 , Z 2 , Z 3 } Z_{x1}={Z_1,Z_2,Z_3}

Z

x

1

=

{

Z

1

,

Z

2

,

Z

3

}

x 2 x_2

x

2

在R中的象集

Z x 2

{ Z 2 , Z 3 } Z_{x2}={Z_2,Z_3}

Z

x

2

=

{

Z

2

,

Z

3

}

x 3 x_3

x

3

在R中的象集

Z x 3

{ Z 1 , Z 3 } Z_{x3}={Z_1,Z_3}

Z

x

3

=

{

Z

1

,

Z

3

}

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

=

{

t

r

[

X

]

t

r

R

Π

Y

(

S

)

Y

x

}

除运算的结果为P(X)

P是R中满足满足以下条件的元组在X属性上的投影:元组在X上分量值x的象集

Y x Y_x

Y

x

包含S在Y上投影的集合。

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

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

例一

https://i-blog.csdnimg.cn/blog_migrate/12267912e1d3f2df586c3f65fc3eee63.jpeg#pic_center

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)

(

b

1

,

c

2

)

,

(

b

2

,

c

1

)

,

(

b

2

,

c

3

) ,因此接下来就要找到R中象集为这三个的元素A。

R中

a 1 a_1

a

1

的象集为

{ ( b 1 , c 2 ) , ( b 2 , c 3 ) , ( b 2 , c 1 ) } {(b_1,c_2),(b_2,c_3),(b_2,c_1)}

{(

b

1

,

c

2

)

,

(

b

2

c

3

)

,

(

b

2

,

c

1

)}

a 2 a_2

a

2

的象集为

{ ( b 3 , c 7 ) , ( b 2 , c 3 ) } {(b_3,c_7),(b_2,c_3)}

{(

b

3

,

c

7

)

,

(

b

2

c

3

)}

a 3 a_3

a

3

的象集为

{ ( b 4 , c 6 ) } {(b_4,c_6)}

{(

b

4

,

c

6

)}

a 4 a_4

a

4

的象集为

{ ( b 6 , c 6 ) } {(b_6,c_6)}

{(

b

6

,

c

6

)}

由于 **只有

a 1 a_1

a

1

的象集包含了S在(B,C)属性组上的投影** ,所以

R ÷ S

{ a 1 } R\div S={a_1}

R

÷

S

=

{

a

1

}

例二

假设有如下R表:

姓名性别班级年龄
A1班14
B1班15
C2班14
D2班15
E2班15

有如下S表:

性别班级
2班

R ÷ S R\div S

R

÷

S 的结果如下:

姓名年龄
C14
D15

即我们可以将S看作是一个条件,从R中筛选出满足条件S的元组,同时,除去R中与S共有的属性(列)

例如上面一个例子就是选择出既是2班的,性别又为男的所有学生的姓名和年龄。

参考资料

1.《数据库系统概论》王珊,萨师煊