数据库系统(4)-关系模型之关系代数
- 关系代数的基本操作
- 关系代数的拓展操作
- 关系代数的组合与应用训练
- 关系代数的复杂拓展操作(选学)
关系代数概述
关系代数运算的特点
- 基于集合,提供了一系列的关系代数操作:并、差、笛卡尔积、选择、投影和更名等基本操作
- 以及交、链接和关系除等拓展操作,是一种集合思维的操作语言
- 关系代数操作以一个或多个关系为输入,结果是一个新的关系
- 用对关系的运算来表达查询,需要指明所用操作,具有一定的过程性
- 是一种抽象的语言,是学习其他数据库语言,如SQL等的基础
基本操作
关系代数之基本操作
关系代数运算的约束
并相容性
- 参与运算的两个关系及其相关属性之间有一定的对应性、可比性或意义关联性
定义
关系R与关系S存在相容性,当且仅当:
- 关系R和关系S的属性数目必须相容
- 对于任意 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$