关系代数:Relational Algebra。
什么叫代数?
代数是一个较为基础的数学分支。它的研究对象有许多。诸如数、数量、代数式、关系、方程理论、代数结构等等都是代数学的研究对象。
初等代数一般在中学时讲授,介绍代数的基本思想:研究当我们对数字作加法或乘法时会发生什么,以及了解变数的概念和如何建立多项式并找出它们的根。
代数的研究对象不仅是数字,还有各种抽象化的结构。例如整数集作为一个带有加法、乘法和序关系的集合就是一个代数结构。在其中我们只关心各种关系及其性质,而对于“数本身是什么”这样的问题并不关心。常见的代数结构类型有群、环、域、模、线性空间等。
为何称之为一种代数(algebra),或者说为什么关系型数据库中也存在代数?
因为存在操作符(operator)和操作数(operand),操作数为表,操作符为交、并等。也即此时代数处理的对象由数字变成了表,而操作由加和乘为交、并等。
关系代数有分为基于集合的关系代数(基于集合自然不存在重复)和基于包的关系代数;
关系运算分类
- (1)基本运算:并、差、笛卡尔积、选择、投影;
- (2)组合运算:交、连接、自然连接和除;
- (3)扩充的关系代数操作:外连接(左外和右外)、外部并和半连接;
关系代数的基本操作(原始运算):“选择”、“投影”、笛卡尔积(也叫做“叉积”或“交叉连接”)、并集、差集和“重命名”。
这六个运算在省略其中任何一个都要损失表达能力的意义上是基本的。已经依据这六个原始运算定义了很多其他运算。其中最重要的是交集、除法和自然连接。
关系代数运算
自然连接
关系运算对行列的影响:
(1) σ :选择,不会影响列,相当于筛选行,
select * from where 列满足的一些条件;
- (2) π :投影,相当于对样本集做 feature selection;
两个除法的例题
(1)关系 R、S 如下表所示,则 R÷(πA1,A2(σ1<3S))
先选择(第一列小于第三列的全部元组),再投影保留 A1,A2 ,如下:
接下来执行除法,首先在 R 中找到A1,A2 和 S′ 完全一致的元组:
此时关键是看
R
关系中其他列在这两个元组的值是否相同,只有在相同时,除法的结果才为这个值,否则除法的结果为空。显然本例为
再看一道关系运算:
R÷S
的结果为:
R÷S={2,1}
References
[1] 关系代数——除法