数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 1页第 7章 关系代数基本理论本章概述本章的学习目标主要内容数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 2页本章概述
第一部分讨论的数据库设计内容,主要是从数据库设计人员的角度看待关系数据库的内部模式,使这种关系模式达到一个规范的形式。
在从本章开始的第二部分内容中,主要是从数据库使用人员的角度处理数据库中的各种信息,使得所设计的关系模式最终发挥应有的作用。
本章重点介绍关系代数的基本理论。从数据库的演变进程来看,关系型数据库获得了巨大的成功。从当前的数据库应用来看,关系型数据库产品雄执数据库市场牛耳。这些成功的一个非常重要的原因,是由于关系代数理论作为其坚实的基础。学习和掌握关系代数的基本理论,有助于增强用户对关系数据库的理解,提高用户使用关系数据库的效率。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 3页本章的学习目标
了解关系代数基本理论的内容和作用;
理解和掌握关系代数的各种运算形式;
了解和掌握数据库修改的各种运算形式;
理解和掌握关系代数的演变内容;
了解关系代数表达式的优化策略。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 4页主要内容
7.1 概述
7.2 关系代数的基本运算
7.3 关系代数的附加运算
7.4 扩充的关系代数运算
7.5 关系演算
7.6 关系代数的修改运算
7.7 关系代数表达式的优化策略
7.8 本章小结数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 5页
7.1 概述
关系代数是一种过程化的查询语言,它包括了一个运算集合,这些运算的输入是一个或两个关系,得到的输出结果是一个新关系。过程化查询语言的含义表明这种语言详细描述了运算过程。
关系代数基本理论的内容包括关系代数的运算、关系代数的演算和关系代数的优化。这些内容构成了关系型数据库的理论架构。关系代数的运算内容主要是指各种运算符和关系如何组成简单的或复杂的表达式,这些内容也称为关系算术。关系代数的演算主要是把数理逻辑的谓词演算应用到了关系运算中,包括以元组为变量的元组关系演算和以域为变量的域关系演算。如何提高关系代数的运算效率,
以至最终提高关系型数据库产品的查询效率,主要是依据关系代数的优化规则和策略。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 6页主要内容
7.1 概述
7.2 关系代数的基本运算
7.3 关系代数的附加运算
7.4 扩充的关系代数运算
7.5 关系演算
7.6 关系代数的修改运算
7.7 关系代数表达式的优化策略
7.8 本章小结数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 7页
7.2 关系代数的基本运算
下面我们将详细研究关系代数的基本运算形式,
这些形式包括各种:
集合运算
选择运算
投影运算
笛卡尔积运算
改名运算
关系代数的基本运算是其他复杂运算形式的基础。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 8页集合运算
集合运算包括三个非常普通的运算形式,即集合并、交和差运算。这些集合运算规则类似于高等代数中学过的那些集合运算规则。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 9页选择运算
当把选择运算符应用到关系 R时,将产生一个包含了关系 R中部分元组的新关系。新关系中的元组部分满足指定的条件 C,该条件与关系 R的属性有关。一般地,把这种选择运算表示为 σC(R)。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 10页投影运算
当对某个关系 R应用投影运算符时,
则产生了一个只有某些列的新关系。
投影运算符使用 ∏
表示。表达式 ∏A1,
A2,…,An(R) 的结果是一个只有关系
R中属性 A1,
A2,…,An所对应的列的关系。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 11页笛卡尔积运算
两个集合 R和 S的笛卡尔积是这样的元素对的集合,该元素对是从集合 R中的任何元素中选择一个作为第一个元素,从集合 S中的任何元素中选择一个元素作为第二个元素构成的。笛卡尔积使用 R× S表示。
在关系代数中,这种乘积的本质也是相同的。关系中的成员是元组。通常包含了多个分量,由 R的元组和 S的元组构成的元组对是一个这种元组对,其中每一个分量都对应着组成元组对的一个分量,且 R的分量在 S的分量之前。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 12页改名运算
在关系代数的运算中,为了调整由一个或多个关系代数运算构成的关系所用的属性名,可以使用改名运算符。
改名运算符是 ρS(A1,A2,…,An)(R),表示把关系 R改名。在改名运算的结果中,新关系名是 S,
S中的元组和关系 R中的元组是一样的,S中的属性从左至右依次命名为 A1,A2,…,An。如果只是希望把关系改名为 S,属性名称仍然与 R中的属性一样,那么就可以使用改名运算符 ρS(R)。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 13页主要内容
7.1 概述
7.2 关系代数的基本运算
7.3 关系代数的附加运算
7.4 扩充的关系代数运算
7.5 关系演算
7.6 关系代数的修改运算
7.7 关系代数表达式的优化策略
7.8 本章小结数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 14页
7.3 关系代数的附加运算
前面讲述的那些基本代数运算,可以表示出任何关系代数的查询形式。但是,如果只是使用这些基本的代数运算形式,那么可能造成在许多代数表达式中写出的运算表达式过长。因此,在关系代数中附加一些运算形式,有助于简化常用的查询形式,提高书写关系代数的效率。
这些附加的关系代数运算形式包括自然连接运算、
θ连接运算、除法运算和赋值运算。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 15页自然连接运算
在前面,我们学习了选择和笛卡尔乘积的运算。
在通常情况下,我们需要从两个关系中选择那些满足条件的元组数据。自然连接就是一种简化这种复合运算的运算形式。在自然连接中,只有那些在 R和 S关系上任何公共属性一致的 R和 S的元组才会成对地出现在自然连接的运算结果中。
准确地说,如果 A1,A2,…,An是在 R和 S关系上都有的公共属性,那么当且仅当 R中的元组 r和
S中的元组 s在属性 A1,A2,…,An都完全一致时,R中的元组 r和 S中的元组 s才能组合成一对。
这种运算形式称为自然连接运算,表示为 RS。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 16页
θ连接运算
从本质上来看,在自然连接运算中使用了一个非常特殊的条件,即在参与运算的两个关系模式中某些属性名称相同且取值也相同。但是,更常见的情况是,两个参与运算的关系采用了一个指定的条件。满足这个指定条件的元组就出现在结果中,不满足这个指定条件的元组不出现在该结果中。这是自然联接的一种特殊形式,我们称之为 θ
连接运算,其表达形式为 RCS。也就是说,关系
R和 S基于条件 C的 θ连接运算的表示形式是 RCS。
θ连接运算也是一种附加的关系代数,因此也可以使用一些基本的关系代数形式复合而成。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 17页除法运算
设两个关系 R和 S的属性个数分别是 r和 s,
且关系 R中的属性个数大于关系 S中的属性个数,即 r>s>0。那么 R÷ S是一个属性个数为 (r–s)的元组的集合。 R÷ S是满足这种条件的最大关系,即该结果关系中的每一个元组 u与 S中的每一个元组 v组成的新元组
(u,v)一定在关系 R中。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 18页赋值运算
通过给临时变量赋值,可以把关系代数表达式分开,以便一部分一部分地书写,这样可以把复杂的表达式化整为零,成为简单的表达式。赋值运算使用赋值运算符
,←,表示。赋值运算不是执行关系的操作,而是把赋值运算符右侧的表达式结果赋给左侧的关系变量,该关系变量可以在后续的表达式中继续使用。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 19页主要内容
7.1 概述
7.2 关系代数的基本运算
7.3 关系代数的附加运算
7.4 扩充的关系代数运算
7.5 关系演算
7.6 关系代数的修改运算
7.7 关系代数表达式的优化策略
7.8 本章小结数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 20页
7.4 扩充的关系代数运算
在关系代数运算的发展过程中,许多研究人员不断地对其进行了扩展。
例如,可以把算术运算作为投影一部分的广义投影运算,允许进行聚集运算,允许对空值进行处理等。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 21页广义投影运算
广义投影运算就是允许在投影列表中使用算术函数来对投影进行了扩展。
广义投影运算的形式是 ∏F1,F2,…,Fn,
其中,R是任意的关系模式,F1,F2,…,
Fn是涉及 R模式中常量和属性的算术表达式。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 22页外连接运算
外连接运算是对连接运算的扩展,这种运算形式可以处理空值信息。
为了说明为什么引入外连接运算形式,我们先研究一个示例。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 23页聚集运算
聚集运算就是指输入一个值的集合,然后根据该值集合得到一个单一的值作为结果。常用的聚集函数包括求最大值 max、最小值 min、平均值 avg、
总和值 sum和计数值 count等。
例如,在如图 6-16所示的关系 Book中,
maxprice(Book)表达式用于求出该关系中属性
price的最大值,结果是 65.00。同样,
minprice(Book)的结果是 4.30,avgprice(Book)
的值是 17.5,sumprice(Book)的结果是 210,
countprice(Book)的结果是 12。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 24页主要内容
7.1 概述
7.2 关系代数的基本运算
7.3 关系代数的附加运算
7.4 扩充的关系代数运算
7.5 关系演算
7.6 关系代数的修改运算
7.7 关系代数表达式的优化策略
7.8 本章小结数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 25页
7.5 关系演算
在前面讲述的关系代数运算形式中,我们详细给出了每一个运算的过程。而在逻辑运算中,有时不需要给出运算的过程,而只需要给出运算的形式,这时就涉及到关系演算的内容。
关系演算就是指把数据逻辑的谓词演算应用到关系运算中。关系演算分为元组关系演算和域关系演算两种形式,前者以元组为变量,后者以域为变量。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 26页元组关系演算
元组关系演算中的查询表达式为,{t|P(t)}。
该表达式是使谓词 P为真的元组 t的集合。
其中,t是元组变量,表示一个定长的元组。
谓词 P是由原子组成的公式数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 27页域关系演算
域关系演算和元组关系演算是非常类似的。两种运算的差别在于域关系演算使用域变量代替了元组变量的每一个分量,域变量的变化范围是某个值域而不是一个关系。
域关系演算的表达式是形为,{<y1,y2,…,
yn> | P(y1,y2,…,yn)}。其中,y1,y2,…,
yn代表域变量,P表示由原子构成的公式。
现在研究一个使用域关系演算的示例。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 28页主要内容
7.1 概述
7.2 关系代数的基本运算
7.3 关系代数的附加运算
7.4 扩充的关系代数运算
7.5 关系演算
7.6 关系代数的修改运算
7.7 关系代数表达式的优化策略
7.8 本章小结数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 29页
7.6 关系代数的修改运算
前面讲述的内容都是如何从数据库中检索信息,现在我们研究如何在数据库中插入、
删除和修改数据。
这些内容是关系代数中的修改运算,这种运算采用了赋值运算形式。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 30页插入运算
为了将数据插入到关系中,需要在插入运算中指定将要插入的元组或元组集和关系名。插入运算的表达式如下所示:
R←R ∪ Expression
其中,R表示关系,Expression表示关系代数表达式。如果 Expression关系代数表达式是一个只包含一个元组的常量关系,
那么就可以向关系中插入一个元组。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 31页删除运算
删除元组的运算与查询元组的表达式非常类似。不同的是,删除不是把找出的元组显示给用户,而是要把这些元组从数据库中删除。在删除运算中,只能把一个元组整个地删除,不能只删除一个元组上的某些属性的值。
删除表达式形式如下:
R←R―Expression
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 32页修改运算
如果我们只是需要修改某个元组中的部分属性的值,而不需要删除整个元组的值,那么我们可以使用修改运算。
修改运算可以有两种计算方式,第一种计算方式是把修改运算看成是删除运算和插入运算的复合形式,因为任何一个修改操作都可以看成是由删除和插入运算组成的复合操作。第二种计算方式是把修改运算看成是一种广义的投影方式,其运算形式如下所示:
R←∏F1,F2,…,Fn(R)
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 33页主要内容
7.1 概述
7.2 关系代数的基本运算
7.3 关系代数的附加运算
7.4 扩充的关系代数运算
7.5 关系演算
7.6 关系代数的修改运算
7.7 关系代数表达式的优化策略
7.8 本章小结数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 34页
7.7 关系代数表达式的优化策略
策略 1:在关系代数表达式中应该尽可能早地执行选择操作。通过执行选择操作,可以得到比较小的中间结果,减少运算量和输入输出的次数。
策略 2:同时计算一连串的选择和投影操作,避免因为分开运算而造成的多次扫描文件,从而节省查询执行的时间。
策略 3:如果在一个表达式中多次出现某一个子表达式,那么应该把该子表达式计算的结果预先计算和保存起来,以便以后使用,减少重复计算的次数。
策略 4:对关系文件进行预处理,适当地增加索引、排序等,使两个文件之间可以非常快地建立连接关系。
策略 5:对于表达式的书写应该仔细考虑关系的排列顺序,因为这种顺序对于从缓存中读入数据有非常大的影响。
数据库系统原理与应用教程 (第二版 ) 第 7章 关系代数基本理论 第 35页主要内容
7.1 概述
7.2 关系代数的基本运算
7.3 关系代数的附加运算
7.4 扩充的关系代数运算
7.5 关系演算
7.6 关系代数的修改运算
7.7 关系代数表达式的优化策略
7.8 本章小结