第4章 关系运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.3.2 关系代数表达式的启发式优化算法
• 在关系代数表达式中,最花费时间和空间的运算是笛卡儿积和连接操作。为此, 引出三条启发式规则,用于对表达式进行转换,以减少中间关系的大小。 – 尽可能早地执行选择操作; – 尽可能早地执行投影操作; – 避免直接做笛卡儿积,把笛卡儿积操作之前和之后的一连串选择和投影合并 起来一起做。 • • 通常选择操作优先于投影操作比较好,因为选择操作可能会大大减少关系,并且 选择操作可以利用索引存取元组。 关系代数表达式的启发式优化是由DBMS的DML编译器完成的。对一个关系代数 表达式进行语法分析,可以得到一棵语法树,树中叶子是关系,非叶子结点是关 系代数操作。
数据库系统原理
第4章 关系运算

关系模型有三个重要组成部分:数据结构、数据操纵、数据完整性规则。 – (1)数据结构:数据库中全部数据及其相互联系都被组织成“关系”(二维 表格)的形式。关系模型基本的数据结构是关系。 – (2)数据操纵:关系模型提供一组完备的高级关系运算,以支持对数据库的 各种操作。 – (3)数据完整性规则:数据库中数据必须满足实体完整性,参照完整性和用 户定义的完整性等三类完整性规则。
• 4.投影 – 这个操作是对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。 – 设关系R是k元关系,R在其分量Ai1,……,Aim上的投影用∏i1,……,im( R)表示。它是一个m元的元组的集合 – ∏i1,…,im(R)≡{t | t=<ti1,……,tim>∧<t1,……,tk>∈R}

定义4.2 公式的递归定义 – (1)每个原子是一个公式。其中的元组变量是自由变量。 – (2)如果P1和P2是公式,那么┐P1、p1 ∨ p2、P1 ∧ P2和P1=>P2。公式 中元组的变量的自由约束性质如同在P1和P2中一样,依然是自由的或约束的 。 – (3)如果P1是公式,那么( S)(P1)和( S)(P1)也都是公式。其中S 是公式P1中的自由元组变量;在( S)(P1)和( S)(P1)中称为约束元 组变量。 – (4)公式中各种运算符的优先级从高到低依次为: θ、 ∧、 ∨、=>。在公 式外还可以加括号,以改变上述优先顺序。 – (5)公式只能由上述四种形式构成,除此之外构成的都不是公式。
4.3 关系代数表达式的优化 • 查询处理的代价通常取决于磁盘访问,磁盘访问比内存访问速度要慢得多 。对于一个缎带定的查询,通常会有许多可能的处理策略,也就是可以写 出许多等价的关系代数表达式。 • 4.3.1 关系代数表达式的优化问题 – 在关系代数运算中,笛卡儿积和连接运算是最费时间的,若关系R有 m个元组,关系S有n个元组,那么R×S就有m×n个元组。 – 两个关系代数表达式等价是指用同样的关系实例代替两个表达式中相 应关系时所得到的结果是一样的。也不是得到相同的属性集和相同的 元组集,但元组中属性的顺序可能不一致。
• •
(4)把选择和投影合并成单个选择、单个投影或一个选择后跟一个投影。使多个 选择投影能同时执行或在一次扫描中同时完成。 (5)每个二元运算结点与其直接祖先(不超过别的二元运算结点)的一元运算结 点分为一组。如果它的子孙结点一直到叶都是一元运算符,则也并入该组。但是 ,如果二元运逄是笛卡儿积,而且后面不是与它组合成等值连接的选择时,则不 能将选择与这个二元运算组成同一组。 (6)生成一个序列,每一组结点的计算是序列中的一眇,各步的顺序是任意的, 只要保证任何一组不会在它的子孙组之前计算即可。
4.1.2 关系代数的四个组合操作
• 1.交(Intersection) – 关系R和S的交是由属于R又属于S的元组构成的集合,记为R∩S,要求R和S定 义在相同的关系模式上。 – R∩S≡{t|t∈R∧t∈S},R和S的元数相同 – 由于R∩S=R-(R-S),或R∩S=S-(S-R),因此交操作不是一个独立的操作 。 • 2.连接(Join) – 连接是从关系R和S的笛卡儿积中选取属性值满足某一θ操作的元组(P98) • • 3.自然连接(P98) 4.除法
• • • • • •
算法4.1 关系代数表达式的启发式优化算法 输入:一个关系代数表达式的语法树 方法: (1)把每个开式为σF1∧… ∧Fn(E)的子表达式转换成选择级联形式:σ F1 (…( σ
Fn
(E))…)
(2)在语法树中,尽可能把每个选择操作下推到最早可能执行的地方(即移向树 的叶端) (3)对每个投影操作,尽可能把投影操作往下推,移向树的叶端。可能使某些投 影操作消失,也可以把一个投影分成两个投影操作,其中一个将靠近叶端。如果 一个投影是针对被投影的表达式的全部属性,则可消去该投影操作。
4.1.3 关系代数运算的应用实例
• • 在关系代数运算中,把由五个基本操作经过有限次复合的式子称为关系代数表达 式。这种表达式的运算结果仍是一个关系。 【例4.5】P100
4.1.4 关系代数的两个扩充操作
• 1.外连接 – 在关系R和S做自然连接时,我们选择两个关系在公共属性上值相等的元组构 成新关系的元组。此时,关系R中某些元组有可能在S中不存在公共属性上值 相等的元组,造成R中这些元组的值在操作时被舍弃。由于同样的原因,S中 某些元组也有可能被舍弃。 – 为了在操作时能保存这些将被舍弃的元组,提出“外连接”操作。 – 如果如果R和S做自然连接时,把原该舍弃的元组也保留在新关系中,那么这 种操作称为“左外连接”操作。 – 如果R和S做自然连接时,只把S中原该舍弃的元组放到新关系中,那么这种操 作称为“右外连接”操作。

在元组关系演算的公式中,有下列三个等价的转换规则: – (1)P1∧P2等价于┐( ┐P1∧┐P2); P1∨P2等价于┐( ┐P1∨┐P2) – (2)( S) – (3)P1=>P2等价于┐P1∨P2 2.关系代数表达式到元组表达式的转换 P104

4.2.2 域关系演算
• • • 1.域关系演算表达式 域关系演算类似于元组关系演算,不同之处是用域变量代替元组变量的每个分量 ,域变量的变化范围是某个值域而不是一个关系。 原子公式有两种形式: – (1)R(X1,…,Xk),R是一个k元关系,每个Xi是常量或域变量; – (2)XθY,其中X、Y是常量或域变量,但至少有一个是域变量,θ是算术比 较符。 – 域关系演算的公式中也可使用∧、∨、 ┐、=>逻辑运算符,也可以用 形成新 的公式,但变量X是域变量,不是元组变量。 – 自由域变量、约束域变量等概念和元组演算中一样。 – 域演算表达式是形为:{t1…tk | P(t1,…,tk)}的表达式,其中P(t1,…,tk)是关于 自由域变量t1…tk的公式。

2.外部并 – 如果R和S的关系模式不同,构成的新关系的属性由R和S的所有属性组成,新 关系的元组由属于R或属于S的元组构成,同时元组在新增加的属性上填上空 值,那么这种操作称为“外部并”操作。
பைடு நூலகம்
4.2 关系演算
• 把数理逻辑的谓词演算引入到关系运算中,就可得到以关系演算为基础的运算。 关系演算又可分为元组关系深处和域关系演算,前者以元组为变量,后者以属性 (域)为变量分别简称为元组演算和域演算。 • 4.2.1 元组关系演算 – 在元组关系演算中,元组关系深处表达式简称为元组表达式。 – 其中t是元组变时不时,表示一个元数固定的元组;P是公式,在数理逻辑中 也称为谓词,也就是计算机语言中的条件表达式。{t|P(t)}表示满足公式P的 所有元组t的集合。 – 1.原子公式和公式的定义 – 在元组表达式中,公式由原子公式组成。
– 定义4.1 原子公式有三种形式 P103 • (1)R(S)。其中R是关系名,S是元组变时不时。它表示了这样一个命 题:“S是关系R的一个元组”。 • (2)S[i]θu[ j]。其中S和U是元组变量,θ是算术比较去处符,S[i]和u[ j] 分别是S的第i个分量和U的第j个分时不时。 S[i]θu[ j]表示命题:“元组S 的第i个分量和U的第j个分量之间满足θ关系”。 • (3) S[i]θa或aθu[ j]。a是常量。“S[i]θa”表示命题:“元组S的第i个 分量值与常量a之间满足θ关系”。 • 在定义关系深处操作时,要用到“自由”和“约束”变量概念。在一个公 式中,如果元组变量未用存在量词或全称量词符号定义,那么称其为自由 元组变量,否则称礤为约束元组变量。 • 约束变量类似于程序设计语言中过程内部定义的局部变量,自由变量类似 于过程外部定义的外部变量或全局变量。
4.1 关系代数
• 4.1.1 关系代数的五个基本操作 – 关系代数是以关系为运算对象的一组高级运算的集合。由于关系定义为属性 个数相同的元组的集合,因此集合代数的操作就可以引入到关系代数中。关 系代数中的操作可分为两类: • 传统的集合操作:并、差、交、笛卡儿积(乘法),笛卡儿积的逆运算( 除法)。 • 扩充的关系操作:对关系进行垂直分割(投影)、水平分割(选择)、关 系的结合(连接、自然连接)等。 • 1.并(Union) – 设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元 组构成的集合,记为R U S。 – R∪S≡{t│t∈R∨t∈S},t是元组变量,R和S的元数相同
4.2.3 关系运算的安全约束和等价性 • 1.关系运算的安全性 – 在关系代数中基本操作是并、差、笛卡儿积、投影和选择,没有集合 的“补”操作。因而关系代数运算总是安全的。 – 关系演算则不然,可能会出现无限关系和无穷验证问题。这些在实际 上是行不通的。因为,一方面计算机的存储空间是有限的,不可能存 储无限关系。另一方面,在计算机上进行无穷验证是永远得不到结果 。所以防止无限关系和无穷验证的出现。 – 定义4.3 在数据库技术中,不产生无限条件和无穷验证的运算称为安 全运算,相应的表达式称为安全表达式,所采取的措施称为安全约束 。

2.关系运算的等价性 – 并、差、笛卡儿积、投影和选择是关系代数最基本的操作,并构成了关系代 数运算的最小完备集。在些基础上,关系代数、安全的元组关系演算、安全 的域关系演算在关系的表达和操作能力上是完全等价的。 – 关系运算主要有关系代数、元组演算和域演算三种,相应的关系查询语言也 已研制出来,其典型代表为ISBL语言、QUEL语言、QBE语言、SQL语言(介 于关系代数和元组演算之间的一种关系查询语言)。

关系数据库的数据操纵语言(DML)的语句分成查询语句和更新语句两大类。查 询语句用于描述用户的各种检索要求;更新语句用于描述用户进行插入、删除、 修改等操作。

关系查询语言根据其理论基础的不同分成两类: – (1)关系代数语言:查询操作是以集合操作为基础的运算。 – (2)关系演算语言:查询操作是以谓词演算为基础的运算。
• 2.差(Differnece) – 设关系R和S具有相同的关系模式,R和S的差是由属于R但不属于S的 元组构成的集合,记为R – S。 – R-S≡{t│t∈R ∧ t∈S} • 3.笛卡儿积 – 设关系R和S的元数分别为r和s,定义R和S的笛卡儿积是一个(r+s)元 的元组集合,每个元组的前r个分量(属性值)来自R的一个元组,后 s个分量来自S的一个元组,记为R × S – R × S ≡{t | t=<ti1,……,tim>∧<t1,……,tk>∈R}

5.选择 – 选择操作是根据某些条件对关系做水平分割,即选取符合条件的元组.条件可用 命题公式F表示。F中有两种成分: • 运算对象:常数(用引号括起来),元组分量(属性名或列的序号)。 • 运算符:符术比较运算符,逻辑运算符 • 关系R关于公式F的选择操作用σF(R)表示,形式定义如下: • σF(R)={t|t∈R∧F(t)=true} • σ为选择运算符, σF(R)表示从R中挑选满足公式F为真的元组所构成的关 系。

2.元组表达式到域表达式的转换 – (1)对于k元的元组变量t,可引入k个域变量t1…tk,在公式中t用t1…tk替换 ,元组分量t[i]用ti替换。 – (2)对于每个量词 或 ,若U是M元的元组变量,则引入M个新的域变量U 1…Um。在量词的辖域内,U用U1…Um替换,U[i]用Ui替换, 用 … 替换 。 用 … 替换。
相关文档
最新文档