关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它用关系的运算来表达查询。运算对象、运算符、运算结果是运算的三大要素。关系代数的运算对象是关系,运算结果亦为关系。关系代数中使用的运算符包括4类:
-
集合运算符:∪、-、∩、×
-
专门的关系运算符:σ、Π、∞、÷
-
比较运算符:>、≥、<、≤、=、≠
-
逻辑运算符:非、与、或
关系代数的运算按运算符的不同可分为传统的集合运算和专门的关系运算两类。其中,传统的集合运算将关系看成元组的集合,其运算是从关系的“水平”方向即行的角度进行的,而专门的关系运算不仅涉及行,而且涉及列。比较运算符和逻辑运算符是用来辅助专门的关系运算进行操作的。
传统的集合运算
传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积4种运算。
设关系R和关系S具有相同的目n,且相应的属性取自同一个域。
# 并(Union)
其结果仍为n目关系,由属于R或属于S的元组组成。
# 差(Difference)
其结果关系仍为n目关系,由属于R而不属于S的所有元组组成。
# 交(Intersection)
其结果关系仍为n目关系,由既属于R,又属于S的元组组成。关系的交可以用差来表示,即:R∩S=R-(R-S)。
# 广义笛卡尔积(Extend Cartesian Product)
两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。
元组的前n列是关系R的一个元组,后m列是关系S的一个元组。
若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1*k2个元组。
专门的关系运算
专门的关系运算包括选择、投影、连接、除等。
# 选择(Selection)
在关系R中选择满足给定条件的诸元组。
从关系R中选取使逻辑表达式F为真的元组,这是从行的角度进行的运算。
# 投影(Projection)
从R中选择出若干属性列组成新的关系,是从列的角度进行的运算。
投影之后不仅取消了原关系中的某些列,而且可能取消某些元组。
# 连接(Join)
从两个关系的笛卡尔积中选取满足属性间满足一定条件的元组。
一般的连接操作是从行的角度进行运算的,而自然连接是同时从行和列的角度进行运算的。
等值连接:从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组
自然连接:是一种特殊的等值连接,它要求两个关系中进行比较的分量必须使相同的属性组,并且在结果中把重复的属性去掉。
# 除(Division)
表示R中属性组X上值为x的诸元组在Z上分量的集合。
除操作是同时从行和列的角度进行的运算。除操作适合于包含“对于所有的/全部的”语句的查询操作。
在关系代数中,关系代数运算经过有限次复合后形成的式子称为关系代数表达式
。
(最近更新:2019年09月03日)