



关系代数(Relation Algebra)是关于数理逻辑和集合论的代数结构。它是一种抽象的查询语言,主要用于在一个或多个关系上生成一个新的关系,通过对“关系”的运算来“表达查询”,即运算对象是关系,运算结果也是关系。
运算对象、运算结果和运算符是关系代数运算的三大要素。而关系代数用到的运算符主要有两大类:传统的集合运算符和专门的关系运算符,另外还有两类运算符是用来辅助专门的关系运算符进行操作的,即比较运算符和逻辑运算符,如表2-9所示:
表2-9 关系代数运算符
把关系看成元组的集合,以元组作为集合中的元素进行运算,其运算是从关系的“水平”方向,即行的角度进行的。传统的集合运算包括了并、差、交和广义笛卡尔积等运算。但并不是任意的两个关系都能进行这种集合运算的,设给定两个关系R,除广义笛卡尔积外,要求参加运算的关系必须满足以下两个相容性条件:①具有相同的度,即关系 R 和关系 S 都为n元关系;②R中第i个属性和 S 中第i个属性必须来自同一个域,满足以上条件的关系,R、S才是相容的。
设关系 R 和关系 S 为n元关系,且各个属性取值的域相同。关系 R 与关系 S 的并由属于 R 或属于 S 的元组组成,即 R 和S的所有元组合并,删去重复元组,组成一个新关系,其结果仍为n元关系。记作:
对于关系数据库,记录的插入和添加可通过并运算实现。
设关系 R 和关系 S 为n元关系,且各个属性取值的域相同。关系 R 与关系 S 的差由属于 R 而不属于 S 的所有元组组成,即 R 中删去与 S 中相同的元组,组成一个新关系,其结果仍为n元关系。记作:
通过差运算可删除关系数据库的记录。
设关系 R 和关系 S 为n元关系,且各个属性取值的域相同。关系 R 与关系 S 的交由既属于 R 又属于 S 的元组组成,即 R 与S中相同的元组,组成一个新关系,其结果仍为n元关系。记作:
如果两个关系没有相同的元组,那么它们的交为空。
设n元关系 R 和m元关系S。关系 R 和S的广义笛卡尔积是一个由(m + n)列的元组组成的集合。元组的前n列是关系 R 的一个元组,后m列是关系 S 的一个元组。若 R 有k 1 个元组,S有k 2 个元组,则关系 R 和关系 S 的广义笛卡尔积有k 1 × k 2 个元组。记作:
关系的广义笛卡尔积可用于两关系的连接操作。
表2-10是以上4类传统集合运算的示例。
表2-10 集合的并、差、交和广义笛卡尔积
(续上表)
专门的关系运算不仅涉及行而且涉及列,包括选择(水平分割)、投影(对关系进行垂直分割)、连接(关系的结合)、除(笛卡尔积的逆运算)等运算,这些运算是为数据库的应用而引进的特殊运算。
选择又称限制(Restriction),是指在关系 R 中选取满足具体条件的若干元组,记作:
其中t表示 R 的一个元组,F表示选择条件,是一个逻辑表达式,取逻辑值True或False。
可通过图2-1理解选择运算的含义。
图2-1 选择图例
逻辑表达式
F
的基本形式为
,它有两种成分:
①运算对象:有常量(用引号括起来)和属性名(或列的序号)两种表示方式。
②运算符:有比较运算符(也称为 θ 符)和逻辑运算符两种形式。
这里 θ 表示比较运算符, φ 表示逻辑运算符。X 1 、Y 1 等是运算对象,即常量、属性名或简单函数,属性名也可以用它的序号来代替。[]表示任选项,即[]中的部分可以要也可以不要,省略号表示上述格式可以重复下去。
因此选择运算实际上是从关系 R 中选取使逻辑表达式 F 为真的元组。
【例2-9】 在表2-2的关系中查询页数小于500页的书籍信息。可以表示为:
σ Pages < 500 ( Book_Information )
或
σ 7 < 500 ( Book_Information )(因为Pages属性在书籍信息表中序号为7)
其结果如表2-11所示。
表2-11 例2-9查询结果
【例2-10】 在表2-2的关系中查询页数小于500页,价格少于100元的书籍信息。可以表示为:
σ Pages < 500 ∧ Price < 100 ( Book_Information )
或
σ 7 < 500 ∧ 11 < 100 ( Book_Information )
关系 R 上的投影是从 R 中选择出若干属性列组成新的关系,也就是对一个关系 R 进行垂直分割,消去某些列并重新安排列的顺序。当消去了某些属性列后,就可能出现重复行,因此如果新关系中元组相同,就需要去掉重复的组。通常把投影记作:
其中
A
为R中的属性列,
表示关系
R
中各个元组在属性列
A
上的元组的集合。
可通过图2-2来帮助理解投影运算的含义。
【例2-11】 在表2-2的关系中查询书籍编号、书名、作者和价格。可以表示为:
∏ BookID , BookNam e , Author , Price (Book_Information)
或
∏ 1 , 3 , 4 , 11 (Book_Information)
图2-2 投影图例
【例2-12】 在表2-2的关系中查询价格小于100 的书籍编号、书名、作者和价格。可以表示为:
σ Price < 100 (∏ BookID , BookName , Author , Pric e ( Book_Information ))
或
∏ BookID , BookName , Author , Price ( σ Price < 100 ( Book_Information ))
其结果如表2-12所示。
表2-12 例2-11查询结果
连接又称 θ 连接,它是从两个关系的广义笛卡尔积中选取属性间满足给定 θ 条件的元组。
(1)一般连接。从 R 和S的笛卡尔积 R × S 中,选取关系 R 在A属性组上的值与关系 S 在B属性组上的值,满足比较关系 θ 的元组,其中A、B分别是 R 和S上度数相等且可比的属性组,具体步骤是要先求 R × S ,再从中按 θ 条件选取部分元组。
(2)等值连接。 θ 为“= ”的连接运算称为等值连接。它是从关系 R 和S的笛卡尔积中选取A、B属性值相等的那些元组。
(3)自然连接。自然连接是一种特殊的等值连接,它要求两个关系中进行比较的属性组必须相同,并且在结果中将重复的属性去掉。一般的连接操作是从行的角度进行运算的,但自然连接还需要取消重复列,所以是同时从行和列的角度进行运算的。自然连接的计算步骤一般是先计算 R × S ,然后选取满足自然连接条件的元组,最后去掉重复的属性列。
表2-13展示了以上三种连接操作。
表2-13 关系R、S的连接操作
以下是结合 【例2-1】 的网上书店关系模型展示连接查询的实例。
【例2-13】 查询2022001号订单购买的书名及其下单数量。可以表示为:
∏ BookName , Quantity ( σ Book _ Information . BookID = Order _ Information . BookID ∧ OrderID = " 2022001" (Book_ Information × Order_Information))
【例2-14】 查询书名、作者及出版社名称。可以表示为:
∏ BookName , Author , PressName (σ Book _ Information . PressID = Press _ Information . PressID ( Book_ Information × Press_ Infor mation ))
给定关系R (M,N)和S (N),其中M,N为属性组。R中的 N 和S中的 N 属性名可以不同,但必须出自相同的域,即 S 的属性集合是 R 的属性集合的子集。
R除以S (记作R /S或R ÷ S)的值是一个在属性组 M 上的关系,属性组 M 对应的元组在属性组 N 上的值都对应 S 中的所有元组,即 S 中的属性组 N 对应的元组出现在R (M,N)元组中。如图2-3所示。
图2-3 除运算示例
【例2-15】 根据例2-1的网上书店关系模型,查询购买暨南大学出版社出版的书籍的订单号。如图2-4所示。
①暨南大学出版社出版的书籍编号可以表示为关系S。
②购买暨南大学出版社出版的书籍的订单用关系代数表示为:Order_Information ÷ S
③求购买暨南大学出版社出版的书籍的订单号,将②计算出来的结果投影到属性OrderID上,用关系代数表示为:∏ OrderID (Order_Information ÷ S)
图2-4 例2-15图示