武汉大学数据库系统概论 第四讲 关系代数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CS
学号 S#
95001 95002 95003 95004
姓名 SN
李勇 刘晨 王敏 张立
所在系 SD
CS IS
95002
95003 95004
刘晨
王敏 张立

女 男
19
18 19
IS
MA IS
MA IS
15
专 门 的 关 系 运 算
1.
投影运算
何时可能 出现重复 的行?
投影得 到的属 性中不 包含键
C6
4
14
专 门 的 关 系 运 算
1.
投影运算(Projection)
—— 是从R中选择若干属性列A组成新的关系。
R[A] = { t[A]|tR } 例1.查询学生的学号、姓名和所在系。 S1:=S[S#,SN,SD]
S
学号 S#
95001
S1
姓名 SN
李勇
性别 SE

年龄 SA
20
所在系 SD
课程名 CN
数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言
先行课 CP#
C5
学分 CC
4 2
C1 C6 C7
4 3 4 2
SC
学号 S#
95001 95001 95001 95002 95002
课程号 C#
C1 C2 C3 C2 C3
成绩 G
92 85 88 90 80
C6 C7
例5 查询信息系的且年龄小于20岁全体学生信息。 S where SD=‘IS’ AND SA<20 例6 查询信息系或者年龄小于20岁的全体学生信息。 S where SD=‘IS’ OR SA<20
例7 查询非信息系的全体学生信息。 S where NOT SD=‘IS’
19
专 门 的 关 系 运 算


并、交和差运算
示例
S
B b1 b1 b2 b2 C c1 c2 c3 c3
R S
A a1 a1 a1 a2 a3 B b1 b1 b2 b1 b2 C c1 c2 c3 c2 c3
RS
A a1 a1 B b1 b2 C c1 c3
R-S
A
a2
B
b1
C
c2
10

3.



笛卡儿积运算
假定 Head(R) = A1…An, Head(S)= B1…Bm,R 和 S 的基 数分别为p和q,表R和S的笛卡儿积是表T, T的标题是: Head(T)=R.A1…R.AnS.B1…S.Bm T的内容是: T = { tr ts |trR tsS} T的基数为pq 即:T 是一个(n+m )列的元组的集合。元组的前n 列 是关系R的一个元组,后m列是关系S的一个元组。
例10 查询选修了课程‚C2”的学生的姓名和成绩
P:=(S ⋈ SC)where C# = ‘C2’ Q:= P[SN,G] SC
学号 S#
95001 95002 95003 95004
S
姓名 SN
李勇 刘晨 王敏 张立
性别 SE
男 女 女 男
年龄 SA
20 19 18 19
所在系 SD
CS IS MA IS
{(a1,b1,c1), (a2,b2,c2), (a3,b3,c3)}
集合运算的前提条件 —— 兼容表 如果R和S具有相同的标题,则R和S是兼容表

两个关系都有相同的目(笛卡儿积运算例外) 相应的属性取自相同域并具有相同的含义
8

2.




并、交和差运算
定义 R 和 S 是两个兼容表, Head(R)= Head(S)=A1…An 。 则R和S的并、交和差具有相同的标题,且:
性别 SE
男 女 女 男
年龄 SA
20 19 18 19
所在系 SD
CS IS MA IS
所在系 SD
CS IS MA
17
专 门 的 关 系 运 算
2.
选择运算(Selection)
—— 是在关系R中选择满足给定条件的诸元组。 R where C = {t|tR C(t)=‘真’}
例3 查询信息系的全体学生。 S where SD=‘IS’
学号 S#
95001
95001 95001 95002 95002
课程号 C#
C1
C2 C3 C2 C3
成绩 G
92
85 88 90 80
23
专 门 的 关 系 运 算
4.
连接运算
P:=(S ⋈ SC ⋈ C)where CN = ‘数学’ Q:= P[SN,G]
例11 查询选修了课程名‚数学‛的学生的姓名和成绩
2
一.关系代数
二.集合运算
三.专门的关系运算 四.运算依赖 五.综合例子 六. 其它关系运算
3
关系代数
4





关系代数 —— 是根据查询来生成新表 的方法的集合 关系代数的运算分成两种类型: 集合运算 , 表实际上是‚行‛的集合, 集合的运算是只涉及‚行‛的运算; 专门的关系运算,既涉及到‚行‛, 也涉及到‚列‛的运算。
R
A a1 a2 a3 a4 B b3 b2 b2 b3 C c1 c1 c2 c1
S
C
ቤተ መጻሕፍቲ ባይዱc1
T=RS
A a1 a2 a4
B b3 b2 b3
25
专 门 的 关 系 运 算
除运算 例,R和S分别如下,求RS
5.
R
A a a b e e a B b b c d d b C c e e c e d D d f f d f e
S
学号 S#
95001 95002 95003
姓名 SN
李勇 刘晨 王敏 张立
性别 SE
男 女 女 男
年龄 SA
20 19 18 19
所在系 SD
CS IS MA IS
例4 查询年龄小于20岁的学生。 95004 S where SA<20
18
专 门 的 关 系 运 算
2.
选择运算
R where C 中的 C 可以是简单逻辑表达式,也可以 是复合逻辑表达式
5

集合运算
名称 符号

键盘格式

示例


交 差 笛卡儿积


UNION
INTERSECT 或MINUS TIMES
R S,或 R UNION S
R S,或 R INTERSECT S R S, 或 R MINUS S R S, 或 R TIMES S
专门的关系运算
名称 投影 符号 R[ ] 键盘格式 R[ ] R[Ai1…Aik] 示例
第四讲 关系代数
1
本讲主要目标
学完本讲后,你应该能够了解:
1. 关系代数分成两种类型:集合操作和专门 的关系操作; 2. 并、交、差、笛卡儿积、投影、选择、连 接、除运算是常用的关系运算; 3. 并、差、笛卡儿积、选择和投影是基本的 关系运算,其它的关系运算可以通过这些 基本运算来表达; 4. 用关系代数操作表达查询要求。
11

3.

R S
R.A R.B b1 b1 b1 b1 b2 b2 b2 b2 b1 b1 b1 b1 R.C c1 c1 c1 c1 c3 c3 c3 c3 c2 c2 c2 c2


笛卡儿积运算
示例
R
A a1 a1 a2 B b1 b2 b1 C c1 c3 c2 a1 a1 a1 a1 a1 a1 a1 C c1 c1 c2 c2 D d1 d3 d2 d4 a1 a2 a2 a2 a2 S.B b1 b1 b2 b1 b1 b1 b2 b1 b1 b1 b2 b1 S.C c1 c1 c2 c2 c1 c1 c2 c2 c1 c1 c2 c2 S.D d1 d3 d2 d4 d1 d3 d2 d4 d1 d3 d2 d4
选择
连接 除
R where C R where C
R where A1 = 5
R ⋈ S,或 R JOIN S R S, 或 R DIVIDEBY S
6


JOIN DIVIDEBY
集合运算
7

1.




集合运算的前提条件
关系就是元组的集合
A
a1 a2 a3
B
b1 b2 b3
C
c1 c2 c3


RS由属于R或属于S的元组组成,并去掉冗余的元组 RS由既属于R又属于S的元组组成 RS由属于R而不属于S的元组组成

文氏图(Venn Diagram)
S
R
R S
R S
RS
9

2.

R
A a1 a1 a2 B b1 b2 b1 C c1 c3 c2 A a1 a1 a1 a3

S
B b1 b1 b2 b1
12
专门的 关系运算
13
专 门 的 关 系 运 算
一个学生-课程数据库
S
学号 S#
95001 95002 95003 95004
C
姓名 SN
李勇 刘晨 王敏 张立
性别 SE
男 女 女 男
年龄 SA
20 19 18 19
所在系 SD
CS IS MA IS
课程号 C#
C1 C2 C3 C4 C5
b2
b1 b1 b1 b2 b1 b1 b1 b2
b2
b1 b1 b2 b2 b1 b1 b2 b2
c4
c1 c2 c3 c4 c1 c2 c3 c4
S
B1 b1 b1 b1 b2 B2 b1 b1 b2 b2 C c1 c2 c3 c4
22
专 门 的 关 系 运 算
4.
连接运算
这里的连接运算就是自然连接运算
S
C D
d f f
RS
E
3 5 6 A B

c e e
=
a
e
b
d
26
专 门 的 关 系 运 算
5.
除运算
1)
例12 求选修了‛95002”所选修的全部课程的学生的学号
‚95002”选修的全部课程 P:= (SC where S# = ‘95002’)[C#] 选修了P中所有课程的学生的学号 Q:= SC[S#, C#] P
专 门 的 关 系 运 算
4.
连接运算(Join)
—— 是从两个关系的笛卡尔积中选取同名属性上满足
等值条件的元组,并在结果关系中去掉重复的列
R
A a1 a1 a2 B1 b1 b2 b1 B2 b1 b1 b2
RS
A a1 a1 a1
R.B1 b1 b1 b1
R.B2 b1 b1 b1
S.B1 b1 b1 b1
SC
95001 95001
学号 S#
课程号 C#
C1 C2
成绩 G
92 85
C5
C6 C7
数据结构
数据处理 PASCAL语言
C7
4
2
95001
95002 95002
C3
C2 C3
88
90 80
C6
4
24
专 门 的 关 系 运 算
5.
除运算(Division)
—— 假定Head(R)=A1…AnB1…Bm 并且Head(S)=B1…Bm, 表T为RS的结果,如果Head(T)= A1…An并且T中恰好 包含的是这样的行t:对于S中每一个行s,t和s串接的 结果的行可以在表R中找到。
C
课程号 C# C1 C2 C3 C4 C5 C6 C7
先行课 CP# C5
学分 CC 4 2 4 3 4 2 4
20
专 门 的 关 系 运 算
3.
关系代数优先级
优先级

运算
投影 选择 笛卡儿积 连接、除法 交 R[ ]
符号
R where C ⋈, , –
单目运算
双目运算

并、差
21
投影结果中 会出现重复 的行吗?
关系代数如 何处理重复 的行?
消除 重复
YES
16
专 门 的 关 系 运 算
1.
投影运算
例2.查询学生关系S中都有哪些系。 S2:=S[SD]
S
学号 S#
95001 95002 95003 95004
S2
姓名 SN
李勇 刘晨 王敏 张立
S2
所在系 SD
CS IS MA IS
2)
Q SC
95001 95001 95001 95002 95002
学号 S#
课程号 C#
C1 C2 C3 C2 C3
成绩 G
92 85 88 90 80
P
课程号 C#
C2 C3
学号 S# 95001 95002
27
运算依赖
S
学号 S#
95001 95002 95003 95004
姓名 SN
李勇 刘晨 王敏 张立
性别 SE
男 女 女 男
年龄 SA
20 19 18 19
所在系 SD
CS IS MA IS
C
课程号 C# C1 C2 C3 C4 课程名 CN 数据库 数学 信息系统 操作系统 C1 C6 先行课 CP# C5 学分 CC 4 2 4 3
2.
选择运算 例9 查询课程‚C1”的间接先修课
C:= C P:= (CC) where C.C# = ‘C1’ AND C.CP# = C.C# Q:= P[C.CP#] C
课程名 CN 数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言 C6 C1 C6 C7 先行课 CP# C5 学分 CC 4 2 4 3 4 2 4 课程号 C# C1 C2 C3 C4 C5 C6 C7 课程名 CN 数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言 C6 C1 C6 C7
S.B2 b1 b1 b2
C c1 c2 c3
R⋈S
A a1 a1 a2 R.B1 b1 b1 b1 R.B2 b1 b1 b2 C c1 c2 c3
a1
a1 a1 a1 a1 a2 a2 a2 a2
b1
b2 b2 b2 b2 b1 b1 b1 b1
b1
b1 b1 b1 b1 b2 b2 b2 b2
相关文档
最新文档