关系代数
关系代数是以关系为运算对象的一组高级运算的集合。由于关系定义为属性个数相同的元组的集合,因此集合代数的操作就可以引入到关系代数中。关系代数中的操作可以分为两类:传统的关系操作:并、差、交、笛卡尔积(乘)、笛卡尔积的逆运算(除);扩充的关系操作:对关系进行垂直分割(投影)、水平分割(选择)、关系的结合(连接、自然连接)等。
注:并、差、交 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 |
- RUS(并)
A | B | C |
---|---|---|
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
2 | 4 | 6 |
注:无重复元组
- R-S(差)
A | B | C |
---|---|---|
1 | 2 | 3 |
7 | 8 | 9 |
注:在关系R的基础上减去R中存在且S中存在的元组
- 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(R) (C,A在关系R上的投影)
C | A |
---|---|
3 | 1 |
6 | 4 |
9 | 7 |
- σB>'4'(R)(在关系R上选择B大于4的元组)
A | B | C |
---|---|---|
4 | 5 | 6 |
7 | 8 | 9 |
剩余操作:交、除、连接:
- R∩S(R与S的交集)
A | B | C |
---|---|---|
4 | 5 | 6 |
-
R_÷S_(除)
关系R_:
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的先后顺序