购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 关系代数

2.2.1 概述

关系代数(Relation Algebra)是关于数理逻辑和集合论的代数结构。它是一种抽象的查询语言,主要用于在一个或多个关系上生成一个新的关系,通过对“关系”的运算来“表达查询”,即运算对象是关系,运算结果也是关系。

运算对象、运算结果和运算符是关系代数运算的三大要素。而关系代数用到的运算符主要有两大类:传统的集合运算符和专门的关系运算符,另外还有两类运算符是用来辅助专门的关系运算符进行操作的,即比较运算符和逻辑运算符,如表2-9所示:

表2-9 关系代数运算符

2.2.2 传统的集合运算

把关系看成元组的集合,以元组作为集合中的元素进行运算,其运算是从关系的“水平”方向,即行的角度进行的。传统的集合运算包括了并、差、交和广义笛卡尔积等运算。但并不是任意的两个关系都能进行这种集合运算的,设给定两个关系R,除广义笛卡尔积外,要求参加运算的关系必须满足以下两个相容性条件:①具有相同的度,即关系 R 和关系 S 都为n元关系;②R中第i个属性和 S 中第i个属性必须来自同一个域,满足以上条件的关系,R、S才是相容的。

1.并(Union)

设关系 R 和关系 S 为n元关系,且各个属性取值的域相同。关系 R 与关系 S 的并由属于 R 或属于 S 的元组组成,即 R 和S的所有元组合并,删去重复元组,组成一个新关系,其结果仍为n元关系。记作:

对于关系数据库,记录的插入和添加可通过并运算实现。

2.差(Difference)

设关系 R 和关系 S 为n元关系,且各个属性取值的域相同。关系 R 与关系 S 的差由属于 R 而不属于 S 的所有元组组成,即 R 中删去与 S 中相同的元组,组成一个新关系,其结果仍为n元关系。记作:

通过差运算可删除关系数据库的记录。

3.交(Intersection)

设关系 R 和关系 S 为n元关系,且各个属性取值的域相同。关系 R 与关系 S 的交由既属于 R 又属于 S 的元组组成,即 R 与S中相同的元组,组成一个新关系,其结果仍为n元关系。记作:

如果两个关系没有相同的元组,那么它们的交为空。

4.广义笛卡尔积(Extended Cartesian Product)

设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 集合的并、差、交和广义笛卡尔积

(续上表)

2.2.3 专门的关系运算

专门的关系运算不仅涉及行而且涉及列,包括选择(水平分割)、投影(对关系进行垂直分割)、连接(关系的结合)、除(笛卡尔积的逆运算)等运算,这些运算是为数据库的应用而引进的特殊运算。

1.选择(Selection)

选择又称限制(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

2.投影(Projection)

关系 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查询结果

3.连接(Join)

连接又称 θ 连接,它是从两个关系的广义笛卡尔积中选取属性间满足给定 θ 条件的元组。

(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 ))

4.除(Division)

给定关系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图示 E9m+mlgp19wGvi3T4qprDbArmNLF2lRkVdgu4pvs9E8fv6XAx0257iDAuzXbUH8e

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开