文章目录
关系运算
关系代数
基本关系代数运算
选择
投影
并
差
笛卡尔积
重命名
附加关系代数运算
交
连接
赋值
除
扩展关系代数运算
去重
广义投影
聚集
分组
排序
==总结==
元组关系演算
域关系演算
关系运算
关系运算包含
关系代数(relational algebra):关系代数是一种过程化查询语言,通过描述对关系的运算来表达查询、获取数据
关系演算:非过程化查询语言,通过描述想要获取的数据的信息来获取数据(不需要给出运算过程)
关系演算可以分为元组关系演算和域关系演算两种语言
为了方便用户查询处理关系数据,定义了结构化查询语言SQL 来操作处理关系数据
关系代数
关系代数定义了一个关系数据的运算的集合
关系运算以一个或者两个关系为输入;输出一个新的关系作为运算结果
关系是一个以元组为元素的多重集合(multiset):可能包含重复元素
关系代数运算本质上是对多重集合的运算
基本关系代数运算
包括选择、投影、并、差、笛卡尔积和重命名(期中,选择、投影、重命名为一元运算,并、差、笛卡尔积为二元运算)
基本关系代数运算可以用来表达任何传统关系代数运算
选择
选择运算 σ \sigma σ可以从关系 R R R中获取满足条件的元组: σ p ( R ) = { t ∣ t ∈ R ∧ p ( t ) = True } \sigma_p(R)=\{t\mid t\in R\land p(t)=\text{True}\} σp(R)={
t∣t∈R∧p(t)=True}
p p p为选择谓词:
p p p是由逻辑运算符与 ∧ \land ∧、或 ∨ \lor ∨、非 ¬ \lnot ¬连接的若干原子表达式构成的公式
原子表达式的形式为: X □ Y X\ \Box \ Y X □ Y
X , Y X,Y X,Y:属性名、常量,或者函数值
□ \Box □为比较运算符,包括 = > < ≠ ≤ ≥ =\ >\ <\ \neq\ \leq\ \geq = > < = ≤ ≥
投影
投影运算 Π \Pi Π可以从关系 R R R中获取某些列组成新的关系: Π A 1 , A 2 , … , A k ( R ) = { t [ A 1 , A 2 , … , A k ] ∣ t ∈ R } \Pi_{A_1,A_2,\ldots,A_k}(R)=\{t[A_1,A_2,\ldots,A_k]\mid t\in R\} ΠA1,A2,…,Ak(R)={
t[A1,A2,…,Ak]∣t∈R}
A 1 , A 2 , … , A k A_1,A_2,\ldots,A_k A1,A2,…,Ak为R中的属性列
返回R中元组在 A 1 , A 2 , … , A k A_1,A_2,\ldots,A_k A1,A2,…,Ak列上的值
删除重复元组
并
并运算 ∪ \cup ∪返回两个关系 R R R和 S S S中元组取并集的结果: R ∪ S = { t ∣ t ∈ R ∨ t ∈ S } R\cup S=\{t\mid t\in R\lor t\in S\} R∪S={
t∣t∈R∨t∈S}
R和S中属性个数要相同
R和S中的属性应存在一一对应关系
R中每个属性的域和S中对应属性的域要相同
Union:去重
Union all:不去重
差
差运算 − - −返回在关系R中但是不在关系S中的元组集合: R − S = { t ∣ t ∈ R ∧ t ∉ S } R-S=\{t\mid t\in R \land t\notin S\} R−S={
t∣t∈R∧t∈/S}
R和S中属性个数要相同
R和S中的属性应存在一一对应关系
R中每个属性的域和S中对应属性的域要相同
笛卡尔积
笛卡尔积运算 × \times ×返回关系R中元组和关系S中的元组做笛卡尔积的结果: R × S = { ( t , q ) ∣ t ∈ R ∧ q ∈ S } R\times S=\{(t,q)\mid t\in R\ \land\ q\in S\} R×S={(t,q)∣t∈R ∧ q∈S}
( t , q ) (t,q) (t,q)为R中元组t和S中元组q拼接在一起得到的元组
R × S R\times S R×S中有 ∣ R ∣ × ∣ S ∣ |R|\times|S| ∣R∣×∣S∣个元组
例如: instructor × teaches \text{instructor}\times\text{teaches} instructor×teaches
重命名
重命名运算 ρ \rho ρ将关系R重命名为关系S: ρ S ( A 1 , A 2 , … , A n ) ( R ) \rho_{S(A_1,A_2,\dots,A_n)}(R) ρS(A1,A2,…,An)(R)
同时将各属性按照从左到右的顺序重命名为 A 1 , A 2 , … , A n A_1,A_2,\ldots,A_n A1,A2,…,An
ρ S R \rho_{S}R ρSR:只修改关系名,不修改属性名
附加关系代数运算
基本关系代数运算写出来的表达式比较冗长,因此定义了附加关系代数运算
附加关系代数运算是由基本关系代数运算导出的运算,可以简化表达式
附加关系代数运算和基本关系代数运算的表达能力相同
交
交运算 ∩ \cap ∩返回两个关系R和S中元组取交集的结果: R ∩ S = { t ∣ t ∈ R ∧ t ∈ S } R\cap S=\{t\mid t\in R\land t\in S\} R∩S={
t∣t∈R∧t∈