关系数据库之关系代数

关系数据库的关系代数运算符有8种,分为两大类,如下表所示:

分类 运算符 含义
传统关系运算符
× × 笛卡尔积
专用关系运算符 σ 选择
投影
连接
÷

1 传统的关系运算

传统的集合运算是二元运算,包括并、差、交、笛卡尔积4种运算。设有两关系R、S。

1.1 并 union

关系R与关系S的并记作: R S = { t     t R t S } R\cup S=\{t\ |\ t\in R \lor t\in S\} 合并R和S所有元组

1.2 交 intersection

关系R与关系S的交记作: R S = { t     t R t S } R\cap S=\{t\ |\ t\in R \land t\in S\} 关系的交也可用差来表示: R S = R ( R S ) R\cap S=R-(R-S) 取出R与S中共有的元组

1.3 差 except

关系R与关系S的差记作: R S = { t     t R t S } R- S=\{t\ |\ t\in R \land t\notin S\} 去掉R中属于S的元素

1.4 笛卡尔积 cartesian product

关系R与关系S的并记作: R × S = { t R t S     t R R t S S } R\times S=\{\overset{\large\frown}{t_Rt_S}\ |\ t_R\in R \land t_S\in S\} 这里的笛卡尔积指的是广义笛卡尔积,对元组进行笛卡尔积有点类似于小学数学课上学过的握手游戏。

对于 R × S R\times S 来说,表示每个R中的元组都要与S中的元组连接一次
在这里插入图片描述

1.5 传统关系运算举例

R R :

color pattern size
A 5
B 10
B 5

S S :

color pattern size
B 10
C 10
B 5

则有:

  • R R S S 的并 R S R\cup S :
color pattern size
A 5
B 10
B 5
C 10
  • R R S S 的交 R S R\cap S :
color pattern size
B 10
B 5
  • R R S S 的差 R S R- S :
color pattern size
A 5
  • R R S S 的笛卡尔积 R × S R\times S
R.color R.pattern R.size S.color S.pattern S.size
A 5 B 10
A 5 C 10
A 5 B 5
B 10 B 10
B 10 C 10
B 10 B 5
B 5 B 10
B 5 C 10
B 5 B 5

2 专用的关系运算

专用的关系运算符包括选择、投影、连接、除运算

在具体介绍运算符之前为了方便表达,先引入几个符号:

  • R R :关系。 R = { r 1 , r 2 , . . . , r n } R=\{r_1,r_2,...,r_n\} ,其中 r i r_i 表示 R R 中的列。类似的, S S 等符号也代表一个关系
  • t t :元组。 t t 代表 R R 的某一行,称 t t 为元组。
  • t [ r i ] t[r_i] :分量。 t [ r i ] t[r_i] 表示 t t 行中 r i r_i 列的值,称 t [ r i ] t[r_i] 为分量。
  • Z t [ r i ] Z_{t[r_i]} :象集。 Z t [ r i ] Z_{t[r_i]} 表示 t t 行中除 r i r_i 列外其他列的值,称 Z t [ r i ] Z_{t[r_i]} 为象集。
  • θ \theta :比较运算符。比较运算符有6种,分别是 = = > > \geq < < \leq < > <>
2.1 选择 selection

选择关系运算记作: σ r i θ t [ r i ] ( R ) = {   t     t R r i θ t [ r i ] = t r u e } \sigma_{r_i\theta t[r_i]}(R)=\{\ t\ |\ t\in R\land r_i\theta t[r_i]=true\} 即取出 R R 表中 r i r_i 列的值与 t [ r i ] t[r_i] 具有 θ \theta 关系的行
例如:
σ S a g e < 20 ( S t u d e n t ) \sigma_{Sage<20}(Student) 表示取出 S t u d e n t Student 表中 S a g e Sage 列值小于数值20的行
σ S n a m e = ( S t u d e n t ) \sigma_{Sname='李勇'}(Student) 表示取出 S t u d e n t Student 表中 S n a m e Sname 列值等于字符串李勇的行

2.2 投影 projection

投影关系运算记作:   r i ( R ) = { t [ r i ]     t R } \prod\ _{r_i}(R)=\{t[r_i]\ |\ t\in R\} 即取出 R R 表中的 r i r_i
例如:
  S a g e ( S t u d e n t ) \prod\ _{Sage}(Student) 表示从表 S t u d e n t Student 取出 S a g e Sage 列形成新的关系
  S a g e , S n a m e ( S t u d e n t ) \prod\ _{Sage,Sname}(Student) 表示从表 S t u d e n t Student 取出 S a g e Sage S n a m e Sname 列形成新的关系

2.3 连接 join

连接关系运算记作: r i θ r j R S = { t R t S   t R R t S R t R [ r i ] θ t S [ r j ]   } \overset{R\Join S}{_{r_{i}\theta r_{j}}}=\{\overset{\large\frown}{t_Rt_S\ |t_R\in R \land t_S\in R\land t_R[r_i]\theta t_S[r_j]\ }\} 即选取 R R S S 的笛卡尔积中 t R [ r i ] t_R[r_i] t S [ r j ] t_S[r_j] 满足关系 θ \theta 的行

连接有四种特殊形式:

  • 非等值连接。就是指 θ \theta 不为等号的连接,例如 r i < r j R S \overset{R\Join S}{_{r_{i}< r_{j}}} 表示连接满足 R . r i < S . r j R.r_i<S.r_j 关系的 R R S S 中的元组
  • 等值连接。就是指 θ \theta 为等号的连接,例如 r i = r j R S \overset{R\Join S}{_{r_{i}=r_{j}}} 表示连接满足 R . r i = S . r j R.r_i=S.r_j 关系的 R R S S 中的元组
  • 自然连接。自然连接是一种特殊的等值连接,就是 r i r_i r j r_j 的属性名一致且值相等的等值连接,并在连接结果中去掉重复列,而在一般的等值连接中只需要满足 r i r_i r j r_j 的值相等即可,记作 R S R\Join S
  • 外连接。外连接是一种特殊的自然连接,在自然连接的过程中,若连接后元组里的某个属性出现Null值就会舍去该元组,而外连接则会保留该元组。外连接分为三种:
  • 1、外连接。保留两边关系自然连接后出现Null值属性的元组,记作 R : : S R:\Join: S
  • 2、左外连接。保留左边关系自然连接后出现Null值属性的元组,记作 R : S R:\Join S
  • 3、右外连接。保留右边关系自然连接后出现Null值属性的元组,记作 R : S R\Join: S
2.4 除 division

除关系运算记作: R ÷ S = {   t R [ r i ]     t R R   r j ( S ) r j   t R [ r i ]   } R\div S=\{\ t_R[r_i]\ |\ t_R\in R\land\prod\ _{r_j}(S)\subseteq r_{j\ t_R[r_i]}\ \} 即取出 R R 中使 R . r j R.r_j 完全等于 S . r j S.r_j R . r i R.r_i 元组
例如:
  S n a m e , S a g e ( R ) ÷   S a g e S \prod\ _{Sname,Sage}(R)\div \prod\ _{Sage}S 表示取 R R 投影中使 R . S a g e R.Sage 完全等于 S . a g e S.age R . n a m e R.name 元组,形成新的关系

2.5 专用关系运算举例

R R :

color pattern size
A 5
B 6
C 8
D 12

S S :

pattern weight
A 3
B 7
C 10
C 2
E 2
  • R R 的选择, σ c o l o r = ( R ) \sigma_{color='红'}(R) ,取出 R R 表中 c o l o r color 列值为字符串’红’的行形成新的关系:
color pattern size
A 5
B 6
  • R R 的投影,   c o l o r , s i z e ( R ) \prod\ _{color,size}(R) ,从表 R R 取出 c o l o r , s i z e color,size 列形成新的关系:
color size
5
6
8
12
  • R R S S 的连接

非等值连接, s i z e < w e i g h t R S \overset{R\Join S}{_{size< weight}} ,连接满足 s i z e < w e i g h t size< weight 关系的 R R S S 中的元组

color R.pattern size S.pattern weight
A 5 B 7
A 5 C 10
B 6 B 7
B 6 C 10
C 8 C 10

等值连接, R . p a t t e r n = S . p a t t e r n R S \overset{R\Join S}{_{R.pattern= S.pattern}} ,连接满足 R . p a t t e r n = S . p a t t e r n R.pattern= S.pattern 关系的 R R S S 中的元组

color R.pattern size S.pattern weight
A 5 A 3
B 6 B 7
C 8 C 10
C 8 C 2

自然连接, R S R\Join S ,连接 R R S S 中同名属性值相等的元组:

color pattern size weight
A 5 3
B 6 7
C 8 10
C 8 2

外连接, R : : S R:\Join: S ,保留两边关系自然连接后出现Null值属性的元组:

color pattern size weight
A 5 3
B 6 7
C 8 10
C 8 2
D 12 null
null E null 2

左外连接, R : S R:\Join S ,保留左边关系自然连接后出现Null值属性的元组:

color pattern size weight
A 5 3
B 6 7
C 8 10
C 8 2
D 12 null

右外连接, R : S R\Join: S ,保留右边关系自然连接后出现Null值属性的元组:

color pattern size weight
A 5 3
B 6 7
C 8 10
C 8 2
null E null 2
  • R R 的除运算
    设有除关系 K K
color size
5
6

R ÷ K R\div K 表示取出 R R 中使 R . c o l o r R.color 完全等于 S . c o l o r S.color R . s i z e R.size 完全等于 S . s i z e S.size R . p a r t t e n R.partten 元组

partten
A
发布了208 篇原创文章 · 获赞 841 · 访问量 121万+

猜你喜欢

转载自blog.csdn.net/baishuiniyaonulia/article/details/102389204