本节参考 Chap 2.1 Chap 2.2 Chap 2.3 Chap 2.6 Chap6.1
目录
练习 2.6 2.7 2.12 2.13 6.11 6.13
知识
2.1 关系数据库的结构
- 关系 表
- 元组 行
- 属性 列
2.2 数据库模式
关系模式
2.3 码
- 超码 一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组
- 候选码 任意真子集都不能成为超码的最小超码
- 主码 被数据库设计者选中的、主要用来在一个关系中区分不同元组的候选码
2.6 关系运算·关系代数
Relation Instructor
Relation Course
Relation Prereq
Relation Department
Relation Setion
Relation Teaches
6.1.1.1 选择运算 σ
- 选择运算选出满足给定谓词的元组
将谓词写作
的下标 参数关系在
后的括号中【例:选择关系instructor中属于“Physics”系的元组】
允许使用=、≠、<、≤、>、≥在选择谓词中进行比较【例:工资额大于90000美元的所有元组】
用连词and(
)、or(
)、not()将多个谓词合并【例:选择关系instructor中属于“Physics”系的元组】
选择谓词可以包含两个属性的比较【例:系名与楼名相同的系】
6.1.1.2 投影运算 ![\prod](https://private.codecogs.com/gif.latex?%5Cprod)
- 投影运算返回作为参数的关系
将属性写作
的下标 参数关系在
后的括号中【例:所有教师的ID、name、salary】
6.1.1.3 关系运算的组合
- 关系运算的结果自身也是一个关系
【例:物理系的所有教师的名字】
- 对投影运算而言,没有给出一个关系的名字来作为其参数,而是用一个对关系进行求值的表达式来作为参数
- 把多个关系代数运算组合成一个关系代数表达式
6.1.1.4 并运算 ∪
【例:开设在2009年秋季学期或者2010年春季学期或者这二者皆开的所有课程】
- 要使并运算r ∪ s有意义,要求以下两个条件同时成立
- 关系 r 和 s 必须是同元的,即它们的属性数目必须相同。
- 对所有的 i , r 的第 i 个属性的域必须和 s 的第 i 个属性的域相同。
6.1.1.5 集合差运算 -
- 集合差运算可以找出在一个关系中而不在另一个关系中的那些元组
- 表达式 r - s 的结果即一个包含所有在 r 中而不在 s 中的元组的关系
【例:开设在2009年秋季学期但是在2010年春季学期不开的课程】
- 要使集合差运算r - s有意义,要求以下两个条件同时成立
- 关系 r 和 s 必须是同元的,即它们的属性数目必须相同。
- 对所有的 i , r 的第 i 个属性的域必须和 s 的第 i 个属性的域相同。
6.1.1.6 笛卡尔积运算 ×
- 笛卡尔积运算可以将任意两个关系的信息组合在一起
【例:只包含物理系的教师,courese_id列可能包含并非这些教师所教授的课程】
【例:只与物理教师以及他们所教课程相关的元组】
【例:物理系的所有教师,以及他们教授的所有课程】
6.1.1.7 更名运算 ρ
返回关系代数表达式E的结果,并把名字x赋给了它
返回关系代数表达式E的结果,并把名字x赋给了它,同时将各属性更名为A
6.1.3.1 集合交运算 ∩
【例:开设在2009年秋季学期和2010年春季学期的课程】
- 可以通过用一对集合差运算替代集合交运算来重写
6.1.3.2 自然连接运算 ![\Join](https://private.codecogs.com/gif.latex?%5CJoin)
- 自然连接运算首先形成它的两个参数的笛卡尔积,然后基于两个关系模式中都出现的属性上的相等性进行选择,最后还要去除重复属性。
【例:所有教师的姓名,连同他们教的所有课程的course_id】
6.1.3.3 赋值运算 ←
- 给临时关系变量赋值的方法来些关系代数式
【例:r
s】
6.1.3.4 外连接运算
- 外连接运算可以处理缺失的信息,它在结果中创建带空值的元组,以此来保留在连接中丢失的那些元组
- 左外连接 取出左侧关系中所有与右侧关系的任一元组都不不匹配的元组,用空值填充所有来自右侧关系的属性,再把产生的元组加到自然连接的结果中。
- 右外连接 取出右侧关系中所有与左侧关系的任一元组都不不匹配的元组,用空值填充所有来自左侧关系的属性,再把产生的元组加到自然连接的结果中。
- 全外连接 既填充左侧关系中与右侧关系的任一元组都不匹配的元组,又填充右侧关系中与左侧关系的任一元组都不匹配的元组,并把结果都加到连接的结果中。
6.1.4.1 广义投影
形式
F:(涉及常量以及E的模式中属性的)算术表达式
E:关系代数表达式
1.F中可以使用对数值属性或者产生数值结果的表达式的代数运算【例:每个教师的ID、name、dept_name、每月的工资】
6.1.4.2 聚集运算
≈G
形式
G:(用于分组的)属性
F:聚集函数
A:属性名
E:关系代数表达式
sum 返回值的和【例:所有教师的工资总和】
avg 返回值的平均【例:所有教师的平均工资】,对单个元组集合执行聚集函数
- count 返回汇集中元素的个数
- min 返回汇集中的最小值
- max 返回汇集中的最大值
……-distinct 去除重复【例:在2010年春季学期教课的教师数】
对一组元组集合执行聚集函数【例:每个系的平均工资】
练习 2.6 2.7 2.12 2.13 6.11 6.13
Exercise 2.6
Figure 2.14
Exercise 2.7
Exercise 2.12
Figure 2.15
Exercise 2.13
Figure 6.22
Exercise 6.11
Exercise 6.13
练习·参考答案 略
2.6
2.7
2.12
2.13
6.11
6.13