关系数据库--关系代数

2018-08-28  本文已影响153人  PC_Repair

关系代数

关系代数是以关系为运算对象的一组高级运算的集合。由于关系定义为属性个数相同的元组的集合,因此集合代数的操作就可以引入到关系代数中。关系代数中的操作可以分为两类:传统的关系操作:并、差、交、笛卡尔积(乘)、笛卡尔积的逆运算(除);扩充的关系操作:对关系进行垂直分割(投影)、水平分割(选择)、关系的结合(连接、自然连接)等。

注:并、差、交 3个操作需要关系R、S的属性相同才能进行(即R中的属性为A、B、C,S中的属性也为A、B、C才可以)

五个基本的关系代数操作:并、差、笛卡尔积、投影、选择

关系例子如下:

关系R:

A B C
1 2 3
4 5 6
7 8 9

关系S:

A B C
2 4 6
4 5 6
A B C
1 2 3
4 5 6
7 8 9
2 4 6

注:无重复元组

A B C
1 2 3
7 8 9

注:在关系R的基础上减去R中存在且S中存在的元组

R.A R.B R.C S.A S.B S.C
1 2 3 2 4 6
1 2 3 4 5 6
4 5 6 2 4 6
4 5 6 4 5 6
7 8 9 2 4 6
7 8 9 4 5 6

注:关系R与关系S的属性名可以不同

C A
3 1
6 4
9 7
A B C
4 5 6
7 8 9

剩余操作:交、除、连接:

A B C
4 5 6
A B C D
a b c d
a b e f
b c e f
e d c d
e d e f
a b d e

关系S_:

C D
c d
e f

R_÷S_

A B
a b
e d

运算过程:因为C, D是关系S中的两个属性, 因此在R集合对除了C, D的属性, 即A, B两属性进行投影, 得到a, b; b, c; e, d;这三组, 然后用这个结果与关系S进行笛卡尔积运算, 发现b c c d这组在关系R中没有, 其余a, b; e, d; 做的运算在R中存在. 因此最后结果为a, b; e, d;

关系R_:

A B C
2 4 6
3 5 7
4 6 8

关系S_:

B C D
4 6 8
5 6 7
4 6 2
6 8 5

自然连接:只返回两个表中联结字段相等的行

A B C D
2 4 6 8
2 4 6 2
4 6 8 5

左连接:返回包括左表中的所有记录和右表中联结字段相等的记录,不相等则用null表示。

A B C D
2 4 6 8
2 4 6 2
4 6 8 5
3 7 5 null

右连接:返回包括右表中的所有记录和左表中联结字段相等的记录,不相等则用null表示。

A B C D
2 4 6 8
2 4 6 2
4 6 8 5
null 5 6 7

外连接:左连接+右连接(或者说并)

A B C D
2 4 6 8
2 4 6 2
4 6 8 5
3 5 7 null
null 5 6 7

注:R(⋈)S,R与S的先后顺序

上一篇下一篇

猜你喜欢

热点阅读