关系代数运算
关系运算的参与对象是关系,运算后结果也是关系。在数据库中,关系就是一张张的表。在离散数学中,关系是做为一个个的集合来进行运算的。
代数运算的分类:
传统的集合运算:并、差、交、笛卡儿积、笛卡儿积的逆运算(除)
专门的的关系运算:选择、投影、连接(等值连接、自然连接)
五种基本运算:并、差、笛卡儿积、选择、投影
五种基本操作经过有限次复合的式子称为关系代数表达式
关系运算
并:查询时使用union
RUS:R、S有相同的关系模式
A | B |
---|---|
a | b |
A | B |
---|---|
c | d |
e | f |
A | B |
---|---|
a | b |
c | d |
e | f |
交: 查询时使用intersect 也可以使用笛卡尔积、选择和投影来实现
RS:R、S有相同的关系模式
A | B |
---|---|
a | b |
A | B |
---|---|
c | d |
a | b |
A | B |
---|---|
a | b |
差:查询时使用except
R-S:R、S有相同的的关系模式
A | B |
---|---|
a | b |
A | B |
---|---|
c | d |
a | b |
A | B |
---|---|
c | d |
笛卡儿积
A | B | C | D |
---|---|---|---|
a | b | e | f |
a |
b | g | h |
c | d | r | f |
c |
d | g | h |
选择:选择行(元组),查询时使用条件 where,having语句
投影:选择列(属性)
连接:
自然连接:
A | B | C |
---|---|---|
1 | 2 | 3 |
6 | 7 | 8 |
9 | 7 | 8 |
B | C | D |
---|---|---|
2 | 3 | 4 |
2 | 3 | 5 |
7 | 8 | 10 |
A | B | C | D |
---|---|---|---|
1 | 2 | 3 | 4 |
1 | 2 | 3 | 5 |
6 | 7 | 8 | 10 |
9 | 7 | 8 | 10 |
等值连接:
R.B= S.D
笛卡儿积的逆运算:
传统的解法:
所以笛卡儿积也可以看作选择、投影、笛卡儿积的复合运算
(1)
A | B | C | D |
a | b | c | d |
a | b | e | f |
c | a | c | d |
C | D |
c | d |
e | f |
结果:
A | B |
a | b |
a | b |
c | a |
(2)
A | B | C | D |
a | b | c | d |
a | b | e | f |
a | b | c | d |
a | b | e | f |
c | d | e | f |
c | a | e | f |
A | B | C | D |
c | a | e | f |
(3)
A | B |
c | a |
(4)T-V并去重
A | B |
a | b |
非传统的解法:
(1)找出关系R和关系S中相同的属性,即C、D属性。在关系S中对C、D做投影(即取出C、D列),结果如下:
C | D |
c | d |
e | f |
(2)在被除关系R中与S中不相同的属性是A、B,关系R在属性(X)上做取消重复值的投影为;
A | B |
a | b |
c | a |
(3)求关系R中X属性对应的像集C、D;
C | D |
e | f |
c | d |
C | D |
c | d |
(4)判断包含关系
R除以S其实就是判断关系R中X各个值的像集C、D,的所有的值。对比即可发现:
a和b的像集包含了关系S中属性C、D的所有的值,而c和a只包含了c、d,所以排除到c和a构成的集合。所以最后的结果就是:
A | B |
a | b |