• 关系代数的基本操作
  • 关系代数的拓展操作
  • 关系代数的组合与应用训练
  • 关系代数的复杂拓展操作(选学)

关系代数概述

关系代数运算的特点

  • 基于集合,提供了一系列的关系代数操作:并、差、笛卡尔积、选择、投影和更名等基本操作
  • 以及交、链接和关系除等拓展操作,是一种集合思维的操作语言
  • 关系代数操作以一个或多个关系为输入,结果是一个新的关系
  • 用对关系的运算来表达查询,需要指明所用操作,具有一定的过程性
  • 是一种抽象的语言,是学习其他数据库语言,如SQL等的基础

基本操作

关系代数之基本操作

关系代数运算的约束

并相容性

  • 参与运算的两个关系及其相关属性之间有一定的对应性、可比性或意义关联性

定义
关系R与关系S存在相容性,当且仅当:

  1. 关系R和关系S的属性数目必须相容
  2. 对于任意 i ,关系R的第 i个属性的域必须和关系S的第i个属性的域相同

定义:假设关系R和关系S是并相容的,则关系R与关系S的并运算结果也是一个关系,记作:$R\cup S$,它由或者出现在关系R中,或者出现在关系S中的元组构成。

并运算是将两个关系的元组合并成一个关系,在合并时去掉重复的元组。

定义:假设关系 R 和关系 S 时并相容的,则关系 R 与关系S 的差运算结果也是一个关系,记作:R-S,它由踹向那子啊关系R中,但不出现在关系S中的元组构成。

数学描述:$R-S={t|t\in R ;and; t\not\in S}$,其中 t 是元组

广义笛卡尔积

定义:关系$R(<a_1,a_2,\cdots,a_n>)$ 与关系 $S(<b_1,b_2,\cdots,b_m>)$ 的广义笛卡尔积运算结果也是一个关系,记作:$R\times S$,它由关系R中的元组与关系S的元组进行所有可能的拼接(或串接)构成。

维数是相加
基数是相乘

选择

定义:给定一个关系R,同时给定一个选择的条件condition(简写con),选择运算结果也是一个关系,记作$\sigma_{com}(R)$,它从关系R中选择除满足给定条件的condition的元组构成

运算优先级(从高到低):括弧,比较运算符,非运算,与运算,或运算

投影(Project)

定义:给定一个关系R,投影运算结果也是以一个关系,记作 $\prod_A(R)$,它从关系R中选出属性包含在 A中的列构成.

投影关系,即从给定关系中选出某些列组成新的关系,而选择操作是从给定关系中选出某些行组成新的关系

例如$\prod_{A_3,A_1}(R)$,选取 $A_3,A_1$ 两列的元组,**投影后会自动去掉重复的元组**

交(Intersection)

定义:假设关系R和关系S是并相容的,则关系R与关系S的交运算结果也是一个关系,记作 $R\cap S$,它由同时出现在关系R和关系S中的元组构成

$R\cap S=R-(R-S)=S-(S-R)$

$\theta$-连接(theta-join)

投影与选择操作只是对单个关系(表)进行操作,而实际应用中往往涉及多个表之间的操作,这就需要theta-join操作

定义:给定关系R和关系S,R与S的theta-join运算结果也是一个关系,记作 $R\underset{A\theta B}{\bowtie}S$,它由关系R和关系S的笛卡尔积中,选取R中属性A与S中属性B之间满足 $\theta$ 条件的元组构成

$R\underset{A\theta B}{\bowtie}S=\sigma_{t[A];\theta; s[B]}(R\times S)$

$\rho_{SC1}(SC)$ 表示表更名操作,将表SC更名为SC1,当一个表需要和其自身进行连接运算时,通常要使用更名操作

等值连接就是theta为等号时

自然连接(Natural-Join)

定义:给定关系R和关系S,R与S的自然连接运算结果也是一个关系,记作 $R\bowtie S$,它由关系R和关系S 的笛卡尔积中选取相同属性组B上值相等的元组构成。

自然连接是一种特殊的等值连接。
要求关系R和关系S必须有相同的属性组B,当处于相同属性时,值必须相等才能连接。
要在结果中去掉重复的属性列

复杂拓展操作

除(Division)

除法运算常用于“查询…所有的/全部的…”问题

前提条件:给定关系 $R(A_1,A_2,\cdots,A_n)$ 为 n 度关系,关系 $S(B_1,B_2,\cdots,B_m)$ 为 m 度关系。如果可以进行关系R与关系S的除运算,当且仅当:属性集 ${B_1,B_2,\cdots,B_m}$ 是属性集 ${A_1,A_2,\cdots,A_n}$ 的真子集,即 $m<n$.

定义:关系R和关系S的除运算结果也是一个关系,记作 $R\div S$

$R\div S={t|t\in\prod_{R-S}(R)^\forall u\in S(tu\in R)}$

同时 $R\div S=\prod_{R-S}(R)-\prod_{R-S}((\prod_{R-S}(R)\times S)-R)$

外连接(Outer-Join)

定义:两个关系R和S进行连接时,如果关系R(或S)中的元组在S(或R)中找不到相匹配的元组,则为了避免该元组信息丢失,从而将该元组与 S(或R)中假定存在全为空值得元组形成连接,放置在结果关系中,这种连接称之为外连接(Outer-Join).

外连接的形式:左外连接,右外连接、全外连接

左外连接 = 自然连接(或theta连接)+左侧表中失配的元组
右外连接 = 自然连接(或theta连接)+右侧表中失配的元组
全外连接 = 自然连接(或theta连接)+两侧表中失配的元组

左外连接(Left Outer Join)记为:$R;⟕;S$
右外连接(Right Outer Join)记为:$R;⟖;S$
全外连接(Full Outer Join)记为:$R;⟗;S$

例子:


TEXT

测试MathJax有没有这三个符号

$\leftouterjoin$
$\rightouterjoin$
$\fullouterjoin$