1. 传统的集合运算
DESCRIPTION
R S. 1. 传统的集合运算. 传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算。 设关系 R 和关系 S 具有相同的目 n (即两个关系都有 n 个属性),且相应的属性取自同一个域。 1. 并( Union ) 关系 R 与关系 S 的并由属于 R 或属于 S 的元组组成。其结果关系仍为 n 目关系。记作: R∪S={t|t∈R∨t∈S}. R. S. R∪S. R S. 2. 差( Difference ) 关系 R 与关系 S 的差由属于 R 而不属于 S 的所有元组组成。其结果关系仍为 n 目关系。记作: - PowerPoint PPT PresentationTRANSCRIPT
1
1.1. 传统的集合运算传统的集合运算
传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算。
设关系 R 和关系 S 具有相同的目 n (即两个关系都有 n个属性),且相应的属性取自同一个域。
1. 并( Union ) 关系 R 与关系 S 的并由属于 R 或属于 S 的元组组成。其
结果关系仍为 n 目关系。记作: R S={t|t R t S}∪ ∈ ∨ ∈R S={t|t R t S}∪ ∈ ∨ ∈
RS
2
AA BB CC
33 66 77
22 55 77
77 22 33
44 44 33
R
AA BB CC
33 44 55
77 22 33
S
AA BB CC
33 66 77
22 55 77
77 22 33
44 44 33
33 44 55
R S ∪
3
2. 差( Difference ) 关系 R 与关系 S 的差由属于 R 而不属于 S 的所有元组组
成。其结果关系仍为 n 目关系。记作: RR -- S={t|t R t∈ ∧S={t|t R t∈ ∧ S} S}
RS
4
AA BB CC
33 66 77
22 55 77
77 22 33
44 44 33
R
AA BB CC
33 44 55
77 22 33
S
AA BB CC
33 66 77
22 55 77
44 44 33
R -S
AA BB CC
33 66 77
S -R
5
⒊ 交( Intersection Referential integrity ) 关系 R 与关系 S 的交由既属于 R 又属于 S 的元组组成。
其结果关系仍为 n 目关系。记作: R∩S={t|t R t S}∈ ∧ ∈R∩S={t|t R t S}∈ ∧ ∈
交运算可以通过差运算来重写: R∩S=R-(R-S)R∩S=R-(R-S)
RS
6
AA BB CC
33 66 77
22 55 77
77 22 33
44 44 33
R
AA BB CC
33 44 55
77 22 33
S
AA BB CC
77 22 33
R∩S
7
⒋ 广义笛卡尔积( Extended cartesian product ) 两个分别为 n 目和 m 目的关系 R 和 S 的广义笛卡尔积是
一个 (n+m) 列的元组的集合。元组的前 n 列是关系 R的一个元组,后 m 列是关系 S 的一个元组。若 R 有 k1个元组, S 有 k2 个元组,则关系 R 和关系 S 的广义笛卡尔积有 k1×k2 个元组。记作:
RRS S == { t|t= { t|t=﹤t﹤trr ,, ttss﹥∧t﹥∧trrRRttssS }S }
8
A B
1
2
R
C D
10102010
E
aabb
S A B
11112222
C D
1019201010102010
E
aabbaabb
R x S
9
2.2. 专门的关系运算专门的关系运算
专门的关系运算包括选择、投影、连接、除等。 几个记号:几个记号:1. 设关系模式为 R(A1, A2,..., An) 。它的一个关系
设为 R 。 t R∈ 表示 t 是 R 的一个元组。 t[Ai] 则表示元组 t 中相应于属性 Ai 的一个分量 。
2. 若 A={Ai1, Ai2,..., Aik} ,其中 Ai1, Ai2, ..., Aik 是 A1, A2,..., An 中的一部分,则 A称为属性列或域列。フ A 则表示 {A1, A2,..., An}中去掉 {Ai1, Ai2,..., Aik} 后剩余的属性组。 t[A]=(t[Ai1], t[Ai2],..., t[Aik]) 表示元组 t在属性列 A 上诸分量的集合。
10
3.R 为 n 目关系, S 为 m 目关系。 ttrrRR ,, ttssSS , , ttr r tt
ss称为元组的连接 ( Concatenation )。它是一个 (n+m) 列的元组,前 n 个分量为 R 中的一个 n 元组,后 m个分量为 S 中的一个 m 元组。
⒋ 给定一个关系 R(X,Z) , X 和 Z 为属性组。我们定义,当 t[X]=x 时, x 在 R 中的象集( Images Set )为:Zx={t[Z]|t R, t[X]=x}∈
它表示 R 中属性组 X 上值为 x 的诸元组在 Z 上分量的集合。 X Z
张军同学所选修的全部课程x= 张军
Zx
姓名 课程张军 物理王红 数学张军 数学
课程数学物理
11
更名运算(了解)更名运算(了解) 定义
给一个关系表达式赋予名字xx (( EE ))
返回表达式 E 的结果,并把名字 x 赋给 E
xx (( AA11 , , AA2 2 ,, ,, AAnn ))(( EE ))返回表达式 E 的结果,并把名字 x 赋给 E ,同时将各属性更名为 A1, A2, , An
关系被看作一个最小的关系代数表达式,可以将更名运算施加到关系上,得到具有不同名字的同一关系。这在同一关系多次参与同一运算时很有帮助
12
1. 选择( Selection ) 选择又称为限制( Restriction )。它是在关系 R 中
选择满足给定条件的诸元组,记作: σσFF(R) = {t|t R F(t)=‘∈ ∧(R) = {t|t R F(t)=‘∈ ∧ 真’真’ }} 其中 F 表示选择条件,它是一个逻辑表达式,取逻辑值‘真’或‘假’。
选择运算实际上是从关系 R 中选取使逻辑表达式 F 为真的元组。
选择是从行的角度进行的运算。
13
A B C
3 6 7
2 5 7
7 2 3
4 4 3
R A<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
14
例 1 查询信息系( IS 系)全体学生 σσSdept=‘IS’Sdept=‘IS’(Student)(Student) 或 或
σσ5='IS'5='IS'(Student)(Student)
例 2 查询年龄小于 20 岁的元组 σσSage<20Sage<20(Student)(Student) 或或
σσ4<204<20(Student)(Student)
补充:查询年龄不小于 20 岁的男生 AGE≥20 SEX=‘∧AGE≥20 SEX=‘∧ 男’男’(( SS ))
15
2. 投影( Projection ) 关系 R 上的投影是从 R 中选择出若干属性列组成新的关
系。记作: ΠΠAA(R) = { t[A] | t R }∈(R) = { t[A] | t R }∈
其中 A 为 R 中的属性列。 投影操作是从列的角度进行的运算。注意:投影结果中要去掉相同的行
cbc
fed
cba
CBAB C
b c
e f
R B , C(R)
16
例 3 查询学生关系 Student 在学生姓名和所在系两个属性上的投影 ΠΠSname,SdeptSname,Sdept(Student)(Student) 或 ΠΠ2,52,5(Student)(Student)
例 4 查询学生关系 Student 中都有哪些系,即查询学生关系 Student 在所在系属性上的投影 ΠΠSdeptSdept(Student)(Student)
补充: Sname, SageSname, Sage(S)(S)
CnoCno( ( Sno=95001Sno=95001 (( SCSC ))))
给出所有学生的姓名和年龄
找 001 号学生所选修的课程号
17
广义投影(了解)广义投影(了解) 定义
在投影列表中使用算术表达式来对投影进行扩展F1 , F2 , … , Fn (E)
F1 , F2 ,… , Fn 是算术表达式 示例
求教工应缴纳的所得税P# , SAL*5/100 (PROF)
18
3. 连接( Join ) 连接也称为 θ 连接。它是从两个关系的笛卡尔积中选取
属性间满足一定条件的元组。记作:
其中 A 和 B 分别为 R 和 S 上度数相等且可比的属性组。 θ 是比较运算符。 连接运算从 R 和 S 的笛卡尔积 R×S 中选取( R 关系)在A 属性组上的值与( S 关系)在 B 属性组上值满足比较关系 θ 的元组。
R S={ttrrtts s | t| trrR R ∧∧ ttssS S ∧ ∧ ttrr[A][A]θttss[B][B]}AθB
R S = r[A]S[B]( R×S)A B
19
连接运算中有两种最为重要也最为常用的连接: 一种是等值连接(等值连接( equi-joinequi-join )); 另一种是自然连接(自然连接( Natural joinNatural join ))
θ 为“=”的连接运算称为等值连接等值连接。它是从关系 R 与S 的笛卡尔积中选取 A 、 B 属性值相等的那些元组。
即等值连接为:
R S={ttrrtts s | t| trrR R ∧∧ ttssS S ∧ ∧ ttrr[A][A]=ttss[B][B]}A=B
20
987
654
321
CBAD 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
SB < D
R S
21
自然连接(自然连接( Natural joinNatural join ))是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。
即若 R 和 S 具有相同的属性组 B ,则自然连接可记作:
一般的连接操作是从行的角度进行运算。但自然连接还需要取消了重复列,所以是同时从行和列的角度进行运算。
当 R 与 S 无相同属性时, R S = R×S
R S={ttrrtts s | t| trrR R ∧∧ ttssS S ∧ ∧ ttrr[B][B]=ttss[B][B]}
22
A B
12412
C D
aabab
r
B
13123
D
aaabb
E
s
11112
aaaab
A B C D E
r s
23
987
654
321
CBAC D
3 1
6 2
A B C D
1 2 3 1
4 5 6 2
R
S R S
24
4. 除( Division ) 给定关系 R(X,Y) 和 S(Y,Z) ,其中 X, Y, Z 为属性组。R 中的 Y 与 S 中的 Y 可以有不同的属性名,但必须出自相同的域集。 R 与 S 的除运算得到一个新的关系 P(X) ,P 是 R 中满足下列条件的元组在 X 属性列上的投影:元组在 X 上分量值 x 的象集 Yx 包含 S 在 Y 上投影的集合。记作 :
其中, YYxx 为 x 在 R 中的象集, x=trr[X]
除操作是同时从行和列的角度进行运算。
R÷S={tR÷S={trr[X]|t[X]|trrRR∧∧ΠΠYY(S)(S)YYxx}}
RRS=S=XX(R)(R)XX((XX(R)(R)YY(S)(S)R)R)
25
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
AB (R) AB (R) CD (S)
AB (R) CD (S)-R
A B C D
b c c d
R S=
A B
a b
b c
e d
A B
b c- =
R S
26
例 6 设关系 R, S 分别为图 2-9 中的 (a) 和 (b) ,求 R÷S 的结果
在关系 R 中, A 可以取四个值 {a1, a2, a3, a4} 。其中: a1 的象集为 {(b1,c2), (b2,c3), (b2,c1)} a2 的象集为 {(b3,c7), (b2,c3)} a3 的象集为 {(b4,c6)} a4 的象集为 {(b6,c6)}
S 在 (B,C) 上的投影为 {(b1,c2),(b2,c3),(b2,c1)} 显然只有 a1 的象集 (B,C)a1 包含 S 在 (B,C) 属性组上的投影,所以 R÷S={a1}
27
课程数学物理
=
姓名 课程 成绩张军 物理 93
王红 数学 86
张军 数学 93
王红 物理 92
课程数学物理
姓名 课程张军 物理王红 数学张军 数学王红 物理
姓名张军王红
= 姓名 成绩张军 93
选修了全部课程并且成绩都
相同的学生
选修了全部课程的学生
28
习题习题
1. 求选修了 1 号或 2 号课程的学生号
∏Sno(Cno = 1∨ Cno = 2(SC))
∏ Sno( Cno = 1 (SC))∪∏ Sno( Cno = 2(SC))
方案 1 :
方案 2 :
29
2. 求选修了 1 号而没有选 2 号课程的学生号
∏Sno(Cno = 1 (SC)) -∏ Sno(Cno = 2(SC))
30
3. 求同时选修了 1 号和 2 号课程的学生号
∏Sno(Cno =1 Cno = 2(SC))
∏Sno(Cno =1 (SC))∩∏Sno(Cno = 2(SC))
××√√
∏Sno , Cno(SC) Cno = 1 Cno = 2 (C)
∏Sno(SC Cno = 1 Cno = 2 (C))××√√
31
4. 求未选修 1 号课程的学生号
方案 1 : ∏ Sno(S) -∏ Sno(Cno = 1 (SC)) 方案 2 : ∏ Sno(Cno ≠ 1 (SC)) 哪一个
正确?
Sno Cno G
s1 c1 90
s2 c1 95
s1 c2 96
Sno SN AGE
s1 … …
s2 … …
s3 … …
√√
32
5. 求仅选修了 1 号课程的学生号选修 1 号课程的学生-仅选 1 号课程之外的学生
∏S#(C# = 1 (SC)) -∏ S#(SC - C# = 1 (SC))
∏S# (SC) -∏ S#(C# <> 1 (SC))
所有选课的学生-仅选 1 号课程之外的学生
33
S# C# SCOREP01 C01 96P02 C01 90P03 C02 88P01 C03 92
S# C# SCOREP01 C01 96P02 C01 90
S# C# SCOREP03 C02 88P01 C03 92
S#
P01
P02
S#
P01
P03
S#
P02
34
外连接(了解内容)外连接(了解内容) 外连接
为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接
外连接 = 自然连接 + 失配的元组 外连接的形式:左外连接、右外连接、全外连接
左外连接 = 自然连接 + 左侧表中失配的元组右外连接 = 自然连接 + 右侧表中失配的元组全外连接 = 自然连接 + 两侧表中失配的元组
35
外连接外连接
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
36
外连接外连接
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 化学
37
外连接外连接
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 nullnull null null C03 化学
38
半连接半连接
F R S R S
F
= AA( )( ) A 是 R 中所有属性的集合
39
赋值运算赋值运算 (( 了解了解 ))
定义 为使查询表达简单、清晰,可以将一个复杂的关系代
数表达式分成几个部分,每一部分都赋予一个临时关系变量,该变量可被看作关系而在后面的表达式中使用
临时关系变量关系代数表达式 赋值给临时关系变量只是一种结果的传递,而赋值给永久关系则意味着对数据库的修改
40
赋值运算赋值运算 示例
RS = X(R) X(X(R) Y(S) R)
用赋值重写为:temp1 X(R)
temp2 X(temp1 Y(S) R)
result temp1 temp2
41
聚集函数聚集函数 (( 不讲不讲 ))
定义 求一组值的统计信息,返回单一值 使用聚集的集合可以是多重集,即一个值可以重复出现多次。如果想去除重复值,可以用连接符‘ -’ 将‘ distinct’ 附加在聚集函数名后,如 sum-distinct
sum :求和 求全体教工的总工资
sumSAL((PROF))
求 001 号学生的总成绩sumSCORE(S# = 001 (SC))
42
聚集函数聚集函数 avg :求平均 求 001 号同学选修课程的平均成绩。
avgSCORE(S# = 001(SC)) count :计数 求 001 号同学选修的课程数。
countC#(S# = 001(SC))
求任课老师的总数。count-distinctP#(PC)
43
聚集函数聚集函数 max :求最大值 min :求最小值 求学生选修数学的最高成绩
maxSCORE(CN = 数学(C) SC)) 分组
将一个元组集合分为若干个组,在每个分组上使用聚集函数。
属性下标 G 聚集函数属性下标(关系)
对此属性在每个分组
上运用聚集函数
按此属性上的值
对关系分组
44
聚集函数聚集函数 分组运算 G 的一般形式
G1 , G2 , ... , Gn G F1 , A1 , F2 , A2 , … , Fm , A
m( E ) Gi是用于分组的属性, Fi是聚集函数, Ai是属性名。
G 将 E 分为若干组,满足: 1 )同一组中所有元组在 G1 , G2 , ... , Gn上的值
相同。 2 )不同组中元组在 G1 , G2 , ... , Gn上的值不同。
示例求每位学生的总成绩和平均成绩
S# G sumSCORE , avgSCORE( SC )
45
数据库修改(不讲)数据库修改(不讲) 删除
将满足条件的元组从关系中删除
r r E
是对永久关系的赋值运算 例:
删除 001 号老师所担任的课程
PC PC PC# = 001(PC) 删除没有选课的学生
S S (∏S# (S) ∏S# (SC)) S
关系关系代数表达式
46
数据库修改数据库修改 插入
插入一个指定的元组,或者插入一个查询结果
r r E 示例:新加入一个老师PC PC {(P07 ,“周正” , 750 , D08)}
示例:加入计算机系学生选修“数学”的信息SC SC ∏S# (S DN =计算机系 (DEPT))
∏C#(CN = 数学(C))
47
数据库修改数据库修改 更新
利用广义投影改变元组的某些属性上的值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))
48
视图(不讲)视图(不讲)
定义 视图是命名的、从基本表中导出的虚表,它在物理上并
不存在,存在的只是它的定义 视图中的数据是从基本表中导出的,每次对视图查询都
要重新计算create view view_name as < 查询表达式 >
视图之上可以再定义视图 视图 Vs 临时关系变量
视图 V1 视图 V2
基本表 B1 基本表 B3基本表 B2
49
视图视图 视图的优点
个性化服务 简化了用户观点,使不同用户可以从不同角度观察同一数据
安全性 “ 知必所需”,限制用户数据的访问范围
逻辑独立性 视图作为基本表与外模式之间的映象
50
视图视图 示例
给出老师所教授课程的信息create view p_course
As ∏PN , CN(PROF PC C)
给出李明老师所教授的课程名称PN = 李明 (p_course)
51
视图视图 视图更新
信息缺失create view p_salary as ∏PN , SAL(PROF)
在视图 p_salary 上执行:p_salary p_salary {(∪ 李明 , 800)}
在基本表 PROF 上执行:PROF PROF ∪{( 李明 , 800)}
往 PROF 中加入元组 ( 李明 , 800) ,缺主码缺主码 P#P# 信信息息
52
视图视图
create view s_dean as ∏SN , DEAN(S DEPT)
在视图 s_dean 上执行:s_dean s_dean ∪{( 叶开 , 伍魁 )}
在基本表 S 上执行:S S ∪{(null, 叶开 , null, null)}
在基本表 DEPT 上执行:DEPT S ∪{(null, null, 伍魁 )}
null = null?null = null?
53
视图视图S# SN AGE D#
s1 张三 20 d1
s2 李四 23 d2
s3 王五 22 d3
null 叶开 null null
D# DN DEAN
d1 物理 莫愁
d2 数学 乐天
d3 化学 安然
null null 伍魁
SN DEAN
张三 莫愁
李四 乐天
王五 安然
叶开 伍魁
连接属性连接属性
视图定义中不包括连接属性视图定义中不包括连接属性 D#
因此SDEPT结果中不包括 ( 叶开 , 伍魁 )
54
视图视图 信息歧义
在视图 s_dean 上执行:s_dean SN , DEAN 安然(SN = 李四(s_dea
n))S# SN AGE D#
s1 张三 20 d1
s2 李四 23 d2
s3 王五 22 d3
D# DN DEAN
d1 物理 莫愁
d2 数学 乐天
d3 化学 安然
SN DEAN
张三 莫愁
李四 乐天
王五 安然
S# SN AGE D#
s1 张三 20 d1
s2 李四 23 d3
s3 王五 22 d3
D# DN DEAN
d1 物理 莫愁
d2 数学 安然
d3 化学 安然
OR
55
视图视图
物化视图 视图的计算结果被实际存储起来 物化视图可以看成是数据库的 cache 查询物化视图比重新计算视图要快许多 需要进行物化视图与基本表之间的一致性维护 应用场合
任何需要对派生数据的快速访问、或视图的重新计算非常昂贵、或查询需要耗费非常高的 CPU 和磁盘吞吐量的应用场合,都可以使用物化视图来提高效率
56
视图视图 如一个零售数据库,存储 terabytes 数量级的几个月的销售数据。而诸如某个商店的某件商品的销售总量这样的查询,每天可能要被零售商、仓库管理员、市场部人员执行若干次。这时可以将商品的销售总量商品的销售总量查询结果查询结果定义为物化视图
如一个处理定单与产品的事务系统,大量的查询需要连接定单与产品表,可以将定单与产品表的连接结果定单与产品表的连接结果定义为物化视图