第2章 关系数据库 2.1 关系模型 2.2 关系代数 2.3 查询优化.

Slides:



Advertisements
Similar presentations
第2章 关系数据库基础 数据库原理应用与实践 SQL SERver2014(第2版) 主编 贾铁军 科学出版社
Advertisements

Database Principles & Applications
信号与系统 第三章 傅里叶变换 东北大学 2017/2/27.
复习: :对任意的x∈A,都有x∈B。 集合A与集合B间的关系 A(B) A B :存在x0∈A,但x0∈B。 A B A B.
第5章 查询处理和优化 5.1 引言 5.2 代数优化 5.3 依赖于存取路径的规则优化 5.4 代价估算优化*
第3章 关系数据库的基本理论 冯万利.
Principles and Applications of the Database
河北化工医药职业技术学院 数据库原理及应用教案.
Access数据库基础 系列教学课件 安丘市职业中专 雷云龙.
第二章 关系数据库 2.1 关系模型概述 2.2 关系数据结构 2.3 关系的完整性 2.4 关系代数 2.5 关系演算 2.6 小结.
An Introduction to Database System An Introduction To Database System
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
软件设计师培训.
高级数据库技术 金培权
计算机应用基础 上海大学计算中心.
常用逻辑用语复习课 李娟.
Database Principles & Applications
第5章 数据库基础 5.1 数据库系统概述 5.2 数据模型 5.3 关系模型 5.4 关系数据库 5.5 常见的关系数据库管理系统简介.
第2章 关系数据库系统.
第四章 关系系统及其查询优化 这一章包括两个内容,一是关系系统(关系数据库系统的简称),二是关系系统的查询优化。第一部分讨论关系系统的定义和分类;第二部分讨论关系系统中查询优化的概念、查询优化的基本原理和技术。
第二章关系数据库 2.1关系数据库概述 2.2关系数据结构 2.3关系的完整性 2.4关系代数 2.5关系演算** 2.6关系数据库管理系统.
作业4讲评.
数据库技术 第二章 关系数据库 中国科学技术大学网络学院 阚卫华.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
SPARQL若干问题的解释 刘颖颖
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
An Introduction to Database System
第2章 关系数据库数学模型 本章导读: 2.1 关系模型概述 2.2 关系代数的原理 2.3 关系代数 2.4 关系演算
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
第2章数据基础知识 2.1数据库基本概念 2.1.1数据库技术的发展
第二章 Java语言基础.
第三章 关系模型.
数据库应用技术 SQL Server 2005.
Thanks for the Slides from Renmin U
第二章关系数据库 2.1关系数据库概述 2.2关系数据结构 2.3关系的完整性 2.4关系代数 2.5关系演算** 2.6关系数据库管理系统.
1.1 数据库基本概念 1.2 数据模型 1.3 关系数据库 1.4 Access2010简介
数据库系统概论 An Introduction to Database System
An Introduction to Database System An Introduction to Database System
第二章 关系数据库 2.1 关系数据库的基本概念 2.2 关系模型及其描述 2.3 关系代数 2.4 关系演算 本章小结.
C语言程序设计 主讲教师:陆幼利.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
作业2讲评.
5.2 常用统计分布 一、常见分布 二、概率分布的分位数 三、小结.
VB与Access数据库的连接.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
Thanks for the Slides from Renmin U
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
iSIGHT 基本培训 使用 Excel的栅栏问题
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
3.16 枚举算法及其程序实现 ——数组的作用.
1.把下面的关系模式转化为E-R图 1)系(系号,系名,电话) 2)教师(工号,姓名,性别,年龄,系号)
1.2 子集、补集、全集习题课.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
上杭二中 曾庆华 上杭二中 曾庆华 上杭二中 曾庆华.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
基于列存储的RDF数据管理 朱敏
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
VB与Access数据库的连接.
第2章 关系模型和 关系运算理论.
WEB程序设计技术 数据库操作.
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
§4.5 最大公因式的矩阵求法( Ⅱ ).
第二次课后作业答案 函数式编程和逻辑式编程
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
第4章 关系系统及其查询优化 关系系统 关系系统的查询优化 关系系统的分类 关系系统及其查询优化 查询优化的一般准则 关系代数等价变换规则
关系数据库 第2章 关系数据结构 关系定义 关系性质 关系模式 关系的完整性 实体完整性 参照完整性 用户定义完整性 关系代数 关系演算
Presentation transcript:

第2章 关系数据库 2.1 关系模型 2.2 关系代数 2.3 查询优化

2.1 关系模型 1.关系模型的特点及组成 特点: 结构简单,表达力强 语言的一体化 非过程化的操作 坚实的数学基础 操作效率较低 组成: 2.1 关系模型 1.关系模型的特点及组成 特点: 结构简单,表达力强 语言的一体化 非过程化的操作 坚实的数学基础 操作效率较低 组成: 关系数据结构 关系数据操作 关系完整性约束 关系DB系统 是支持关系模型的DB系统

2.1 关系模型 2、关系数据结构 a 0 b 0 c 0 a 1 b 1 c 1 D1XD2: 1)域: 2.1 关系模型 D1XD2: 2、关系数据结构 1)域: 是一组具有相同数据类型的值的集合。 2)笛卡尔积 给定一组域 D1,…,Dn (可有相同的域)。其笛卡尔积为: DlXD2X…XDn={(d1,d2,…,dn)| di∈Di,i=1,2…,n} D1 D2 a 0 b 0 c 0 a 1 b 1 c 1 姓名 性别 c 0 a 1 b 1 例:姓名集D1={a,b,c} 性别集D2={0,1}

2.1 关系模型 3)关系 笛卡尔积的有限子集 称作对应域上的关系。 关系:是元组的集合。 R(D1,D2, …,Dn) R是n元(目)关系 2.1 关系模型 候选键 主键 3)关系 笛卡尔积的有限子集 称作对应域上的关系。 关系:是元组的集合。 R(D1,D2, …,Dn) R是n元(目)关系 4)术语: 候选键 主键、主属性 非主属性 外键(外来关键字) 外键提供了一种表示两个关系联系的方法。 S(Sno,Cardno,Sname,Sage…) SC(Sno,Cno,Grade) 非主属性 两个主属性 9801 01 95 02 80 9802 88 03 92 9803 Sno Cno Grade ……

2.1 关系模型 5)关系的性质: (1)每列的值为同一类型。 (2)每列具有不同的属性名 (3)任意两元组不能完全相同。 2.1 关系模型 5)关系的性质: (1)每列的值为同一类型。 (2)每列具有不同的属性名 (3)任意两元组不能完全相同。 (4)行的次序可以互换。 (5)列的次序可以互换。 (6)分量值是原子的。 分量值 属性名 学号 姓名 年龄 元组 关系的类型 : 基本关系 查询表 视图表 职工 工资 基本 奖金 .. … ; 网虫? +5? 不允许

2.1 关系模型 6)关系模式与关系数据库 关系模式:是关系结构的描述和定义,即二维表的表结构定义。 关系实质上是一张二维表。 2.1 关系模型 6)关系模式与关系数据库 关系模式:是关系结构的描述和定义,即二维表的表结构定义。 关系实质上是一张二维表。 因此,关系模式必须指出表的结构,即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的对应关系。 关系模式简记为关系的属性名表: R(U) =R(A1 ,A2,A3,….An) 例:学生(学号,姓名,总成绩) 关系数据库: 对应关系模型的一个应用领域的全部关系的集合。 联系?

2.1 关系模型 3. 关系模型的数据操作 关系模型中常用的关系数据操作有四种: 2.1 关系模型 3. 关系模型的数据操作 关系模型中常用的关系数据操作有四种: (1)数据查询。基本操作有:关系属性的指定;关系元组的选择;两个关系的合并。 (2)数据插入。在关系内插入一些新元组。 (3)数据删除。在关系内删除一些元组。 (4)数据修改。修改关系元组的内容。可分解为:先删除要改的元组,再插入新元组。 关系数据操作是一种集合式操作。复杂的关系数据操作可通过基本的关系数据运算获得。此外,还需要有关系的操作规则及具体的关系数据语言来实现这些操作。 关系数据语言可分为研究用的抽象语言和可使用的实现语言。关系数据语言大体分成三类,如表2-3。

2.1 关系模型 4. 关系的完整性 1)实体完整性 三类完整性约束: 实体完整性 由关系系统自动支持 参照完整性 用户定义的完整性 2.1 关系模型 4. 关系的完整性 三类完整性约束: 实体完整性 参照完整性 用户定义的完整性 由关系系统自动支持 1)实体完整性 实体完整性规则 : 若属性A是基本关系R的主码属性,则属性A不能取空值。 是应用领域需要遵循的约束条件 说明: (1)该规则是对基本关系的约束和限定。 (2)实体有唯一性标识—主键。 (3)主键上的属性不能取空值。

2.1 关系模型 2)参照完整性 引用关系: 关系中的某属性的值需要参照另一关系的属性来取值。 例1:学生(学号,姓名,性别,专业号,年龄) 2.1 关系模型 2)参照完整性 引用关系: 关系中的某属性的值需要参照另一关系的属性来取值。 例1:学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 引用 例2: 学生(学号,姓名,性别,专业号,年龄,合作者号) 引用

2.1 关系模型 例:学生(学号,姓名,性别,专业号,年龄) 设:基本关系R、S(可为同一关系)。 若F是R的一个(组)属性,但不是R的键。 2.1 关系模型 设:基本关系R、S(可为同一关系)。 若F是R的一个(组)属性,但不是R的键。 如果F与S的主键K相对应,则称F是R的外键。 说明:S的主键K和R的外键F必须定义在同一个(组)域上 R为参照关系,S为目标关系。 外键 参照关系 例:学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 引用 目标关系

2.1 关系模型 参照完整性规则 若属性(组) F是R的外键它与S的主键K相对应, 则对于R中每个元组在F上的值必为下列之一: 2.1 关系模型 参照完整性规则 若属性(组) F是R的外键它与S的主键K相对应, 则对于R中每个元组在F上的值必为下列之一: (1)取空值(F的每个属性值均为空); (2)等于S中某个元组的主键值。 例:学生(学号,专业号,姓名,….) 关系中每个元组的专业号取值: (1)空值(未知值); (2)非空值。 定义了外键与主键之间的引用规则。 指外键不能引用不存在的主键值。 3)用户定义的完整性 反映具体应用所涉及的数据应满足的语义要求、约束条件。 例:学生关系中的年龄在15~45之间,选修关系中的成绩在0~100之间。

2.2 关系代数 关系数据语言分类: 1)关系代数 2)关系演算 元组关系演算 域关系演算 3)具有双重特点的语言(SQL) 共同特点是: 2.2 关系代数 关系数据语言分类: 1)关系代数 2)关系演算 元组关系演算 域关系演算 3)具有双重特点的语言(SQL) 共同特点是: 具完备的表达能力 是非过程化的集合操作语言 功能强 可嵌入、又可独立使用

2.2 关系代数 关系代数是一种抽象的查询语言。它以关系为运算对象,通过对关系进行“组合”或“分割”,得到所需的数据集合—关系。 分类:集合运算(并、交、差;广义笛卡尔积) 关系运算及其扩充 一、 集合运算 设:t 为元组变量;R、S为同类(相同元、相应属性同域)关系;下列运算结果为同类关系: 1.并运算: RUS ={t |(t∈R)∨(t ∈ S)} 2.差运算: R—S={t |(t∈R)∧(t  S)} 3.交运算: R∩S={t |(t∈R)∧(t ∈ S)} R∩S= R-(R-S)

2.2 关系代数 集合运算示例 R 2 A 1 3 a 3 c b 2 d c 2 d e 5 f g 6 f R 1 A 2 3 2.2 关系代数 集合运算示例 R 2 A 1 3 a 3 c b 2 d c 2 d e 5 f g 6 f R 1 A 2 3 b 2 d b 3 b c 2 d d 3 b R 1 ∪ 2 A 3 b 2 d b 3 b c 2 d d 3 b a 3 c e 5 f g 6 f R 1 ∩ 2 A 3 b 2 d c 2 d R 1 - 2 A 3 b 3 b d 3 b

R×S={tr ts|(tr∈R)∧(ts ∈ S)} 2.2 关系代数 4.广义笛卡尔积: 设:R、S为不同类关系,则结果为不同类关系: R×S={tr ts|(tr∈R)∧(ts ∈ S)} m元关系 R × S R . A 1 2 3 S b 2 d 2 d b 2 d 3 b b 3 b 2 d b 3 b 3 b c 2 d 2 d c 2 d 3 b d 3 b 2 d d 3 b 3 b 连接为 m+n元关系 n元关系 R A 1 2 3 b 2 d b 3 b c 2 d d 3 b S A 2 3 2 d 3 b

2.2 关系代数 记号:设t为R的元组变量 设:R(A1,A2,…An)=R(U) t[Ai] (Ai为属性) t[A] (A为属性集) 2.2 关系代数 记号:设t为R的元组变量 设:R(A1,A2,…An)=R(U) t[Ai] (Ai为属性) t[A] (A为属性集) 例:t [学号 ]--R中学号上的值 t [学号,姓名] 学号 姓名 年龄 t

σF(R)={t |(t∈R) ∧F( t )=true} 2.2 关系代数 R A 1 2 3 a 3 f b 2 d c 2 d e 6 f g 6 f 二、关系运算 1. 选择 (σ) : 是关系行上的选择,产生同类关系。 σF(R)={t |(t∈R) ∧F( t )=true} 含义:由R中满足F条件的元组组成。 其中:F由属性名(值)、比较符、逻辑运算符组成。 例: σSage≥19(Student) 例: σA2>5 ∨A3 ≠“f”(R) √ √ √ √ σ A2>5 ∨ A3 ≠ “f” (R) A 1 2 3 b 2 d c 2 d e 6 f g 6 f

2.2 关系代数 (R) ∏ R A 1 2 3 a 3 f b 2 d c 2 d e 6 f g 6 f 3, 2 A 2.2 关系代数 R A 1 2 3 a 3 f b 2 d c 2 d e 6 f g 6 f 3, 2 ∏ A (R) 2. 投影运算(∏): 是关系列的选择,产生不同类关系 ∏A(R)={t[A] |(t∈R) } 含义: R中取属性名表A中指定 的列,消除重复元组。 A 3 2 f 3 d 2 f 6 9801 1 95 2 90 9802 88 3 92 9803 Sno Cno Grade 80 …… SC表 例: ∏ Sno,Cno(SC) 用关系代数表示查询: 例:查选2号课程的学生记录。 例: 成绩在90分以上的学生号。 解: σCno=‘2’(SC) 解: ΠSno(σGrade≥90(SC))

R ⋈ S={tr ts|(tr∈R)∧(ts ∈ S) ∧ tr[A] θ ts[B]} 2.2 关系代数 3. 连接运算:连接也称为θ连接。它从两个关系的笛卡尔积中选取属性间满足一定条件的元组。 R ⋈ S={tr ts|(tr∈R)∧(ts ∈ S) ∧ tr[A] θ ts[B]} AθB ① ② 比较运算符 = σ R. A θ S. B(R×S) 含义:从R × S中选取R关系在A属性组上的值与S关系在B属性组上值满足θ关系的元组。 大于连接:θ为“>”的连接。 等值连接:θ为“=”的连接。 R ⋈ S= σR. A = S. B(R×S) A=B 例:

2.2 关系代数 R⋈S=Π属性名表 (σR.Bi=S.Bi (R×S)) 例: 3. 连接运算: 2.2 关系代数 3. 连接运算: 自然联接:设R、S有同名属性 Bi ( i=1,2….k) R⋈S=Π属性名表 (σR.Bi=S.Bi (R×S)) ②选同名属性值也相同的行 ①笛卡尔积 ③选择列并去掉重复属性 例:

2.2 关系代数 ΠA(σF (R)) 目标 A 条件 F 来源 R 例:查选修002号课程的学生姓名与年龄。 2.2 关系代数 ΠA(σF (R)) 学生-课程数据库表见教材: S(sno,sname,sex,age,dept) C(cno,cname, credit , pcno) SC(sno,cno,grade) 目标 A 条件 F 来源 R 例:查选修002号课程的学生姓名与年龄。 ∏sname,age(S ⋈ σcno=‘002’ (SC)) 例: 查询至少选修了一门其直接先行课为005号课程的学生名。 ∏sname(σpcno=‘005’ (C ⋈ SC ⋈ S))

2.2 关系代数 R S 4. 除(Division) 关系代数定义了除运算。但实际应用中,当关系R真包含了关系S时,R÷S才有意义。 2.2 关系代数 R S 4. 除(Division) 关系代数定义了除运算。但实际应用中,当关系R真包含了关系S时,R÷S才有意义。 R能被S除尽的充分必要条件是: R中的属性包含S中的所有属性;R中有一些属性不出现在S中。 设R为r元、S为s元关系(r>s>0),当关系R真包含了关系S时,R÷S可用下式计算: R÷S =Π1,2,…r-s(R)-Π1,2,…r-s((Π1,2,…r-s(R)×S)-R) 【例2.8】设R(S#,P#)、W1(P#)、W2(P#)、W3(P#)。 则R÷W1可表示为: ΠS#(R)-ΠS#((ΠS#(R)×W1)-R) 同理可列出另外两式。

2.2 关系代数 除法示例(例2.8): 例R÷Wi的运算结果可理解为: 2.2 关系代数 R S# P# S1 P1 S1 P2 S1 P3 S1 P4 S1 P5 S1 P6 S2 P1 S2 P2 S3 P2 S4 P2 S4 P4 S4 P5 除法示例(例2.8): W1 P# P1 W3 P# P1 P2 P3 P4 P5 P6 R ÷ W2 R ÷ W1 R ÷ W3 S# S1 S2 S# S1 S4 W2 P# P2 P4 S# S1 例R÷Wi的运算结果可理解为: R中包含Wi属性值的那些元组在R与Wi的属性名之差(即S#)上的投影。

2.2 关系代数 例:查所选课程包含学生210101所选全部课程的学生号和姓名。 2.2 关系代数 设学生-课程数据库(S、SC、C) 例:查所选课程包含学生210101所选全部课程的学生号和姓名。 ① ② 目标A1、A2 ∏ sno,sname( S) ⋈ (∏ sno,cno(SC) ÷ ∏ cno (σsno=210101 (SC))) 例:查询选修了全部课程的学生学号与姓名。 (∏ sno,cno(SC) ÷ ∏ cno ( (C))) ∏ sno,sname( S) ⋈

2.2 关系代数 关系代数五种基本运算: 投影,选择,并,差,笛卡尔积 5种基本运算的作用: 1)关系的属性指定 2.2 关系代数 关系代数五种基本运算: 投影,选择,并,差,笛卡尔积 5种基本运算的作用: 1)关系的属性指定 ∏ A1 , A2 , …, An (R) 2)关系的元组选择 σF (R) 3)两个关系的归并 R1×R2 4)关系中元组的插入 R1∪R2 5)关系中元组的删除 R1-R2

2.2 关系代数 5. 扩充的关系运算: (2) 赋值: R <- S (3) 外连接 : R和S自然连接时,保留原该舍弃的元组, 2.2 关系代数 5. 扩充的关系运算: (1) 广义投影 : ΠE1, E2 …En(R) (2) 赋值: R <- S (3) 外连接 : R和S自然连接时,保留原该舍弃的元组, 同时在这些元组新增加的属性上填空值(NULL) (4) 半连接:R和S的自然连接只在关系R(或关系S)的 属性集上的投影。 R和S的半连接记为R ⋉ S 见教材例: (5) 聚集: G 聚集函数名(属性) (关系表达式)

5. 扩充的关系运算 Z Y X W a b c null b b f null c a d null null b c d (6)外部并:由R和S中的所有属性(无重复)组成, 其元组由属于R或属于S的元组组成, 并在增加的属性填上空值。 说明:R、S可不同类 Z Y X W a b c null b b f null c a d null null b c d null a d b null e f g R与S的外部并 Y X W a b c b b f c a d (a) Z b c d a d b e f g (b) R S

∏S.姓名( ) 5. 扩充的关系运算 (7)重命名 ①ρx(E):返回表达式E的结果,并把名字x赋给E。 ②ρx(A1,A2,……,An)(E): 其含义为返回表达式E的结果,并把名字x赋给E, 同时将各属性更名为A1,A2,……,An。 例: 设R(姓名,课程,成绩),求数学成绩比王红高的学生名 (课程=‘数学’姓名=‘王红’(R)) ∏S.姓名( ⋈ (  课程=‘数学’ S(R)) R.成绩<S.成绩 )

2.3 查询优化 1.关系DB的查询优化及其目标 查询优化:从查询的多个执行策略中进行合理选择的过程。 2.3 查询优化 1.关系DB的查询优化及其目标 查询优化:从查询的多个执行策略中进行合理选择的过程。 目标:选择有效的策略,求得关系式的值,以提高其查询效率。 基本途径可以分为两种:用户处理和机器自动处理 查询优化器: 由DBMS自动生成并从中选取较优查询计划的程序。 查询的开销主要包括: 在单机数据库中:总代价 = I/O代价 + CPU代价 在多用户环境下:总代价 = I/O代价 + CPU代价 + 内存代价 在网络环境下: 总代价 = …… + 网络代价 查询的执行开销与多个因素有关: 软件环境、硬件环境、数据量、方法。

2.3 查询优化 关系数据库查询过程: DML处理器 关系代数语法树 查询优化器 查询计划 代码生成器 可执行代码 运行处理器 2.3 查询优化 关系数据库查询过程: DML处理器 关系代数语法树 查询优化器 查询计划 代码生成器 可执行代码 运行处理器 … 将查询转为 内部格式 …制定执行策略 …生成执行代码 …执行查询代码 DB (DD) 查询 结果 有关数据的 统计信息

例: Student表有l03个学生记录,每人平均选10门课, SC表共有1000*10=l04个选课记录。要求: 为什么要查询优化? 例: Student表有l03个学生记录,每人平均选10门课, SC表共有1000*10=l04个选课记录。要求: 查学生“王林”选课成绩在85分以上的课程号。 SELECT cno FROM S,SC WHERE S.sno=SC.sno AND sname=‘王林’ AND grade > 85 ; 条件 F1 条件 F2 条件 F3 等价的关系代数表示: ① ∏Cno(σ F1 ∧F2 ∧F3 ( S×SC ) ) ② ∏Cno(σ F2 ∧F3 ( S ⋈ SC ) ) ③ ∏Cno(σF2 (S) ⋈ σF3 (SC) ) 哪种效率高? 连接时间复杂度为: ① 103×104=O(107) ② 103×10=O(104) ③ 1×10=O(101)

对执行基本运算(关系扫描与连接)的次数进行分析: ① ∏Cno(σ F1 ∧F2 ∧F3 ( S×SC ) ) ② ∏Cno(σ F2 ∧F3 ( S ⋈ SC ) ) ③ ∏Cno(σ F2 (S) ⋈ σ F3 (SC) ) ①先在两表上做× ,产生1000*10000=107个连接记录,再在其上进行先σ后∏操作。其基本运算的次数为:3*107。 ②先在两个表上做⋈ ,产生1000*10=104个连接记录,再在其上进行先σ后∏操作。其基本运算的次数为:107+2*104。 ③先分别在两个表上做σ,再做 ⋈ ,产生1*10=10个连接记录,再在其上进行∏ 。其基本运算的次数为:104+103+2*101。 连接时间复杂度为: ① O(107) ② O(104) ③ O(101)

4) 让投影同其前或其后的其它运算同时进行。 例: ∏ sno(S1-S2) 、 S1 ⋈ ∏ sno (S2) 2. 查询优化的一般策略 基本原则:尽量减少查询的中间结果 1) 尽可能先做选择、投影运算。 2) 在执行连接前对关系适当地预处理。 其方法有:a. 索引连接方法 SC表(m个记录) b. 排序合并连接方法 3) 同时进行投影运算和选择运算。 例: ∏ sno(σ grade≥90(SC)) 4) 让投影同其前或其后的其它运算同时进行。 例: ∏ sno(S1-S2) 、 S1 ⋈ ∏ sno (S2) 5) 合并笛卡尔积与其后的选择为连接运算。 例: σR. A > S. C (R×S)= R ⋈ S A>C 6) 找出公共子表达式。 O(n+m) …… 86001 … 8600 2 … 86100 … 86001 … 86002 86001 key 地址 …… Student (n个记录) sno sname …… 86001 王萧虎 86002 李云钢 86005 郭敏星 86006 高 灵 索引文件有序 主文件(随机)

∏A1,A2…An (∏B1,B2….Bn (E)) ≡ ∏A1,A2…An (E) 2.3 查询优化 3. 关系代数表达式的等价规则 两个关系表达式El和E2是等价的,可记为E1≡E2。 常用的等价变换规则: 3)投影的串接定律 ∏A1,A2…An (∏B1,B2….Bn (E)) ≡ ∏A1,A2…An (E) 若不是子集? 子集 4)选择的串接定律 σ F1(σ F2 (E)) ≡ σ F1 ∧F2 (E) 5)选择与投影的交换律(两种形式) (1)若F只涉及A1,A2…An 属性: ∏A1,A2…An (σ F (E)) ≡ σ F (∏ A1,A2…An (E)) 变两次投影为一次 多出条件F未涉及属性?

∏A1,A2…An (σ F (E)) σ F (E1 × E2) ≡ σ F1 ( E1) × σ F2 ( E2) 3. 关系代数表达式的等价规则 意义:条件涉及的属性前移—例: ∏A (σR .A = S. B(R×S)) = ∏A (σR .A = S. B(∏A,B (R×S)) = ∏A ( σR .A = S. B (∏A (R)×∏B (S))) (2)若F中还涉及 其他属性B1,…. Bn: ∏A1,A2…An (σ F (E)) ≡ ∏A1,A2…An (σ F (∏A1,A2… An,B1 ,… Bn (E))) F中涉及的其他属性 6)选择与笛卡儿积的交换律 σ F (E1 × E2) ≡ σ F1 ( E1) × σ F2 ( E2) F1只涉及E1中属性 9)投影与笛卡儿积的交换律 ∏A1,A2…An,B1,…Bn (E1 × E2) ≡ ∏A1,A2…An (E1) × ∏B1,B2 … Bn(E2) 减少连接的元组数 是E1中属性 减少连接的数据量

例:Πcno(σ F1∧F2 ∧F3 (Student×SC)) //①式 3. 关系代数表达式的等价规则 11.选择对自然连接的分配律:若F中涉及属性都是El中属性,则: (1) σF(El ⋈ E2)≡ σF(El)⋈ E2 若F=F1∧F2,并且F1只涉及E1中、F2只涉及E2中的属性,则: (2) σF(E1 ⋈ E2)≡ σF1(El) ⋈σF2(E2) 12. 选择与连接操作的结合:设A1…,An是E1的属性,B1…,Bm 是E2的属性,F为形如:E1.AiθE2.Bj 所组成的合取式则: σF(El×E2)≡ El⋈ E2 F F1: S.sno=SC.sno 例:Πcno(σ F1∧F2 ∧F3 (Student×SC)) //①式 = Πcno(σ F2∧F3(σF1 (Student×SC ))) //用规则4得到 = Πcno(σ F2∧F3(Student ⋈ SC)) //用规则12得②式 = Πcno(σ F2(Student) ⋈ σ F3(SC)) //再用规则11得③式

ΠA 4. 关系代数表达式的优化算法 算法:关系表达式的优化。 五种基本运算表示 × 例: σF 输入:一个关系表达式的语法树。 S R ΠA σF 算法:关系表达式的优化。 输入:一个关系表达式的语法树。 输出:计算该表达式的程序。 五种基本运算表示 (1)用规则4把形如: σF1∧F2... (E) 变为: σF1(σF2...(E)) 再利用规则5~8 把每个选择运算尽量移到树叶。 (2)对每个投影利用规则3、5、9、l0,尽量把它移向树叶。 (3)利用规则3~5把选择和投影的串接合并成单个选择、单个投影或一个选择后跟一个投影。 (得到优化的基本语法树) (4)使用规则12 使选择运算与笛卡尔积结合成连接运算。 (5)对语法树中的内节点进行分组。 (6)找出查询树中的公共子树。 (7)输出由分组结果得到的优化语法树。 例:

∏sno,sname(σ cname=‘DB’∧sex=‘女’ (SC ⋈ C ⋈ S)) 4. 关系代数表达式的优化算法---- 举例 对P76表(S、SC、C):查选修“DB”课程的女生学号及姓名。 ∏sno,sname(σ cname=‘DB’∧sex=‘女’ (SC ⋈ C ⋈ S)) = ∏sno, sname(σ cname=‘DB’∧sex=‘女’(∏L σ F (SC×C×S)) 其中:L代表无重复的全部属性; F代表: SC. cno=C. cno ∧SC. sno=S. sno ① ② ③ ④ (1)用规则4: 分解 F为①②③④。 对每个选择用规则尽量移到树叶。 (2)对每个投影用规则尽量移向树叶。

举例:∏sno, sname(σ cname=‘DB’∧sex=‘女’(∏LσF (SC×C×S)) 语法树 ∏sno,sname ∏sno,sname σSC. sno=S. sno σcname=‘DB’∧sex=‘女’ ① ② ∏L × ? σSC. cno=C. cno S σsex=‘女’ σSC. cno=C. cno ∧ SC. sno=S. sno ③ ④ × S × C SC × C σcname=‘DB’ SC

σSC. sno=S. sno σsex=‘女’ σSC. cno=C. cno σcname=‘DB’ × ∏sno,sname 5)选择与投影的交换律 (2)若F涉及属性B1…. Bn: ∏A1,A2…An(σF(E))≡∏A1…An(σF(∏A1… An,B1… Bn (E) )) × σSC. sno=S. sno SC ∏sno,sname σSC. cno=C. cno S σsex=‘女’ C σcname=‘DB’ 9)投影与笛卡儿积的交换律 ∏A1…An,B1,…Bn (E1 × E2) ≡ ∏A1…An (E1) × ∏B1… Bn(E2) F涉及属性及重复投影 先用规则5 再用规则9 ∏SC. sno ∏S.sno ,S.sname 条件F涉及属性 ∏SC. sno ,SC. cno ∏C. cno

σsex=‘女’ ⋈ σcname=‘DB’ σSC. sno=S. sno σsex=‘女’ σSC. cno=C. cno 举例 S σsex=‘女’ ∏S. sno,S. sname ∏sno,sname ⋈ SC ∏ SC. sno SC. cno ∏SC. sno σcname=‘DB’ C ∏C. cno 合并操作为⋈ ∏sno,sname (3)合成选择或投影 (4) 用规则12,将σ与×合成连接运算 (5) 对节点分组 (6)找出公共子树 (7)输出优化语法树 σSC. sno=S. sno × ∏S. sno,S. sname ∏SC. sno S σsex=‘女’ 一次扫描完成 σSC. cno=C. cno × σcname=‘DB’ C ∏C. cno SC ∏ SC. sno SC. cno

2.3 查询优化 5.查询优化的一般步骤: ①将查询表示成关系代数语法树。 ②根据变换规则将其转换成标准优化形式。 ③选择低层的操作算法。 2.3 查询优化 5.查询优化的一般步骤: ①将查询表示成关系代数语法树。 ②根据变换规则将其转换成标准优化形式。 ③选择低层的操作算法。 对语法树中的每一操作需要根据存取路径、数据的分布、聚簇等信息来选择具体的执行算法。 ④生成、选择查询计划。 用到查询优化的一般策略

第2章 关系数据库--- 要点 1、术语: 3、关系数据语言 模式、关系、关系DB 关系代数 元组、属性、域、码等 集合运算: 2、关系模型的组成 关系数据结构 关系操作集合 关系完整性约束 3、关系数据语言 关系代数 集合运算: (并、交、差、广义笛卡尔积) 关系运算: (投影、选择、连接和除运算) 4、关系DB的查询优化 目标、一般策略 优化方法 本章练习: 本章思考题: 1、关系模型的组成? 2、自然连接与条件连接的区别?