数据库原理 第4章 关系查询处理和查询优化
关系数据库查询优化.ppt

• (2)计算Q2的查询时间 • ●计算自然连接:计算自然连接时读取S与SC表
的方式与Q1一致,总读取块数为2100块,花费时 间为10 5秒,但其连接结果块数大为减少,总计 104个,所花时间为104/10/20s=50s。仅为Q1的 千分之一。 • ●作选择操作:做选择操作的时间为50s。 • ●做投影操作:与Q1类似,其时间可忽略不计 • 这样,Q2的全部查询时间≈ 105+50+50= 205s
查询优化实例(5)
• 其中读S表100块,读SC表20次,每次100 块 。 由 于 每 块 花 费 时 间 1/20 秒 , 此 时 总 共 花费时间105秒。
• 连接后的元组数为103×104=107,设每块 (约)能装10个元组,则写入中间文件要 花106/20=5×104s。
第4章 关系数据查询优化: 4.1 查询处理与优化
第4章 关系数据查询优化: 4.1 查询处理与优化
查询优化实例(10)
• 从这3个计算时间可以看出,3种等价的查 询表达式具有完全不同的处理时间,它们 分别是10 5s、205s和10s,其差距之大令 人瞠目。
第4章 关系数据查询优化: 4.2 查询优化技术 4.2查询优化技术 4.2.1手动优化与自动优化
存放SC元组。 • ● 读/写一块磁盘的时间为1/20秒,即1秒读写20个磁盘
块。 • ● 为了简化起见,所有内存操作所花的时间忽略不计。
第4章 关系数据查询优化: 4.1 查询处理与优化
查询化实例(4)
• (1)计算Q1的查询时间 • ① 首先做笛卡尔乘积 • 将S与SC的每个元组相连接,其方法为先读入S中的50个
元组(5*10)至s表中的内存缓冲区,然后不断地将SC的 元组按100位一块读入后与S的元组相连接,直至读完所 有SC元组(共计100次)。这种操作内连接满100位后就 写中间文件一次。反复进行这样的操作,直至做完笛卡尔 乘积,此时读取的总块数为 • = 100+20×100=2100块
关系查询处理和查询优化小结

关系查询处理和查询优化小结一.关系查询优化的概述1.查询优化在关系数据库中的重要性及必要性关系系统的查询优化既是RDBMS实现的关键技术又是关系系统的优点所在。
它减轻了用户选择存取路径的负担。
查询优化极大地影响RDBMS的性能。
用户只要提出“干什么”,不必指出“怎么干”。
查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较好的效率,而且在于系统可以比用户程序的“优化’夕做得更好。
2.查询优化的可能性和优点1)优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息2)如果数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划。
在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。
3)优化器可以考虑数百种不同的执行计划,程序员一般只能考虑有限的几种可能性。
4)优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。
系统的自动优化相当于使得所有人都拥有这些优化技术;3.查询优化的一般准则(l)选择运算应尽可能先做;(2)把投影运算和选择运算同时进行;(3)把投影同其前或其后的双目运算结合起来执行;(4)把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算;(5)找出公共子表达式;(6)选取合适的连接算法。
4.查询优化的一般步骤(l)把查询转换成某种内部表示,通常用的内部表示是语法树。
(2)把语法树转换成标准(优化)形式。
即利用优化算法,把原始的语法树转换成优化的形式。
(3)选择低层的存取路径。
(4)生成查询计划,选择代价最小的。
5.代价模型一般DBMS采用基于代价的优化算法:集中式数据库单用户系统总代价=I/O代价+CPU代价多用户系统总代价=I/O代价+CPU代价+内存代价分布式数据库总代价=I/O代价+CPU代价[+内存代价]+通信代价二.关系数据库查询优化方法1.代数优化关系代数表达式等价指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的1)查询树启发式优化,一般规则有选择运算应尽可能先做(最重要,最根本)目的:减小中间关系投影运算和选择运算同时做目的:避免重复扫描关系将投影运算与其前面或后面的双目运算结合目的:减少扫描关系的遍数在执行连接操作前对关系适当进行预处理按连接属性排序在连接属性上建立索引某些选择运算+在其前面执行的笛卡尔积===>连接运算2)查询树的启发式优化—算法(1)分解选择运算(2)通过交换选择运算,将其尽可能移到叶端(3)通过交换投影运算,将其尽可能移到叶端(4)合并串接的选择和投影,以便能同时执行或在一次扫描中完成(5)对内结点分组(6)生成程序例:бStudent.Sno=SC.Sno(Student某SC)StudentSC提取公共子表达式;例如:查询小王选修的所有课程。
数据库原理关系系统及其查询优化

授课:XXX
15
对于Q2
读Student和SC不变,仍为105秒; 中间结果10,000个元组,读写共两次: S2= (10,000/10)*2/20=100s 总时间S1+S2,约205秒,降低了3个数量级!
2021/3/10
授课:XXX
16
对于Q3
先对SC进行选择,读100块,时间5s,满足 条件的元组50个,直接放在1个内存块中;
合成一个连接运算;
5. 把投影和其前或后的双目运算结合; 6. 找出公共子表达式。
2021/3/10
授课:XXX
20
4.2.4 等价变换规则
1. 连接、笛卡儿集交换律
E1×E2 = E2×E1
E1 E2 = E2 E1
E1 E2 = E2 E1
F
F’
2021/3/10
2021/3/10
授课:XXX
18
分析它们,从Q1到Q4,一个比一个效率高, 感性地告诉我们:笛卡儿集运算最好能 和相应的选择一起构成连接运算;选择 能早做就尽量早做;在双目运算前增加 投影,只保留必要的字段。
2021/3/10
授课:XXX
19
4.2.3 优化的一般策略
1.选择尽可能早做; 2.在连接前尽可能地预处理; 3.投影和选择同时进行; 4. 选择和它前面要进行的笛卡儿集运算结
接着读Student表,与内存块中的SC元组连接, 读Student表1遍时间为5s;
连接结果输出,不占I/O时间;
总时间10秒,再降低了1个数量级!
2021/3/10
授课:XXX
17
对于Q4
类似于Q3,但不需要读取SC和Student元组 全部属性,只读Student的Sno和Sname,SC 的Sno,读写块数进一步减少,从而I/O时间 还可减少
数据库系统概论 第4章

查询优化的优点是使用户不必考虑如何最好地去 表达查询以便获得较好的查询效率,而且系统在作 查询优化时要比用户程序做得更好。这是因为: 1、优化器可以从数据字典中获取许多统计信息, 优化器可以根据这些信息选择有效的执行计划,而 用户程序则难以获得这些信息。 2、若数据库的物理统计信息改变了,系统可以自 动对查询进行重新优化以选择相适应的执行计划。 3、优化器可以考虑许多种不同的执行计划。 4、优化器中具有许多复杂的优化技术。
准则5:统一的数据子语言准则。一个关系系统可 准则 以具有几种语言和多种终端使用方式(如表格填空 方式、命令方式等)。但必须有一种语言,它的语 句可以表示为具有严格语法规定的字符串,并能全 面地支持:数据定义和视图定义、数据操作(交互 式或程序式)、完整性约束、授权以及事务处理功 能(事务开始、提交、回滚)等。 准则6: 视图更新准则。所有理论上可更新的视图 准则 也允许由系统更新。“理论上可更新的视图”是指 对此视图的更新要求,存在一个与时间无关的算法, 该算法可以无二义性地把更新要求转换为对基本表 的更新序列。该准则对于系统支持数据逻辑独立性 是不可缺少的。
4.1.2 关系系统的分类
关系系统可以分为: 1、表式系统 仅支持关系(即表)数据结构,不支持集合级的操作。 所以表式系统实际上不能算是关系系统。 2、(最小)关系系统 仅支持关系数据结构和三种基本关系运算操作。 3、关系完备的系统 支持关系数据结构和所有的关系操作。 4、全关系系统 支持关系模型的所有特征。
4.2.2 一个实例 4.2.3 查询优化的一般准则
1、选择运算应尽可能地先做。 2 2、在执行连接前对关系适当地预处理。 3、把投影运算和选择运算同时进行。 4、把投影同其前或后的双目运算结合起来。 5、把某些选择同在它前面要执行的笛卡尔积结合 起来成为一个连接运算。 6、找出公共子表达式。
18_关系查询处理和查询优化

¤ 按连接属性排序 ¤ 在连接属性上建立索引
• 投影运算和选择运算同时做 目的:避免重复扫描关系 • 将投影运算与其前面或后面的双目运算结合 目的:减少扫描关系的遍数 • 某些选择运算同在其前面执行的笛卡尔积结合成为连 接运算 • 提取公共子表达式
Sname Student .Sno SC.Sno o'2' Student SC
Sname Student SC .Cno'2' SC
Ssm
优化必要性实例
• 假设1: Student:1000条,SC:10000条, 选修2号课程:50条 • 假设2: 一个内存块装:10个Student元组, 或100个SC元组 内存中一次可以存放: 5块Student元组,1块SC元组和 若干块连接结果元组 • 假设3: 读写速度:20块/秒 • 假设4: 连接方法:基于数据块的嵌套循环法
Ssm
优化必要性实例
• 求选修了2号课程的学生姓名
SELECT Student.Sname FROM student,SC WHERE Student.Sno=SC.Sno AND o='2';
• 写出可行的关系代数表达式
Sname SC .Cno '2' StudentSC
• 总时间 =105+50000+50000秒 = 100105秒 = 27.8小时 Ssm
策略2 Sname SC .Cno '2' StudentSC
• ①连接操作 读取总块数= 2100块 读数据时间=2100/20=105秒 中间结果大小=10000 (减少1000倍) 写中间结果时间=10000/10/20=50秒 • ②б 读数据时间=50秒 • ③П
第四章 关系查询处理和查询优化

第四章 关系查询处理和查询优化1、给出各类关系系统的定义:最小关系的系统;关系完备的系统;全关系型的 关系系统。
答:(最小)关系系统:仅支持关系数据结构和三种关系操作。
许多 微机关系数据库系统如FoxBASE,FoxPro等就属于这一类。
关系完备的系统: 这类系统支持关系数据结构和所有的关系代数操作(功能20世纪90年代初的许多关系数据库管理系统属于这一类。
上与关系代数等价)。
全关系系统:这类系统支持关系模型的所有特征。
即不仅是关系上完备的 而且支持数据结构中域的概念,支持实体完整性和参照完整性。
目前,大多数 关系系统已不同程度上接近或达到了这个目标。
2、试述查询优化在关系数据库系统中的重要性和可能性。
答:查询优化在关系数据库系统中有着非常重要的地位。
关系数据库系统和 非过程化的SQL语言能够取得巨大的成功, 关键是得益于查询优化技术的发展。
关系查询优化是影响RDBMS性能的关键因素。
优化对关系系统来说既是挑战又是机遇。
所谓挑战是指关系系统为了达到用户 可接受的性能必须进行查询优化。
由于关系表达式的语义级别很高,使关系系 统可以从关系表达式中分析查询语义,提供了执行查询优化的可能性。
这就为 关系系统在性能上接近甚至超过非关系系统提供了机遇。
3.对学生-课程数据库有如下的查询:查询信息系学生选修的所有课程名称:SELECT Cname FROM St,Course,SCWHERE St.Sno=SC.Sno AND o=o AND St.Sdept=’IS’试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法 树进行优化处理,画出优化后的标准语法树。
答:关系代数表达式如下:πcname(бSt.sdept=’IS’(бst.sno=sc.Sno(бo=o(ST×SC ×COURSE)))用关系代数表示的语法树如下左图:πcname πcnameбSt.sdept=’IS’ бo=oбst.sno=sc.Sno ×бsc.Cno=o бSt.sno=sc.sno πcno,cname× × Course× Course πsno πsno,cnoSt Sc St.sdept=’IS’ ScSt用关系代数表达式优化算法对原关系代数表达式进行优化,优化后的关系代数表达式如下:πcname(бo=o((бSt.sno=sc.sno(πsno(бSt.sdept=’ IS’(ST))×πsno,cno(SC))) ×πcno,cname(Course))优化处理后的标准语法树如上右图。
第四章全局查询处理和优化

查询处理概述
查询处理问题
集中查询处理器必须:
将演算查询转换为代数操作 选择最好的执行计划
例如:
SELECT ENAME FROM E,G WHERE RESP = “Manager” and E.ENO=G.ENO
第四章 分布查询处理和优化
查询处理概述
关系代数 1: ( RESP " M anager " E . EM O G . EN O ( E G )) EN AM E
查询优化的基础
• 读取自然连接结果, 执行选择运算, 需50s, 选择结果均可放 在内存 • 投影运算: • 总花费为: 105+50+50=205s 3.4分钟 Q3= sname( Students Cno=„2‟(SC))
Q3代价计算(仅考虑I/O代价)
计算对SC做选择运算的代价 • 需读SC到内存进行选择运算 • 读SC块数为: 10000/100=100 • 花费为: 100/20=5s • 选择结果为50个SC元组, 均可放在内存
域演算:{ x 1 , x 2 , . . . x n | F ( x 1 , x 2 , . . . , x n )} 其中 x‟s: 域变量, F(x1,…,xn): wff 例如: { x , y | E ( x , y , " manager
" )}
第四章 分布查询处理和优化
查询处理概述
第四章 分布查询处理和优化
第四章 分布查询处理和优化
查询处理概述
优化的查询
G 1 ' RESP
E1 '
" Manager "
( G 1)
数据库查询处理和查询优化

数据库查询处理和查询优化数据库查询是指用户通过查询语句向数据库发送请求,从数据库中获取所需的数据。
在实际应用中,数据库查询的性能对系统的响应时间和并发处理能力有重要影响。
因此,对数据库查询的处理和优化是数据库设计和开发中至关重要的一环。
数据库查询处理主要包括查询解析、查询优化、查询执行和结果返回等步骤。
首先,查询解析将用户发送的查询语句翻译为数据库内部能够处理的数据结构。
然后,查询优化会对查询语句进行优化,以减少查询的执行时间和资源消耗。
最后,查询执行将优化后的查询语句发送给数据库引擎执行,并返回查询结果给用户。
查询优化是数据库查询处理中的重要环节,目的是提高查询性能和效率。
查询优化的基本原则是尽量减少系统开销和减少数据访问次数。
以下是一些常见的查询优化技巧:1.创建适当的索引:索引可以加快查询速度,通过对需要经常查询的列创建索引,可以减少数据库的扫描次数。
2.使用合适的连接方式:对于涉及多个表关联的查询,选择适当的连接方式(如内连接、外连接)可以减少不必要的数据读取操作,提高查询性能。
3.避免全表扫描:全表扫描是一种低效的查询方式,应尽量避免使用。
可以通过创建索引、使用条件过滤等方式减少全表扫描的发生。
4.避免使用子查询:子查询是查询中的一个嵌套语句,执行效率较低。
可以通过使用连接查询或者合适的关联操作来替代子查询,提高查询性能。
5.合理设置数据库缓存和缓冲区:数据库缓存和缓冲区可以有效地减少磁盘I/O操作,提高数据库的查询性能。
合理设置缓存大小和缓冲区大小,可以充分利用内存资源,加快查询速度。
6.查询语句的优化:通过对查询语句的优化,可以减少不必要的数据读取和计算操作,提高查询性能。
例如,合理使用SELECT语句的列选择和条件过滤,减少返回结果集的大小。
7.优化表结构:通过合理设计数据库表的结构和关系,可以减少冗余数据和无效操作,提高查询性能。
例如,对表进行分解、垂直拆分或水平拆分等操作,以提高查询效率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.2 关系数据库系统的查询优化
4.2.1 查询优化概述 4.2.2 一个实例
29
4.2.1 查询优化概述
查询优化的优点不仅在于用户不必考虑如何最好
地表达查询以获得较好的效率,而且在于系统可
以比用户程序的“优化”做得更好
(1) 优化器可以从数据字典中获取许多统计信息,而用户 程序则难以获得这些信息 (2)如果数据库的物理统计信息改变了,系统可以自动对 查询重新优化以选择相适应的执行计划。在非关系系 统中必须重写程序,而重写程序在实际应用中往往是
4.1.2 实现查询操作的算法示例
11
4.1.2 实现查询操作的算法示例
一、 选择操作的实现
二、 连接操作的实现
12
一、 选择操作的实现
[例1]Select * from student where <条件表达 式> ; 考虑<条件表达式>的几种情况:
C1:无条件; C2:Sno='200215121'; C3:Sage>20; C4:Sdept='CS' AND Sage>20;
• 总的存取时间将进一步减少到数秒
43
• 把代数表达式Q1变换为Q2、 Q3,
– 即有选择和连接操作时,先做选择操作,这样参加连
接的元组就可以大大减少,这是代数优化
• 在Q3中
– SC表的选择操作算法有全表扫描和索引扫描2种方法,
经过初步估算,索引扫描方法较优 – 对于Student和SC表的连接,利用Student表上的索引, 采用index join代价也较小,这就是物理优化
48
3. 投影的串接定律
π A1,A2,…An (π B1,B2,…Bn (E))≡ π A1,A2,…An (E)
38
2. 做选择操作
– 依次读入连接后的元组,按照选择条件选取满 足要求的记录 – 假定内存处理时间忽略。读取中间文件花费的 时间(同写中间文件一样)需5×104s – 满足条件的元组假设仅50个,均可放在内存
39
3. 作投影操作
– 把第2步的结果在Sname上作投影输出,得到
最终结果
– 第一种情况下执行查询的总时间 ≈105+2×5×104≈105s – 所有内存处理时间均忽略不计
44
本章主要内容
4.1 关系数据库系统的查询处理 4.2 关系数据库系统的查询优化 4.3 代数优化
45
4.3 代 数 优 化
4.3.1 关系代数表达式等价变换规则 4.3.2 查询树的启发式优化
46
4.3.1 关系代数表达式等价变换规则
• 代数优化策略:通过对关系代数表达式的 等价变换来提高查询效率
14
[例1-C2] 以C2为例,Sno=‘200215121’,并且 Sno上有索引(或Sno是散列码)
– 使用索引(或散列)得到Sno为‘200215121’ 元组的 指针 – 通过元组指针在student表中检索到该学生
[例1-C3] 以C3为例,Sage>20,并且Sage 上有 B+树索引
37
• 设一个块能装10个Student元组或100个SC元组,在内存 中存放5块Student元组和1块SC元组,则读取总块数为
1000/10 + 1000/(10×5) ×10000/100 =100+20×100=2100块
• 其中,读Student表100块。读SC表20遍,每遍100块。 若每秒读写20块,则总计要花105s • 连接后的元组数为103×104=107。设每块能装10个元组, 则写出这些块要用106/20=5×104s
数表达式
• RDBMS一般都用查询树(语法分析树)来表示扩展
的关系代数表达式 • 把数据库对象的外部名称转换为内部表示
8
3. 查询优化
• 查询优化:选择一个高效执行的查询处理策略 • 查询优化分类 :
– 代数优化:指关系代数表达式的优化
– 物理优化:指存取路径和底层操作算法的选择
• 查询优化方法选择的依据:
36
一、第一种情况
Q1=πSname(σStudent.Sno=SC.Sno∧o='2' (Student×SC))
1. 计算广义笛卡尔积
• 把Student和SC的每个元组连接起来的做法: – 在内存中尽可能多地装入某个表(如Student表)的若干块,留出一 块存放另一个表(如SC表)的元组。 – 把SC中的每个元组和Student中每个元组连接,连接后的元组装满 一块后就写到中间文件上 – 从SC中读入一块和内存中的Student元组连接,直到SC表处理完。 – 再读入若干块Student元组,读入一块SC元组 – 重复上述处理过程,直到把Student表处理完
13
选择操作典型实现方法:
1. 简单的全表扫描方法
对查询的基本表顺序扫描,逐一检查每个元组是否满 足选择条件,把满足条件的元组作为结果输出
适合小表,不适合大表
2. 索引(或散列)扫描方法
适合选择条件中的属性上有索引(例如B+树索引或 Hash索引)
通过索引先找到满足条件的元组主码或元组指针,再 通过元组指针直接在查询的基本表中找到元组
第四章
关系查询处理和查询优化
1
• 本章目的:
– 掌握RDBMS的查询处理步骤 – 理解查询优化的概念 – 了解基本方法和技术
2
本章主要内容
4.1 关系数据库系统的查询处理 4.2 关系数据库系统的查询优化 4.3 代数优化
3
4.1 关系数据库系统的查询处理
4.1.1 查询处理步骤 4.1.2 实现查询操作的算法示例
4
4.1.1 查询处理步骤
RDBMS查询处理阶段 :
1. 查询分析
2. 查询检查
3. 查询优化
4. 查询执行
5
查询处理步骤(续)
查询语句 查询分析 词法分析 语法分析 语义分析 符号名转换 安全性检查 完整性检查 查询树(query tree) 查询优化 代数优化 物理优化等 执行策略描述 查询执行 代码生成 查询计划的执行代码
2. 读取中间文件块,执行选择运算,花费时间也为50s。 3. 把第2步结果投影输出。 第二种情况总的执行时间≈105+50+50≈205s
41
三、 第三种情况
Q3=πSname(Student ∞σo='2'(SC))
1. 先对SC表作选择运算,只需读一遍SC表,存取 100块花费时间为5s,因为满足条件的元组仅50个, 不必使用中间文件。 2. 读取Student表,把读入的Student元组和内存中 的SC元组作连接。也只需读一遍Student表共100 块,花费时间为5s。 3. 把连接结果投影输出 第三种情况总的执行时间≈5+5≈10s
– 集中式数据库
执行开销主要包括:
– 磁盘存取块数(I/O代价) – 处理机时间(CPU代价) – 查询的内存开销
I/O代价是最主要的
– 分布式数据库
总代价=I/O代价+CPU代价+内存代价+通信代价
32
查询优化的总目标:
– 选择有效的策略
– 求得给定关系表达式的值
– 使得查询代价最小(实际上是较小)
42
• 假如SC表的Cno字段上有索引
– 第一步就不必读取所有的SC元组而只需读取Cno=‘2’的 那些元组(50个)
– 存取的索引块和SC中满足条件的数据块大约总共3~4 块
• 若Student表在Sno上也有索引
– 第二步也不必读取所有的Student元组 – 因为满足条件的SC记录仅50个,涉及最多50个 Student记录 – 读取Student表的块数也可大大减少
33
4.2 关系数据库系统的查询优化
4.2.1 查询优化概述 4.2.2 一个实例
34
4.2.2 Байду номын сангаас个实例
[例3] 求选修了2号课程的学生姓名。 用SQL表达:
SELECT Sname FROM Student,SC WHERE Student.Sno=SC.Sno AND o=‘2’; 假定学生-课程数据库中有1000个学生记录, 10000个选课记录 其中选修2号课程的选课记录为50个
– 算法二:找到Sdept=‘CS’的一组元组指针,
通过这些元组指针到student表中检索 对得到的元组检查另一些选择条件(如Sage>20)是否满足 把满足条件的元组作为结果输出。
16
二、 连接操作的实现
• 连接操作是查询处理中最耗时的操作之一
• 本节只讨论等值连接(或自然连接)最常用的 实现算法
35
系统可以用多种等价的关系代数表达式来完成 这一查询:
Q1=πSname(σStudent.Sno=SC.Sno∧o='2' (Student×SC)) Q2=πSname(σo='2' (Student∞ SC)) Q3=πSname(Student ∞ σCno='2'(SC))
• 关系代数表达式的等价:指用相同的关系 代替两个表达式中相应的关系所得到的结 果是相同的 • 两个关系表达式E1和E2是等价的,可记为 E1≡E2
47
常用的等价变换规则
1. 连接、笛卡尔积交换律 设E1和E2是关系代数表达式,F是连接运算的条件,则有 E1 × E2≡E2 × E1 E1 ∞E2≡E2 ∞ E1 E1 ∞ E2≡E2 ∞E1 2. 连接、笛卡尔积的结合律 设E1,E2,E3是关系代数表达式,F1和F2是连接运算的条件, 则有 (E1 × E2) × E3≡E1 × (E2 × E3) (E1 ∞ E2) ∞ E3≡E1 ∞ (E2 ∞ E3) (E1 ∞ E2) ∞ E3≡E1 ∞(E2 ∞ E3)