关系代数运算

关系代数运算

   关系运算的参与对象是关系,运算后结果也是关系。在数据库中,关系就是一张张的表。在离散数学中,关系是做为一个个的集合来进行运算的。

代数运算的分类:

传统的集合运算:并、差、交、笛卡儿积、笛卡儿积的逆运算(除)

专门的的关系运算:选择、投影、连接(等值连接、自然连接)

五种基本运算:并、差、笛卡儿积、选择、投影

五种基本操作经过有限次复合的式子称为关系代数表达式

关系运算

并:查询时使用union

RUS:R、S有相同的关系模式

R
A B
a b
S
A B
c d
e f
RUS
A B
a b
c d
e f

交: 查询时使用intersect  也可以使用笛卡尔积、选择和投影来实现

R\bigcapS:R、S有相同的关系模式

R
A B
a b
S
A B
c d
a b
RnS
A B
a b

差:查询时使用except

R-S:R、S有相同的的关系模式

S
A B
a b
R
A B
c d
a b
R-S
A B
c d

笛卡儿积

RxS
A B C D
a b e f

a

b g h
c d r f

c

d g h

选择:选择行(元组),查询时使用条件 where,having语句

投影:选择列(属性)

连接:

      自然连接:

U
A B C
1 2 3
6 7 8
9 7 8
V
B C D
2 3 4
2 3 5
7 8 10
UnV
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)

R
A B C D
a b c d
a b e f
c a c d
S
C D
c d
e f

    结果:

T
A B
a b
a b
c a

  (2)

TxS
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
W
A B C D
c a e f

  (3)

V
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)上做取消重复值的投影为;

          

X
A B
a b
c a

       (3)求关系R中X属性对应的像集C、D;

a、b对应的像集
C D
e f
c d
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

猜你喜欢

转载自blog.csdn.net/qq_37635373/article/details/86737921