第 2 章 关系数据库

43
武武武武武武武武武武武武武武武 2.1 关关关关 2.2 关关关关 2.3 关关关关 关2关 关关关关关

Upload: alexandria-anagnos

Post on 30-Dec-2015

53 views

Category:

Documents


3 download

DESCRIPTION

第 2 章 关系数据库. 2.1 关系模型. 2.2 关系代数. 2.3 查询优化. 1. 关系模型的特点及组成 特点: 结构简单,表达力强 语言的一体化 非过程化的操作 坚实的数学基础 操作效率较低 组成: 关系数据结构 关系数据操作 关系完整性约束. 关系 DB 系统 是支持关系模型的 DB 系统. 2.1 关系模型. 2 、关系数据结构 1) 域 : 是一组具有相同数据类型的值的集合。 2) 笛卡尔积 给定一组域 D1 , … , Dn - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.1 关系模型

2.2 关系代数

2.3 查询优化

第 2章 关系数据库

Page 2: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.1 关系模型

1.关系模型的特点及组成

特点: 结构简单,表达力强 语言的一体化 非过程化的操作 坚实的数学基础 操作效率较低 组成: 关系数据结构 关系数据操作 关系完整性约束

关系DB系统 是支持关系模型的DB系统

Page 3: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.1 关系模型 2、关系数据结构 1)域 : 是一组具有相同数据类型的值的集合。 2)笛卡尔积 给定一组域 D1 …, , Dn (可有相同的域 )。其笛卡尔积为: DlXD2X…XDn={(d1, d2 …, , dn)|

di∈Di, i=1,2…,n}

例:姓名集D1={a,b,c} 性别集 D2={0,1}

D1XD2:

D1 D2

a 0b 0 c 0a 1b 1c 1

姓名 性别

c 0a 1b 1

Page 4: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.1 关系模型 3)关系 笛卡尔积的有限子集 称作对应域上的关系。 关系:是元组的集合。 R(D1, D2 …, , Dn)

R是 n元 (目 )关系 4)术语:

候选键 主键、主属性 非主属性 外键(外来关键字)

外键提供了一种表示两个关系联系的方法。

S(Sno, Cardno, Sname, Sage…)

SC(Sno, Cno,Grade)

候选键主键

两个主属性非主属性

9801 01 95

9801 02 80

9802 01 88

9802 03 92

9803 02

Sno Cno Grade

80……

Page 5: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.1 关系模型 5)关系的性质:(1)每列的值为同一类型。(2)每列具有不同的属性名(3)任意两元组不能完全相同。(4) 行的次序可以互换。(5) 列的次序可以互换。(6) 分量值是原子的。 9801 黄林 19

9802 李红 209803 张英 21…… …… ….9830 王刚 20

+5?

学号 姓名 年龄

; 网虫 ?

不允许

元组

分量值属性名

关系的类型 : 基本关系 查询表 视图表

职工

工资基本 奖金

.. … …

Page 6: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.1 关系模型

6)关系模式与关系数据库 关系模式:是关系结构的描述和定义,即二维表的表结构定义。 关系实质上是一张二维表。 因此,关系模式必须指出表的结构,即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的对应关系。

关系模式简记为关系的属性名表 : R(U)

=R(A1 ,A2,A3 …, .An) 例 :学生(学号 ,姓名 ,总成绩) 关系数据库: 对应关系模型的一个应用领域的全部关系的集合。 联系?

Page 7: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.1 关系模型 3. 关系模型的数据操作 关系模型中常用的关系数据操作有四种: (1)数据查询。基本操作有:关系属性的指定;关系元组的选择;两个关系的合并。

(2)数据插入。在关系内插入一些新元组。 (3)数据删除。在关系内删除一些元组。 (4)数据修改。修改关系元组的内容。可分解为:先删除要改的元组,再插入新元组。

关系数据操作是一种集合式操作。复杂的关系数据操作可通过基本的关系数据运算获得。此外,还需要有关系的操作规则及具体的关系数据语言来实现这些操作。

关系数据语言可分为研究用的抽象语言和可使用的实现语言。关系数据语言大体分成三类,如表 2-3 。

Page 8: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.1 关系模型

4. 关系的完整性 三类完整性约束:

实体完整性 参照完整性 用户定义的完整性

说明: (1)该规则是对基本关系的约束和限定。

(2) —实体有唯一性标识 主键。 (3)主键上的属性不能取空值。

1)实体完整性 实体完整性规则 : 若属性 A是基本关系 R的主码属性,则属性 A不能取空值。

由关系系统自动支持

是应用领域需要遵循的约束条件

Page 9: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

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

专业 (专业号,专业名 )

例 2: 学生 (学号,姓名,性别,专业号,年龄,合作者号 )

引用

引用

Page 10: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.1 关系模型 设:基本关系 R、 S(可为同一关系 )。 若 F是 R的一个 (组 )属性,但不是 R的键。 如果 F与 S的主键 K相对应,则称 F是 R的外键。

例:学生 (学号,姓名,性别,专业号,年龄 )

专业 (专业号,专业名 )

引用目标关系

参照关系

外键

说明: S的主键 K和 R的外键 F必须定义在同一个 (组 )域上 R为参照关系, S为目标关系。

Page 11: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.1 关系模型 参照完整性规则 若属性 (组 ) F是 R的外键它与 S的主键 K相对应, 则对于 R中每个元组在 F上的值必为下列之一: (1)取空值 (F的每个属性值均为空 ); (2)等于 S中某个元组的主键值。 例:学生 (学号,专业号 …,姓名, .) 关系中每个元组的专业号取值: (1)空值 (未知值 ); (2)非空值。

3)用户定义的完整性 反映具体应用所涉及的数据应满足的语义要求、约束条件。 例:学生关系中的年龄在 15~45之间,选修关系中的成绩在 0~100之

间。

定义了外键与主键之间的引用规则。指外键不能引用不存在的主键值。

Page 12: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数

关系数据语言分类: 1) 关系代数 2)关系演算

元组关系演算 域关系演算

3)具有双重特点的语言 (SQL) 共同特点是 :

具完备的表达能力 是非过程化的集合操作语言 功能强 可嵌入、又可独立使用

Page 13: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

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)

Page 14: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数

R1 -

R 2

A1

A2

A3

b 3 b

d 3 b

R2

A1 A2 A3 a 3 c

b 2 d c 2 d

e 5 f

g 6 f

R1

A1 A2 A3 b 2 d

b 3 b

c 2 d

d 3 b

集合运算示例

R 1 ∩R

2

A1

A2

A3

b 2 d

c 2 d

R1

∪R2

A1

A2

A3

b 2 d

b 3 b

c 2 d

d 3 b

a 3 c

e 5 f

g 6 f

Page 15: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数 4.广义笛卡尔积 : 设 :R、 S为不同类关系,则结果为不同类关系: R×S={tr ts|( tr∈R ∧) ( ts ∈ S) }

连接为 m+n 元关系 n 元关系

m 元关系

R × SR . A1 R . A2 R .A3 S . A2 S . A3

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

S

A2

A3

2 d

3 b

R

A1 A2 A3 b 2 d

b 3 b

c 2 d

d 3 b

Page 16: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数 记号:设 t为 R的元组变量 设: R( A1, A2 …,

An)=R(U) t[Ai] (Ai为属性 ) t[A] (A为属性集 ) 例: t [学号 ]--R中学号上的值 t [学号,姓名 ] 9801 黄林 19

9802 李红 209803 张英 21…… …… ….9830 王刚 20

学号 姓名 年龄

t

Page 17: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数 二、关系运算 1. 选择 (σ) : 是关系行上的选择,产生同类关系。

σF(R)={t |(t∈R) ∧F( t )=true} 含义:由 R中满足 F条件的元组组成。 其中: F由属性名(值)、比较符、逻辑运算符组成。

例: σSage≥19(Student)

例: σA2>5 ∨A3 ≠“f”(R)

R

A1 A2 A3 a 3 f

b 2 d c 2 d

e 6 f

g 6 f

σA2>5 ∨ A3 ≠“f” (R)

√√

√√

A1 A2 A3 b 2 d c 2 d e 6 f g 6 f

Page 18: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数 2. 投影运算 (∏): 是关系列的选择 ,产生不同类关系 ∏A(R)={t[A] |(t∈R) } 含义: R中取属性名表 A中指定 的列,消除重复元组。 例: ∏ Sno, Cno(SC) 用关系代数表示查询: 例:查选 2号课程的学生记录。

例 : 成绩在 90分以上的学生号。

A3

A 2 f 3 d 2

f 6

3, 2∏

A A (R)

9801 1 95

9801 2 90

9802 1 88

9802 3 92

9803 2

Sno Cno Grade

80……

SC表

R

A1 A2 A3 a 3 f

b 2 d c 2 d

e 6 f

g 6 f

解: σCno=‘2’(SC)

解 : ΠSno(σGrade≥90(SC))

Page 19: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数 3. 连接运算:连接也称为 θ连接。它从两个关系的笛卡尔积中选取属性间满足一定条件的元组。

R ⋈ S={tr ts|(tr R)∈ (∧ ts S) ∈ ∧ tr[A] θ ts[B]} AθB

比较运算符

大于连接: θ “为 >”的连接。 等值连接: θ “为 =” 的连接。 R ⋈ S= σR. A = S. B(R×S) A=B

① ②

例:

= σ R. A θ S. B(R×S) 含义:从 R × S中选取 R关系在 A属性组上的值与 S关系在 B属性组上值满足 θ关系的元组。

Page 20: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数 3. 连接运算:

自然联接:设 R、 S 有同名属性 Bi ( i=1,2….k)

R⋈S=Π 属性名表 (σR.Bi=S.Bi (R×S))

②选同名属性值也相同的行③选择列并去掉重复属性

①笛卡尔积

例 :

Page 21: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数

例 : 查询至少选修了一门其直接先行课为 005号课程的学生名。

学生 -课程数据库表见教材 : S(sno, sname, sex, age, dept)

C(cno, cname , credit , pcno)

SC(sno, cno, grade)

∏sname(σpcno=‘005’ (C ⋈ SC ⋈ S))

目标 A

条件 F

来源 R

ΠA(σF (R))

例:查选修 002号课程的学生姓名与年龄。

∏sname,age(S ⋈ σcno=‘002’ (SC))

Page 22: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数

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) 同理可列出另外两式。

RS

Page 23: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数

除法示例 (例 2.8):

W3

P# P1 P2 P3 P4 P5 P6

W1

P# P1

W2

P# P2 P4

R÷W1

S#

S1

S2

R÷W2

S#

S1

S4

R÷W3

S#

S1

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

例 R÷Wi的运算结果可理解为:R中包含 Wi属性值的那些元组在 R与Wi的属性名之差(即 S#)上的投影。

Page 24: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数

① ② 目标 A1、 A2

例:查所选课程包含学生 210101所选全部课程的学生号和姓名。

∏ sno,sname( S) ⋈ (∏ sno , cno(SC) ÷ ∏ cno (σsno=210101 (SC)))

例:查询选修了全部课程的学生学号与姓名。

∏ sno,sname( S) ⋈ (∏ sno , cno(SC) ÷ ∏ cno ( (C)))

设学生 -课程数据库(S、 SC、 C)

Page 25: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2 关系代数

关系代数五种基本运算: 投影 ,选择 ,并 ,差 ,笛卡尔积 5种基本运算的作用: 1)关系的属性指定 ∏ A1 , A2 , …, An (R) 2) 关系的元组选择 σF (R)

3)两个关系的归并 R1×R2 4)关系中元组的插入 R1 R2∪ 5)关系中元组的删除 R1- R2

Page 26: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

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 聚集函数名 (属性 ) (关系表达式 )见教材例 :

Page 27: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

5. 扩充的关系运算

( 6)外部并 :由 R和 S中的所有属性 (无重复 )组成 , 其元组由属于 R或属于 S的元组组成 , 并在增加的属性填上空值。

说明: R、 S可不同类

ZYXWa b c nullb b f nullc a d nullnull b c dnull a d bnull e f g

R与 S的外部并

YXWa b cb b fc a d

(a)

ZYXb c da d be f g

(b)

R S

Page 28: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

5. 扩充的关系运算

( 7)重命名 ①ρx(E):返回表达式 E的结果,并把名字 x赋给 E。 ②ρx(A1, A2 ……, , An)(E): 其含义为返回表达式 E的结果,并把名字 x赋给 E, 同时将各属性更名为 A1, A2 ……, , An。

⋈ ( 课程 =‘ ’数学 S(R)) R.成绩 <S. 成绩

∏S.姓名 (

)( 课程 =‘ ’数学 姓名 =‘ ’王红 (R))

例 : 设 R(姓名 ,课程 ,成绩 ),求数学成绩比王红高的学生名

Page 29: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

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

在网络环境下: 总代价 = …… + 网络代价 查询的执行开销与多个因素有关: 软件环境、硬件环境、数据量、方法。

Page 30: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.3 查询优化

DML处理器

关系代数语法树

查询优化器

查询计划

代码生成器

可执行代码

运行处理器

… 将查询转为 内部格式

…制定执行策略

…生成执行代码

…执行查询代码

DB (DD)

查询

查询结果

有关数据的统计信息

关系数据库查询过程:

Page 31: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

为什么要查询优化?为什么要查询优化?

例 : Student表有 l03个学生记录,每人平均选 10门课, SC表共有 1000*10=l04个选课记录。要求 : “ ”查学生 王林 选课成绩在 85分以上的课程号。 SELECT cno FROM S, SC WHERE S.sno=SC.sno AND sname=‘ ’ 王林 AND grade > 85 ;

等价的关系代数表示: ① ∏Cno(σ F1 F2 F3 ∧ ∧ ( S×SC ) ) ∏② Cno(σ F2 F3 ∧ ( S ⋈ SC ) ) ∏③ Cno(σF2 (S) ⋈ σF3 (SC) )

条件 F1 条件F2

条件F3哪种效率高?

连接时间复杂度为:① 103×104=O(107)② 103×10=O(104)③ 1×10=O(101)

Page 32: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

对执行基本运算对执行基本运算 ((关系扫描与连接关系扫描与连接 ))的次数进行分析:的次数进行分析:

① ∏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)

Page 33: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.2. 查询优化的一般策略查询优化的一般策略 1) 尽可能先做选择、投影运算。 2) 在执行连接前对关系适当地预处理。 其方法有: a. 索引连接方法

sno sname ……86001 王萧虎

86002 李云钢

86005 郭敏星

86006 高 灵

…… ……

O(n+m)

索引文件有序 主文件 (随机 )

86002

86001

86001

86001

key 地址

……

……

86001 …

8600 2 …

86001 …

……

86100 …

86001 …

Student (n个记录 )

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) 找出公共子表达式。

基本原则:尽量减少查询的中间结果

Page 34: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

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未涉及属性?

Page 35: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

3. 关系代数表达式的表达式的等价规则

(2)若 F 中还涉及 其他属性 B1 …, . Bn: ∏A1,A2…An (σ F (E))

≡ ∏A1, A2…An (σ F (∏A1, A2… An, B1 … , Bn (E)))

6)选择与笛卡儿积的交换律

σ F (E1 × E2) ≡ σ F1 ( E1) × σ F2 ( E2) F1只涉及 E1中属

F中涉及的其他属性

是 E1中属性

减少连接的元组数

减少连接的数据量

9)投影与笛卡儿积的交换律

∏A1,A2…An, B1,…Bn (E1 × E2)

≡ ∏A1,A2…An (E1) × ∏B1,B2 … Bn(E2)

意义 :条件涉及的属性前移—例:∏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)))

Page 36: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

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 例 :Πcno(σ F1 F2 F3 (Student×SC)) ∧ ∧ //①式

F1: S.sno=SC.sno

= Πcno(σ F2 F3(∧ σF1 (Student×SC ))) //用规则 4得到

= Πcno(σ F2 F3(Student ∧ ⋈ SC)) //用规则 12 ②得 式

= Πcno(σ F2(Student) ⋈ σ F3(SC)) //再用规则 11 ③得 式

Page 37: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

4. 4. 关系代数表达式的优化算法关系代数表达式的优化算法

算法:关系表达式的优化。 输入:一个关系表达式的语法树。 输出:计算该表达式的程序。( 1)用规则 4把形如 : σF1∧F2... (E) 变为 : σF1(σF2...(E))

再利用规则 5~ 8 把每个选择运算尽量移到树叶。( 2)对每个投影利用规则 3、 5、 9、 l0,尽量把它移向树叶。( 3)利用规则 3~ 5把选择和投影的串接合并成单个选择、单个投影或一个选择后跟一个投影。 (得到优化的基本语法树 )

( 4)使用规则 12 使选择运算与笛卡尔积结合成连接运算。( 5)对语法树中的内节点进行分组。( 6)找出查询树中的公共子树。( 7)输出由分组结果得到的优化语法树。

例 :

×SR

ΠA

σF五种基本运算表示

Page 38: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

4. 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)对每个投影用规则尽量移向树叶。

① ②

③ ④

Page 39: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

举例 :∏∏sno, sname(sno, sname(σσ cname=‘DB’ sex=‘∧ cname=‘DB’ sex=‘∧ ’女’女 ((∏∏LLσσF (F (SC×C×SSC×C×S))))

语法树

∏L

σSC. cno=C. cno

∧ SC. sno=S. sno

×

S

∏sno, sname

CSC

×

σcname=‘DB’∧sex=‘ ’女

① ②

③ ④

×

SC

σSC. sno=S. sno

∏sno, sname

σSC. cno=C. cno

S

σsex=‘ ’女

×

C

σcname=‘DB’

Page 40: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

9)投影与笛卡儿积的交换律 ∏A1…An,B1,…Bn (E1 × E2) ≡ ∏A1…An (E1) × ∏B1… Bn(E2)

∏SC. sno ,SC. cno

∏C. cno

∏SC. sno ∏S.sno ,S.sname

×

σSC. sno=S. sno

×

SC

∏sno, sname

σSC. cno=C. cno

S

σsex=‘ ’女

C

σcname=‘DB’

条件 F涉及属性

5)选择与投影的交换律 (2)若 F涉及属性 B1…. Bn:∏A1,A2…An(σF(E))≡∏A1…An(σF(∏A1… An,B1… Bn (E) ))

先用规则 5再用规则 9

F涉及属性及重复投影

Page 41: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

举例举例 (3)合成选择或投影 (4) 用规则 12,将σ与× 合成连接运算

(5) 对节点分组 (6)找出公共子树 (7)输出优化语法树

σSC. sno=S. sno

∏sno, sname

×

σSC. cno=C. cno

S

σsex=‘ ’女

SC

∏ SC. sno

SC. cno

×

∏S. sno,S. sname∏SC. sno

σcname=‘DB’

C

∏C. cno

合并操作为⋈

一次扫描完成

S

σsex=‘ ’女

∏S. sno,S. sname

∏sno, sname

SC

∏ SC. sno

SC. cno

∏SC. sno

σcname=‘DB’

C

∏C. cno

Page 42: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组

2.3 查询优化

④生成、选择查询计划。 用到查询优化的一般策略

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

Page 43: 第 2 章 关系数据库

武汉大学计算机学院数据库课程组第 2章 关系数据库关系数据库 --- --- 要点

1、术语: 模式、关系、关系 DB 元组、属性、域、码等

2、关系模型的组成 关系数据结构 关系操作集合 关系完整性约束

3、关系数据语言 关系代数

集合运算:(并、交、差、广义笛卡尔积 ) 关系运算:(投影、选择、连接和除运算 )

4、关系DB的查询优化 目标、一般策略 优化方法

本章练习:本章思考题: 1、关系模型的组成? 2、自然连接与条件连接的区别?