115

第三章 关系模型

Embed Size (px)

DESCRIPTION

第三章 关系模型. 提纲. 关系基本概念 关系模型 关系代数 元组关系演算 域关系演算 全 关系系统. 简单即是有力. ---- 燧人氏语录. Any intelligent fool can make things bigger and more complex... It takes a touch of genius and a lot of courage to move in the opposite direction. ----Albert Einstein. E=MC 2. TABLE - PowerPoint PPT Presentation

Citation preview

Page 1: 第三章  关系模型
Page 2: 第三章  关系模型

2

关系基本概念 关系模型 关系代数 元组关系演算 域关系演算 全关系系统

提纲

Page 3: 第三章  关系模型

Any intelligent fool can make things

bigger and more complex...

It takes a touch of genius and a lot of

courage to move in the opposite direction

Page 4: 第三章  关系模型

E=MC2

Page 5: 第三章  关系模型

TABLE

An arrangement of words, numbers, or signs, or combinations of them, as in parallel columns, to exhibit a set of facts or relations in a definite, compact, and comprehensive form; a synopsis or scheme.

——Webster’s Dictionary of the English Language

Page 6: 第三章  关系模型

关系模型回顾 E.F.Codd 于 70 年代初提出关系数据理论,他

因此获得 1981 年的 ACM 图灵奖 关系理论是建立在集合代数理论基础上的,有

着坚实的数学基础 早期代表系统

System R:由 IBM 研制 INGRES :由加州 Berkeley 分校研制

目前主流的商业数据库系统 Oracle , Informix , Sybase , SQL Server ,

DB2 Access , Foxpro , Foxbase

Page 7: 第三章  关系模型

关系基本概念 域( Domain )

一组值的集合,这组值具有相同的数据类型 如整数的集合、字符串的集合、全体学生的集合

笛卡尔积( Car’tesian Product ) 一组域 D1 , D2 ,…, Dn 的笛卡尔积为 :

D1×D2×…×Dn = {(d1 , d2 , … , dn) | di∈Di , i=1,…,n}

笛卡尔积的每个元素 (d1 , d2 , … , dn) 称作一个n- 元组( n-tuple )

元 组 的 每 一 个 值 di 叫 做 一 个 分 量( component )

若 Di 的基数为 mi ,则笛卡尔积的基数为

i

n

im

1

Page 8: 第三章  关系模型

关系基本概念 例:设

D1 为教师集合( T ) = {t1 , t2}

D2 为学生集合( S ) = {s1 , s2 , s3}

D3 为课程集合( C ) = {c1 , c2}

则 D1×D2×D3 是个三元组集合,元组个数为 2×3×2 ,是所有可能的(教师,学生,课程)元组集合

笛卡尔积可表为二维表的形式T S Ct1 s1 c1

t1 s1 c2

t1 s2 c1

… … …

t2 s3 c2

Page 9: 第三章  关系模型

关系基本概念 关系

笛卡尔积 D1×D2×…×Dn 的子集叫做在域 D1 ,

D2 ,…, Dn 上的关系,用 R(D1 , D2 ,…, Dn ) 表示 R 是关系的名字, n 是关系的度或目 关系是笛卡尔积中有意义的子集 关系也可以表示为二维表

关系 TEACH(T, S, C)T S Ct1 s1 c1

t1 s1 c2

t1 s2 c1

t2 s3 c2

元组

属性

Page 10: 第三章  关系模型

关系基本概念

Page 11: 第三章  关系模型

关系的性质 列是同质的

即每一列中的分量来自同一域,是同一类型的数据 如 TEACH(T, S, C)={(t1 , s1 , c1), (t1 , t2 , c1)} 是错误

的 不同的列可来自同一域,每列必须有不同的属性名 行列的顺序无关紧要 任意两个元组不能完全相同(集合内不能有相同的

两个元素) 每一分量必须是不可再分的数据。满足这一条件的

关系称作满足第一范式( 1NF )的

Page 12: 第三章  关系模型

关系的性质

T# S# C#

t1 s1 c1

t1 t2 c2

列同质E# ENAM

EMGR

e1 TOM e2

e2 jerry null

来自同一域的不同列

S# C#

s1 {c1,c2,c3}

分量不可再分

S# C#

s1 c1

s1 c2

s1 c3

嵌套关系1NF 关系

Page 13: 第三章  关系模型

关系模型:数据结构

单一的数据结构——关系 实体集、联系都表示成关系

DEPT(D# , DN , DEAN)

S(S# , SN , SEX , AGE , D#)

C(C# , CN , PC# , CREDIT)

SC(S# , C# , SCORE)

PROF(P# , PN, D# , SAL)

学生

选修

属于

教师

工作 管理

课程 先修

Page 14: 第三章  关系模型

关系模型:数据结构DEPT

D# DN DEAN

S

S# SN SEX AGE D#

C

C# CN CREDIT

PC#

PROF

P# PN SAL D#

SC

S# C# SCORE

Page 15: 第三章  关系模型

关系模型:码

候选码( Candidate Key ) 关系中的一个属性组,其值能唯一标识一个元组。

若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码

如 DEPT 中的 D# , DN 都可作为候选码 任何一个候选码中的属性称作主属性 如 SC 中的 S# , C#

Page 16: 第三章  关系模型

关系模型:码

主码( PK: Primary Key ) 进行数据库设计时,从一个关系的多个候选码中

选定一个作为主码 如可选定 D# 作为 DEPT 的主码

外码( FK: Foreign Key ) 关系 R 中的一个属性组,它不是 R 的码,但它与

另一个关系 S 的码相对应,称这个属性组为 R 的外码

如 S 关系中的 D# 属性

Page 17: 第三章  关系模型

关系模型:关系模式

关系的描述称作关系模式,包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等,记作 R(A1 , A2 ,…, An ) 属性向域的映象一般直接说明为属性的类型、长

度等 某一时刻对应某个关系模式的内容 ( 元组的集合 )

称作关系 关系模式是型,是稳定的 关系是某一时刻的值,是随时间不断变化的

Page 18: 第三章  关系模型

关系模型:关系数据库

关系数据库的型是关系模式的集合,即数据库描述,称作数据库的内涵 (Intension)

关系数据库的值是某一时刻关系的集合,称作数据库的外延 (Extension)

Page 19: 第三章  关系模型

关系模型:关系操作

关系操作是集合操作,操作的对象及结果都是集合,是一次一集合 (Set-at-a-time) 的方式

非 关 系 型 的 数 据 操 作 方 式 是 一 次 一 记 录(Record-at-a-time)

关系操作可以用关系代数和关系演算两种方式来表示,它们是相互等价的

Page 20: 第三章  关系模型

关系模型:完整性

实体完整性 关系的主码中的属性值不能为空值 空值:不知道或无意义 意义:关系对应到现实世界中的实体集,元组对

应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的

Page 21: 第三章  关系模型

关系模型:完整性

参照完整性 如果关系 R2 的外码 Fk 与关系 R1 的主码 Pk 相对

应,则 R2 中每个元组的 Fk 值或者等于 R1 中某个元组的 Pk 值,或者为空值

意义:如果关系 R2 的某个元组 t2 参照了关系 R1

的某个元组 t1 ,则 t1 必须存在S# SNAME D#

s1 TOM d1

s2 JERRY null

s3 BOB d3

D# DNAME

d1 maths

d2 physics  

Page 22: 第三章  关系模型

关系模型:完整性

用户定义的完整性 用户针对具体应用环境定义的完整性约束条件 S# 要求是 8 位整数, SEX 要求取值为“男”或

“女” 系统支持

实体完整性和参照完整性由系统自动支持 系统提供定义和检验用户定义的完整性的机制

Page 23: 第三章  关系模型

关系模型:完整性

供应商号 供应商名 所在城市B01 红星 北京

S10 宇宙 上海T20 黎明 天津

Z01 立新 重庆

零件号 颜色 供应商号010 红 B01

312 白 S10

201 蓝 T20

今要向关系 P 中插入新行,新行的值分别

列出如下。哪些行能够插入?

1.(null ,‘黄’,‘ T20’)

2.(‘201’ ,‘红’,‘ T20’)

3.(‘037’ ,‘绿’, null)

4.(‘105’ ,‘蓝’,‘ B01’)

5.(‘101’ ,‘黄’,‘ T11’)

零件关系 P

( 主码是“零件号”,外码是“供应商号” )

供应商关系 S

( 主码是“供应商号” )

Page 24: 第三章  关系模型

关系数据语言概述 关系数据语言的特点

一体化 一般关系系统的数据语言都同时具有数据定义、数据操纵和数据控制语言,而不是分为几个语言。对象单一,都是关系,因此操作符也单一

非过程化 用户只需提出“做什么”,无须说明“怎么做”,存取路径的选择和操作过程由系统自动完成

面向集合的存取方式 操作对象是一个或多个关系,结果是一个新的关系(一

次一关系)。非关系系统是一次一记录的方式

Page 25: 第三章  关系模型

关系数据语言概述 抽象的查询语言

关系代数 用对关系的运算来表达查询,需要指明所用操作

关系演算 用谓词来表达查询,只需描述所需信息的特性

元组关系演算 谓词变元的基本对象是元组变量

域关系演算 谓词变元的基本对象是域变量

Page 26: 第三章  关系模型

关系数据语言概述 具体系统中的实际语言

SQL 介于关系代数和关系演算之间,由 IBM 公司在研制

System R 时提出 QUEL

基 于 Codd 提 出 的 元 组 关 系 演 算语言 ALPHA , 在INGRES 上实现

QBE 基于域关系演算,由 IBM公司研制

Page 27: 第三章  关系模型

关系代数运算汇览 基本运算

一元运算 选择、投影、更名

多元运算 笛卡儿积、并、集合差

扩展运算 集合交、连接、自然连接、外连接

其它运算 赋值、广义投影、插入、删除、更新

Page 28: 第三章  关系模型

选择运算 基本定义

在关系 R 中选择满足给定条件的元组(从行的角度)

F(R)={t | t R , F(t) = ‘ 真’ }

F 是选择的条件, t R , F(t) 要么为真,要么为假

F 的形式:由逻辑运算符连接算术表达式而成逻辑表达式:,,算术表达式: X Y

X , Y 是属性名、常量、或简单函数是比较算符, { , , , ,

, ≠}

Page 29: 第三章  关系模型

选择运算

A B C

3 6 7

2 5 7

7 2 3

4 4 3

RA<5(R)

A B C

3 6 7

2 5 7

4 4 3

A<5 C=7(R)

A B C

3 6 7

2 5 7

Page 30: 第三章  关系模型

选择运算 示例

找年龄不小于 20 的男学生

AGE≥20 ∧ SEX=‘M’(S)

Page 31: 第三章  关系模型

投影 定义

从关系 R 中取若干列组成新的关系(从列的角度)

A(R) = { t[A] | tR } , AR 投影的结果中要去掉相同的行

cbc

fed

cba

CBA B C

b c

e f

R B , C(R)

Page 32: 第三章  关系模型

投影 示例给出所有学生的姓名和年龄

SN, AGE(S)

找 001号学生所选修的课程号C#( S#=001 (SC) )

Page 33: 第三章  关系模型

更名运算 定义

给一个关系表达式赋予名字x(E)

返回表达式 E 的结果,并把名字 x赋给 E

x(A1 , A2 , , An )(E)返回表达式 E 的结果,并把名字 x赋给 E ,同时将各属性更名为 A1 , A2 , , An

关系被看作一个最小的关系代数表达式,可以将更名运算施加到关系上,得到具有不同名字的同一关系。这在同一关系多次参与同一运算时很有帮助

Page 34: 第三章  关系模型

并运算 定义

所有至少出现在两个关系中之一的元组集合RS ={ r | rR rS }

RS

关系 R 和 S 进行并运算的前提是它们必须是相容的:

关系 R 和 S 必须是同元的,即它们的属性数目必须相同

对 i , R 的第 i 个属性的域必须和 S 的第 i 个属性的域相同

Page 35: 第三章  关系模型

并运算

A B C

3 6 7

2 5 7

7 2 3

4 4 3

R

A B C

3 4 5

7 2 3

S

A B C

3 6 7

2 5 7

7 2 3

4 4 3

3 4 5

R S ∪

Page 36: 第三章  关系模型

并运算 示例

求选修了 001号或 002号课程的学生号方案 1 :

∏S#(C# = 001∨ C# = 002(SC))

方案 2 :∏S#(C# = 001 (SC))∪∏S#(C# = 002(SC))

Page 37: 第三章  关系模型

差运算 定义

所有出现在一个关系而不在另一关系中的元组集合

RS ={ r | rR rS }

R 和 S 必须是相容的

RS

Page 38: 第三章  关系模型

差运算

A B C

3 6 7

2 5 7

7 2 3

4 4 3

R

A B C

3 4 5

7 2 3

S

A B C

3 6 7

2 5 7

4 4 3

R - S

A B C

3 4 5

S - R

Page 39: 第三章  关系模型

差运算 示例

求选修了 001号而没有选 002号课程的学生号

错误的写法:∏S#(C# = 001 C# ≠ 002(SC))

正确的写法:∏S#(C# = 001 (SC)) -∏ S#(C# = 002(SC))

Page 40: 第三章  关系模型

交运算 定义

所有同时出现在两个关系中的元组集合

RS ={ r | rR rS }

交运算可以通过差运算来重写

RS = R (R S)

RS

Page 41: 第三章  关系模型

交运算

A B C

3 6 7

2 5 7

7 2 3

4 4 3

R

A B C

3 4 5

7 2 3

S

A B C

7 2 3

R∩S

Page 42: 第三章  关系模型

交运算 示例

求同时选修了 001号和 002号课程的学生号

错误的写法:∏S#(C# = 001 C# = 002(SC))

正确的写法:

∏S#(C# = 001 (SC))∩∏S#(C# = 002(SC))

Page 43: 第三章  关系模型

笛卡尔积运算 元组的连串( Concatenation )

若 r = (r1 ,… , rn) , s = (s1 ,… , sm) ,则定义 r 与 s 的连串为:

定义 两个关系 R , S ,其度分别为 n , m ,则它们

的笛卡尔积是所有这样的元组集合:元组的前 n个分量是 R 中的一个元组,后m 个分量是 S 中的一个元组

RS 的度为 R 与 S 的度之和, RS 的元组个数为R 和 S 的元组个数的乘积

rs = (r1 ,… , rn , s1 ,… , sm)

RS={ rs | rR sS }

Page 44: 第三章  关系模型

笛卡尔积运算

A B

1

2

r

C D

10

10

20

10

E

a

a

b

b

s A B

1

1

1

1

2

2

2

2

C D

10

10

20

10

10

10

20

10

E

a

a

b

b

a

a

b

b

r x s

A B C D E

1

2

2

10

20

20

a

a

b

A=C(r x s)

Page 45: 第三章  关系模型

笛卡尔积运算 求选修 c1 课程的学生姓名

S# SN …

s1 tom

s2 jerry

S# C# …

s1 c1

s2 c2

S.S# SN … SC.S#

C# …

s1 tom s1 c1

s1 tom s2 c2

s2 jerry s1 c1

s2 jerry s2 c2 SN cCSSCSS SCS ))(( 1##.#.

Page 46: 第三章  关系模型

笛卡尔积运算 求数学成绩比王红同学高的学生

∏S. 姓名 ( R. 姓名 = 王红 R. 课程 = 数学 S. 课程 = 数学 R. 成绩 S. 成绩 (RS( R))

89数学张军

86数学王红

93物理张军

成绩课程姓名

R

86数学王红

86数学王红

86数学王红

R. 成绩R. 课程R. 姓名

89数学张军

86数学王红

93物理张军

S. 成绩S. 课程S. 姓名

R R

Page 47: 第三章  关系模型

连接 定义

从两个关系的广义笛卡儿积中选取给定属性间满足一定条件的元组

A,B 为 R 和 S 上度数相等且可比的属性列 为算术比较符,为等号时称为等值连接

R S = r[A]S[B]( R×S)A B

A BR S = { rs | rR sS r[A]S[B] }

Page 48: 第三章  关系模型

连接

求数学成绩比王红同学高的学生

987

654

321

CBA D E

3 1

6 2

A B C D E

1 2 3 3 1

1 2 3 6 2

4 5 6 6 2

R S B < D R S

∏S. 姓名 (( 课程 = 数学 姓名 = 王红 (R)) ( 课程 = 数学 S(R)))

R. 成绩 <S. 成绩

Page 49: 第三章  关系模型

自然连接 定义

从两个关系的广义笛卡儿积中选取在相同属性列B 上取值相等的元组,并去掉重复的列

自然连接与等值连接的不同 自然连接中相等的分量必须是相同的属性组,并且要在

结果中去掉重复的属性,而等值连接则不必

R S = { rs[B] | rR sS r[B]=S[B] }

Page 50: 第三章  关系模型

自然连接

A B

1

2

4

1

2

C D

a

a

b

a

b

r

B

1

3

1

2

3

D

a

a

a

b

b

E

s

1

1

1

1

2

a

a

a

a

b

A B C D E

r s

987

654

321

CBA C D

3 1

6 2

R S

A B C D

1 2 3 1

4 5 6 2

R S

Page 51: 第三章  关系模型

自然连接

求 001号学生所在系的名称

∏DN(S# = 001(S) DEPT)

Page 52: 第三章  关系模型

关系 R(A, B), S(A, C),R 与 S 中元组个数分别为 10 , 15 ,试填写下表

SR

A 是 R 的主码

无任何条件

最大元组数最小元组数表达式条件

SR

AASR )()(

AASR )()(

Page 53: 第三章  关系模型

外连接 例:列出所有老师的有关信息,包括姓名、工资、

所教授的课程∏P# ,PN , SAL , C# , CN((PROF) PC C)

500李三P04

600

700

800

SAL

孙立P03

钱广P02

赵明P01

PNP#

化学C03

数学C02

物理C01

CNC#

P04C02

P02C02

P01C01

P#C#

数学C02500李三P04

数学C02700钱广P02

物理C01800赵明P01

CNC#SALPNP#

问题:有关 P03

号 职 工 的 姓 名 和

工 资 信 息 没 有 显

示出来

Page 54: 第三章  关系模型

外连接

教工号 教工名 年龄 工资 论文 教学 项目 服务S1 √ √ √ √ √

S2 √ √ √ √ √

S3 √ √ √ √ √

S4 √ √ √ √ √

S5 √ √ √ √ √ √

由表生成报表

Page 55: 第三章  关系模型

外连接 外连接

为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接外连接 = 自然连接 + 未匹配元组 (悬挂元组 )

外连接的形式:左外连接、右外连接、全外连接 左外连接 = 自然连接 + 左侧表中未匹配元组右外连接 = 自然连接 + 右侧表中未匹配元组全外连接 = 自然连接 + 两侧表中未匹配元组

Page 56: 第三章  关系模型

外连接

500李三P04

600

700

800

SAL

孙立P03

钱广P02

赵明P01

PNP#

化学C03

数学C02

物理C01

CNC#

P04C02

P02C02

P01C01

P#C#

数学C02500李三P04

数学C02700钱广P02

物理C01800赵明P01

CNC#SALPNP#

所有老师的信息

P03 孙立 600 null null

外连接的结合律成立否

Page 57: 第三章  关系模型

外连接的结合律

R1 R2 R3

A B B C A C

1 2 2 3 4 5

(R1 R2) R3 R1 (R2 R3)

A B C A B C

1 2 3 1 2 null

4 null 5 null 2 3

4 null 5

Page 58: 第三章  关系模型

外连接

500李三P04

600

700

800

SAL

孙立P03

钱广P02

赵明P01

PNP#

化学C03

数学C02

物理C01

CNC#

P04C02

P02C02

P01C01

P#C#

数学C02500李三P04

数学C02700钱广P02

物理C01800赵明P01

CNC#SALPNP#

所有课程的信息

null null null C03 化学

Page 59: 第三章  关系模型

外连接

500李三P04

600

700

800

SAL

孙立P03

钱广P02

赵明P01

PNP#

化学C03

数学C02

物理C01

CNC#

P04C02

P02C02

P01C01

P#C#

数学C02500李三P04

数学C02700钱广P02

物理C01800赵明P01

CNC#SALPNP#

所有老师和课程的信息

P03 孙立 600 null null

null null null C03 化学

Page 60: 第三章  关系模型

半连接

A B C

a b c

d b c

b b f

c a d

B C D

b c d

b c e

e b a

a d b

R S

R SA B C

a b c

d b c

c a d

S RB C D

b c d

b c e

a d b反半连接?

Page 61: 第三章  关系模型

除运算 象集( Image Set )

关系 R(X , Z), X, Z 是属性组, x 是 X 上的取值,定义 x 在 R 中的象集为

Zx = { t[Z] | tR t[X]= x }

从 R 中选出在 X 上取值为 x 的元组,去掉 X 上的分量,只留 Z 上的分量

X Z 张军同学所选修的全部课程x= 张军 Zx

姓名 课程张军 物理王红 数学张军 数学

课程数学物理

Page 62: 第三章  关系模型

除运算

做法:逐个考虑选课关系 SC 中的元组 r ,求 r 在姓名 SN 上的分量 x ,再求 x 在选课关系中的象集课程 Cx ,若 Cx 包含了所有的课程 C ,则 x 是满足条件的一个元组

如何得到选修了全部课程的学生?

{ x | x=r[SN] rSC CxC }

选修全部课

程的学生

全部课程x 同学所选修

的全部课程

Page 63: 第三章  关系模型

除运算 除定义

R(X , Y) S(Y) = { x | x=r[x] rR YxS}

R(X, Y) S(Y) = { t | tX(R) uS(tu r) }

RS = X(R) X(X(R) Y(S) R)

Page 64: 第三章  关系模型

除运算

物理

数学

课程

物理王红

数学张军

数学王红

物理张军

课程姓名

王红

张军

姓名

没有选修全部课

程的学生

所有学生选修

全部课程

=数学张军

数学王红

物理张军

课程姓名

物理王红

数学张军

数学王红

物理张军

课程姓名

姓名

王红

姓名

王红

张军

姓名

王红 =

姓名

张军

选修了全部课

程的学生

Page 65: 第三章  关系模型

除运算A B C D

a b c d

a b e f

a b d e

b c e f

e d c d

e d e f

C D

c d

e f

A B

a b

e d

A B

a b

b c

e d

A B C D

a b c d

a b e f

b c c d

b c e f

e d c d

e d e f

R AB (R)S AB (R) CD (S)

AB (R) CD (S)-R

A B C D

b c c dR S=

A B

a b

b c

e d

A B

b c- =

Page 66: 第三章  关系模型

除运算 示例

求选修了所有课程的学生SC(S#, C#, G)

方案 1 :∏S# , C#(SC) ∏C#(C)

方案 2 :

∏S#(SC ∏C#(SC)) 哪一个正确?

Page 67: 第三章  关系模型

除运算

课程数学物理

姓名 课程 成绩张军 物理 93

王红 数学 86

张军 数学 93

王红 物理 92

课程数学物理

姓名 课程张军 物理王红 数学张军 数学王红 物理

姓名张军王红

=姓名 成绩张军 93

选修了全部课程并且成绩

都相同的学生

选修了全部课程的学

Page 68: 第三章  关系模型

关系代数查询实例 求没有选修 c1号课程的学生

所有学生 – 选修了 c1号课程学生

仅选 c1 号课程

之外的其他学生

# # 1# ))(()(S S cC SCSC

# 1# ))((S cC SC

S# C#

s1 c1

s1 c2

s2 c1

s3 c2

Page 69: 第三章  关系模型

关系代数查询实例

求仅选修了 c1 号课程的学生号

选修 c1 号课程的学生-仅选 c1 号课程之外的学生

S# C#

s1 c1

s1 c2

s2 c1

s3 c2

S# C#

s1 c1

s2 c1

S# C#

s1 c2

s3 c2

# 1##

))(()(S cCS

SCSC

# 1## 1# ))(())((S cCS cC SCSCSC

Page 70: 第三章  关系模型

关系代数查询实例 求选修 c1 课程比 s1 学生的该门课程成绩高

的学生

SC SC(s1, c1, g1, ?, c1, g2), g1 < g2

)))()((( ..1#.1#.1#.#.SCSC SRGSGRcCScCRsSRSS

S# C# G

s1 c1 g1

? c1 g2

Page 71: 第三章  关系模型

关系代数查询实例 求每门课程的先修课的先修课

C C(c3, c2, c2, c1)

C# PC#

c1 null

c2 c1

c3 c2

)))((( #.#.#.,#.CC RCRPCCPCRCC

找到所有的

先修课?

Page 72: 第三章  关系模型

关系代数查询实例 求选修了至少两门课的学生

SC SC(s1, c1, g1, s1, c2, g2), c1 c2

)))()((( #.#.#.#.#.SCSC SRCSCRSSSRSR

求选修了至少 N 门课的学生

求只选修了 1 门课的学生

S# C# G

s1 c1 g1

s1 c2 g2

Page 73: 第三章  关系模型

关系代数查询实例 求最低的成绩

S# C# G

s1 c1 60

s1 c2 70

s2 c1 80

s3 c2 90

))()((.. SCSC SRGSGR

R.S#

R.C# R.G

S.S#

S.C# S.G

s1 c1 60 s1 c2 70

s1 c1 60 s2 c1 80

s1 c1 60 s3 c2 90

s1 c2 70 s2 c1 80

s1 c2 70 s3 c2 90

s2 c1 80 s3 c2 90

)))()((()( ...SCSCSC SRGSGRGSG

Page 74: 第三章  关系模型

关系代数查询实例 求选修课程中包含了所有 S01号学生所

选修课程的学生号

))(( )( 01S#C#C# S#SCSC s

Page 75: 第三章  关系模型

关系代数查询实例 stock(s#, date, price)找出一直上涨的股票上涨过的股票: if d1 > d2 then p1 > p2

找出下跌过的股票, d1 > d2 and p1 < p2

))()((( ....#.#.#.stockstock SRpriceSpriceRdateSdateRSSSRsR

))()((( ....#.#.#.stockstock SRpriceSpriceRdateSdateRSSSRsR

Page 76: 第三章  关系模型

关系代数查询实例

source destination

p1 p2

p1 p3

p2 p1

source destination

p1 p2

p1 p3

guanxi(source, destination)

))()((( ...,.guanxiguanxiguanxi SRSSDRDSSS

互相认识的人,互不认识的人,认识所有人的人,被所有人认识的人具有间接传递性的认识

Page 77: 第三章  关系模型

赋值运算 定义

为使查询表达简单、清晰,可以将一个复杂的关系代数表达式分成几个部分,每一部分都赋予一个临时关系变量,该变量可被看作关系而在后面的表达式中使用

临时关系变量关系代数表达式 赋值给临时关系变量只是一种结果的传递,而赋值给永久关系则意味着对数据库的修改

Page 78: 第三章  关系模型

赋值运算 示例

RS = X(R) X(X(R) Y(S) R)

用赋值重写为:temp1 X(R)

temp2 X(temp1 Y(S) R)

result temp1 temp2

Page 79: 第三章  关系模型

广义投影 定义

在投影列表中使用算术表达式来对投影进行扩展F1 , F2 , … , Fn (E)

F1 , F2 ,… , Fn 是算术表达式 示例

求教工应缴纳的所得税P# , SAL*5/100 (PROF)

p# , INCOME-TAX (P# , SAL*5/100 (PROF))

Page 80: 第三章  关系模型

数据库修改 删除

将满足条件的元组从关系中删除r r E

是对永久关系的赋值运算 例:

删除 001号老师所担任的课程PC PC PC# = 001(PC)

删除没有选课的学生S S (∏S# (S) ∏S# (SC)) S

关系关系代数表达式

Page 81: 第三章  关系模型

数据库修改 插入

插入一个指定的元组,或者插入一个查询结果r r E

示例:新加入一个老师PC PC {(P07 ,“周正” , 750 , D08)}

示例:加入计算机系学生选修“数学”的信息SC SC ∏S# (S DN = 计算机系 (DEPT))

∏C#(CN = 数学 (C))

Page 82: 第三章  关系模型

数据库修改 更新

利用广义投影改变元组的某些属性上的值r F1 , F2 , … , Fn (r)

例:给每位老师上调 10% 的工资

PC P# , PN , SAL SAL* 1.1 , D# (PC)

例:对工资超过 800 的老师征收 5% 所得税

PC P# , PN , SAL SAL* 0.95 , D# (SAL 800 (PC)) ∪

P# , PN , SAL , D# (SAL 800 (PC))

Page 83: 第三章  关系模型

包 允许重复的集合称为包( bag ),或者多集

( multi-set ){1, 2, 2, 3, 3, 3}

引入包的原因 效率,不用去重 合理地计算聚集函数的值

A B

1 2

3 4

1 2

1 2

Page 84: 第三章  关系模型

包的关系代数运算 包的选择、投影、笛卡尔积和集合上是一样

的,只是需要保留重复即可 包的并、交、差

假定一个元组 t 在包 R 中重复出现了 n 次,在包s 中重复出现了 m 次,则:

在 RS 中, t重复出现 n+m 次 在 R- S 中, t重复出现 n-m 次 在 RS 中, t重复出现 min(n, m) 次

Page 85: 第三章  关系模型

包的关系代数运算 哪些对包成立,哪些不成立?

(R S) T = R (S T) (R S) T = R (S T) R (S T) = (R S) (R T)

A B(R) = A(R) B(R)

(R S) - T = R (S - T) R (S T) = (R S) (R T)

A B(R) = A(R) B(R)

Page 86: 第三章  关系模型

作为约束语言的关系代数 关系代数表达约束的方式

R= R S

对各种约束的表达 参照完整性

R(A, B), S(B, C) , S 中的 B 是参照 R 的外码

R(A, B) ,要求在 A 上相等的在 B 上也相等

B BRS )()(

))((.... RR SBSBRASAR

如何表达唯一性?

Page 87: 第三章  关系模型

元组关系演算 形式化定义

{ t | P ( t ) }

表示所有使谓词 P 为真的元组集合 t 为元组变量

如果元组变量前有“全称”()或“存在”()量词,则称其为约束变量,否则称为自由变量

P 是公式 由原子公式和运算符组成

Page 88: 第三章  关系模型

元组关系演算 原子公式

s∈R

s 是关系 R 中的一个元组 s[x] u[y]

s[x] 与 u[y] 为元组分量,它们之间满足比较关系

s[x] c

分量 s[x] 与常量 c之间满足比较关系

Page 89: 第三章  关系模型

元组关系演算 公式的递归定义

原子公式是公式 如果 P 是公式,那么┑ P 也是公式 如果 P1 , P2 是公式,则 P1 P2 , P1 P2 , P1 P2

也是公式 如果 P(t) 是公式, R 是关系,则 tR (P(t)) 和 tR (P(t)) 也是公式

Page 90: 第三章  关系模型

元组关系演算 公式的等价性

P1 P2 ┑(┑P1 ┑P2)

tR (P(t)) ┑t R (┑P(t))

P1 P2 ┑P1 P2

p q ┑p p q ┑p qT T F T T

T F F F F

F T T T T

F F T T T

Page 91: 第三章  关系模型

元组关系演算

A B C

1 2 3

4 5 6

7 8 9

A B C

1 2 3

3 4 6

5 6 9

R S

A B C

3 4 6

5 6 9

{ t | t S t[A] >2}

A B C

4 5 6

7 8 9

{ t | t R ┑tS }

Page 92: 第三章  关系模型

元组关系演算

A B C

1 2 3

3 4 6

{ t | tS uR(t[C] < u[B])}

A B C

4 5 6

7 8 9

{ t | tR uS(t[C] > u[A])}

R.B S.C R.A

5 3 4

8 3 7

8 6 7

8 9 7

{ t | uR vS (u[A]>v[B] t[A]=u[B] t[B]=v[C] t[C]=u[A])}

Page 93: 第三章  关系模型

元组关系演算 表达式的安全性

元组关系演算有可能会产生无限关系,这样的表达式是不安全的

如 {t | ┑(t R)} ,求所有不在 R 中的元组 引入公式 P 的域概念,用 dom(P) 表示 dom(P) = 显式出现在 P 中的值 + 在 P 中出

现的关系的元组中出现的值(不必是最小集) 如 dom ( t | ┑(t R) ) 是 R 中出现的所有值的集

合 如果出现在表达式 {t | P ( t ) } 结果中的所有

值均来自 dom(P) ,则称 {t | P ( t ) } 是安全的

Page 94: 第三章  关系模型

元组关系演算

A B

A1 B1

A1 B2

A2 B3

dom(┑(t R)) = {{A1 , A2} , {B1 , B2 , B3}}

A B

A1 B3

A2 B1

A2 B2

R { t |┑(t R) }

Page 95: 第三章  关系模型

元组关系演算 示例

找出工资在 800 元以上的老师

{t | tPROF t[SAL] > 800} 找出工资在 800 元以上的老师的姓名

{t | sPROF ( t[PNAME] s[PNAME] s[SAL] >

800 )}

给出计算机系老师的姓名{t | uDEPT ( u[DNAME] = “ 计 算 机 系 ” sPROF ( s[D#] = u[D#] t[PNAME]

s[PNAME] ))}

Page 96: 第三章  关系模型

元组关系演算 求选修了全部课程的学生号

{t | uS vC ( wSC ( v[C#]=w[C#] u[S#]=w[S#] t[S#]u[S#] ))}

求选修了张军同学所选修的全部课程的学生姓名课程,张军选之 所求同学选之

{t | uC ( sSC wS ( s[C#] = u[C#] w[S#] s[S#] w[SNAME] = “张军” ))

s¹SC w¹S ( s¹[C#] = u[C#] w¹[S#] s¹[S#] w¹[SNAME] = t[SNAME] )}

Page 97: 第三章  关系模型

元组关系演算 元组关系演算与关系代数的等价性

投影∏A( R ) = { t | sR ( s[A] = t[A] ) }

选择F(A)(R) = { t | tR F(t[A]) }

广义笛卡儿积R(A) S(B) = { t | uR sS( t[A] = u[A]

t[B] = s[B])} 并

RS={ t | tR tS} 交

RS={ t | tR ┑tS}

Page 98: 第三章  关系模型

元组关系演算

求 R 中的那些元组,其中在 R 中存在与之不同的元组,因此当 R 中元组个数为 0 或 1 时,结果为空;当 R 中元组个数大于 1 时,表达式的结果是 R 本身

R(A, B) 是二元关系

{ t | t∈R u∈R (t[A] ≠u[A] t[B]≠u[B])}

Page 99: 第三章  关系模型

域关系演算 形式化定义

{ < x1 , x2 , … , xn > | P ( x1 , x2 , … ,

xn ) }

xi 代表域变量, P 为由原子构成的公式 原子公式

< x1 , x2 , … , xn > R xi 是域变量或域常量

x y 域变量 x 与 y之间满足比较关系

x c 域变量 x 与常量 c之间满足比较关系

Page 100: 第三章  关系模型

域关系演算

A B C

1 2 3

4 5 6

7 8 9

A B C

1 2 3

3 4 6

5 6 9

R SA B C

4 5 6

R1={< x, y, z> |

< x, y, z>R x<5 y>3}

A B C

1 2 3

4 5 6

7 8 9

3 4 6

R2={< x, y, z> | < x, y, z>R (< x, y, z>S y=4)}

D E

7 5

4 8

W

B D A

5 7 4

8 7 7

8 4 7

R2={< x, y, z> | (u) (v)

( < z, x, u>R <y, v>W u>v)}

Page 101: 第三章  关系模型

域关系演算 示例

找出工资在 800 元以上的老师{< a , b , c , d , e > | < a , b , c , d , e > PROF e >

800}

找出工资在 800 元以上的老师的姓名

{< b > | a , c , d , e ( < a , b , c , d , e > PROF

e > 800 )} 给出计算机系老师的姓名{< b > | l, m, n, s ( < l, m, n, s > DEPT m

=“计算机系” a , c , d , e ( < a , b , c , d , e >

PROF l = d ) ) }

Page 102: 第三章  关系模型

域关系演算

{ t | t∈R u∈R (t[A] = u[B] ∧ t[B] = u[A])}

R(A, B) 是二元关系

求 R 中的那些元组,其属性列交换后组成的元组仍在 R 中

{<a, b>| <a, b>∈R <b, a>∈R}

∏R.A, R.B(R.A=S.BR.B=S.A(R S(R))

Page 103: 第三章  关系模型

蝜蝂 关系系统 全关系系统的十二条准则

Page 104: 第三章  关系模型

关系系统 关系系统的定义

一个系统可定义为关系系统,当且仅当它: 支持关系数据库(关系数据结构) 支持选择、投影和连接运算,对这些运算不必定

义任何存取路径 关系系统的分类

表式系统 (最小 ) 关系系统 关系完备系统 全关系系统

Page 105: 第三章  关系模型

关系系统 表式系统

仅支持关系 ( 即表 ) 数据结构,不支持集合级的操作。表式系统不能算关系系统

(最小 ) 关系系统 仅支持关系数据结构和三种关系搡作。许多微机

关系数据库系统如 FoxPro 等就属于这一类 关系上完备的系统

支持关系数据结构和所有的关系代数操作。 90 年代初的许多关系数据库管理系统属于这一类

全关系系统 这类系统支持关系模型的所有特征

Page 106: 第三章  关系模型

关系系统

表式系统 最小关系系统 关系完备的系统 全关系系统

S M

I

S M

I

S M

I

S M

I

Page 107: 第三章  关系模型

全关系系统的十二条准则 准则 0 :

一个关系型的 DBMS 必须能完全通过它的关系能力来管理数据库

准则 1 :信息准则 关系型 DBMS 的所有信息都应在逻辑一级上用一

种方法即表中的值显式地表示 准则 2 :保证访问准则

依靠表名、主码和列名的组合,保证能以逻辑方式访问关系数据库中的每个数据项(分量值)

以关联寻址代替面向机器的访问方式

Page 108: 第三章  关系模型

全关系系统的十二条准则 准则 3 :空值的系统化处理

全关系型的 DBMS 应支持空值的概念,并用系统化的方式处理空值

准则 4 :基于关系模型的动态的联机数据字典 数据库的描述在逻辑级上应该和普通数据采用同

样的表示方式,使得授权用户可以使用查询一般数据所用的关系语言来查询数据库的描述信息

准则 5 :统一的数据子语言 一个关系系统可以有几种语言和多种终端使用方

式(如 QBE 、嵌入式 SQL ),但必须有一种语言,它的语句可以表示为具有严格语法规定的字符串

Page 109: 第三章  关系模型

全关系系统的十二条准则 准则 6 :视图更新准则

所有理论上可更新的视图也应该由系统更新,即对视图的更新要求,存在一个与时间无关的算法,该算法可以无二义地把更新要求转换为对基本表的更新序列

准则 7 :高级的插入、删除和修改操作 关系系统的操作对象是单一的关系

准则 8 :数据物理独立性 无论数据库的数据在存储表示和存取方法上作任

何变化,应用程序和终端活动都保持逻辑上的不变性

Page 110: 第三章  关系模型

全关系系统的十二条准则 准则 9 :数据逻辑独立性

当对基本关系进行理论上信息不受损害的任何改变时,应用程序和终端活动都保持逻辑上的不变性

准则 10 :数据完整性的独立性 关系数据库的完整性约束条件必须是用数据库语言定义并存储在数据字典中的,而不是由应用程序加以定义

Page 111: 第三章  关系模型

全关系系统的十二条准则 准则 11 :分布独立性

分布独立性是指 DBMS 具有这样的数据库语言,使得应用程序和终端活动在下列情况下都保持逻辑上的不变性

在第一次引入分布式数据时,即如果原来的 DBMS只管理非分布式的数据,而现在引入了分布式数据

当数据重新分布时,即如果原来 DBMS 能管理分布式数据,现在要改变原来的数据分布

Page 112: 第三章  关系模型

全关系系统的十二条准则 准则 12 :无破坏准则

如果一个关系系统具有一个低级 ( 一次一记录 )语言,则这个低级语言不能违背或绕过完整性准则

为获得完整性的独立性,需要让完整性约束条件和数据的逻辑结构相独立

Page 113: 第三章  关系模型

其他数据模型 序列

基因、股价 图

社会网络 树

XML 数组

科学计算 矩阵

信息检索

Page 114: 第三章  关系模型

其他代数 事件代数

Negative Databases

Page 115: 第三章  关系模型

关系模型总结

笛卡尔积:关联世界一切存在的天罗

关系模型:降身于普罗大众的 oracle

关系代数:数据操作的奥斯卡最佳范型奖

遥远天际:关系,关系,关系