复习提纲1
- 格式:doc
- 大小:136.50 KB
- 文档页数:7
1 数据库系统的世界(概述)
什么是数据库
数据库管理系统
2.数据库建模
数据模型
信息模型(概念模型):E/R模型,ODL模型等
基本数据模型:层次模型,网状模型,关系模型等
实体/联系图
属性attribute:
联系relationship:
对约束建模
有哪些重要的约束种类?
键key
单值single-value 参照完整性reference integrity
关系数据模型
关系的等价表示法
改变列次序,不改变关系的含义。
改变行次序,不改变关系的含义。
从E/R图到关系设计
实体集到关系的转换
E/R联系到关系的转换
处理弱实体集
函数依赖
函数依赖是如何定义的?
若关系R的任意两个元组在属性A1、A2、…、An上一致(即有相同分量值),则这两个元组在属性B上也一致,则称属性A1A2…An函数决定B,或称B函数依赖于A1A2…An。
判断函数依赖的三种情形
如果任意两元组在属性A上一致,在B上也一致,则有A → B成立。
如果任意两元组在属性A上一致,在B上不一致,则A → B不成立。
如果任意两元组在属性A上不可能一致,则不管在B上是否一致,有A → B成立。
关系的键
如何用函数依赖定义键key?
定义:对于关系R,若属性集合{A1,A2,…,An}满足下列条件,则该属性集合是R的一个键key:
1.A1,A2,…,An函数决定R中所有其他属性。(超键)
2.{A1,A2,…,An}的任何真子集都不能函数决定R中所有其他属性。(最小化)
超键
什么是超键super key?
键的超集superset of key。即包含键的属性集合。
可函数决定关系中所有属性的属性集合。
每个键都是超键。
一个关系的属性全集超键。
每个超键都是键吗?不是。
函数依赖规则
有哪些重要的函数依赖规则?
分解/合并(Splitting/combining)规则 2 平凡依赖(Trivial Dependance)规则
传递(Transitivy)规则
计算属性的闭包
如何计算属性的闭包?
给定函数依赖集S和属性集A={A1,A2,…An},如何计算A+?
1 将X初始化为{A1,A2,…,An},闭包最小集合。
2 遍历S中的每个函数依赖,对于每个依赖式:B1B2…Bm → C
如果B1、B2、…、Bm都在X中,而C不在X中,则把C加入X中。
3 重复第2步,直到遍历完S中所有函数依赖,而没有新属性能加入到X中。
4 最终属性集X即为属性集A在函数依赖集S下的闭包A+。
例3.28:P90 设有关系R(A, B, C, D, E, F)与函数依赖集
S:{AB → C,BC → AD,D → E,CF → B}
求:{A,B}+
解:X(1)={A,B}, 由AB → C,得:
X(2)={A,B,C}, 由BC → AD,得:
X(3)={A,B,C,D}, 由D → E,得:
X(4)={A,B,C,D,E}={A,B}+
属性闭包计算有何用途?
假设关系R上已有一个依赖集S,另有一个函数依赖A1A2…An → B,该依赖是否蕴含于S?
判断方法:
计算{A1,A2,…,An}+。
若B在{A1,A2,…An}+中,则函数依赖A1A2…An → B蕴含于S中。
若B不在{A1,A2,…An}+中,则函数依赖A1A2…An → B不蕴含于S中。
属性的闭包和键之间有何关系?
对于一个关系R,当且仅当A1,A2,…,An是R的超键时,{A1,A2,…,An}+是R的所有属性的集合。
3.6.1 已知关系模式R(A, B, C, D)有函数依赖AB → C, C → D, D → A
(a)求蕴含于给定函数依赖的所有完全非平凡函数依赖。
(b)求R的所有键。
(c)求R的所有超键(不包括键)。
解:
(a)根据所有属性集合的闭包,计算所有可能的函数依赖。
{A}+={A}
{B}+={B}
{C}+={C, D, A} C → AD
{D}+={D, A}
{A, B}+={A, B, C, D} AB → CD
{A, C}+={A, C, D} AC → D
{A, D}+={A, D}
{B, C}+={B, C, D, A} BC → AD
{B, D}+={B, D, A, C} BD → AC
{C, D}+={C, D, A} CD → A
{A, B, C}+={A, B, C, D} ABC → D
{A, B, D}+={A, B, D, C} ABD → C
{A, C, D}+={A, C, D}
{B, C, D}+={B, C, D, A} BCD → A
(b)所有的键:{A, B}, {B, C}, {B, D} 3 (c)所有的超键(不包括键):{A,B,C}, {A,B,D}, {B,C,D}, {A,B,C,D}
关系数据库模式设计
BC范式
若关系模式R的每个分量均是不可再分的数据项,则R满足第一范式,又记作:R ∈ 1NF。
BC范式如何定义?
关系模式R满足BC范式,当且仅当若非平凡函数依赖A1A2…An → B1B2…Bm在关系R中成立,则{A1,A2,…,An}是R的超键。
关系R满足BC范式的两种情形
关系R中不存在非平凡函数依赖。(只有平凡函数依赖)
每个非平凡函数依赖的左面包含某个键(即左面是超键)。
关系R违背BC范式的唯一情形
关系R中至少存在一个非平凡函数依赖,其左面不是超键。
分解为BC范式
分解策略:消除违背BCNF的函数依赖
1 找一个违背BCNF的非平凡函数依赖A1A2…An → B1B2…Bm。
2 把关系R分解成两个关系:
R1(A1,A2,…,An, B1,B2,…,Bm)。
R2(A1,A2,…,An, 所有其它属性),若不满足BC范式,则再分解。
例如:R(学号, 课号, 成绩, 系号, 系主任) 不满足BCNF。
1 非平凡函数依赖:学号 → 系号,系主任 成立
2 R分解为:R1(学号, 系号, 系主任)
R2(学号, 课号, 成绩)
3 非平凡函数依赖:系号 → 系主任 成立
4 R1继续分解为:R11(系号, 系主任)
R12(学号, 系号)
第三范式
关系模式R满足3NF,当且仅当若非平凡函数依赖A1A2…An → B在关系R中成立,则{A1,A2,…,An}是R的超键,或者B是某个键的组成部份(键属性)。
结论:一个关系模式总可以分解为满足3NF的模式,且所有的函数依赖都可得到保持。
第二范式
第二范式(2NF):
要求每个非键属性依赖于键的整体,而不是键的部分属性,即不允许有非平凡函数依赖的右面是非键属性,而左面是某个键的真子集。
满足2NF的几种情形:
不存在非平凡函数依赖。
存在非平凡函数依赖,且其右面是某个键的组成部分(键属性)。
存在非平凡函数依赖,且其右面是非键属性,则其左面要么是超键,要么包含非键属性。
例如:关系模式R(A, B, C, D)有函数依赖AB → C, C → D, D → A
找出所有违背BCNF的函数依赖。
必要时,分解为几个满足BCNF的关系
找出所有违背3NF的函数依赖。
解:
所有的键:{A, B}, {B, C}, {B, D}
违背BCNF的函数依赖:C → AD, D → A
分解:R1(A,C,D), R2(B,C)
R11(A,D), R12(C,D) 4 函数依赖AB → C 不保持
R满足3NF
关系模型中的运算
投影
选择
笛卡尔积
例4.5:p125
自然连接
自然连接是什么运算?
对于两个关系R和S,自然连接表示为R S
结果:属性是R和S中的属性的并集,去掉同名的属性;
其元组是R和S在同名属性上一致的元组的所有组合。
上例:
例4.7:p126
θ连接
θ连接是什么运算?
在笛卡尔积的基础上,增加条件以限制元组。
对于两个关系R和S,基于条件c的θ连接表示为 R cS,计算步骤: R
A B
1
3 2
4
S
B C D
2
4
9 5
7
10 6
8
11
R×S
A R.B S.B C D
1
1
1
3
3
3 2
2
2
4
4
4 2
4
9
2
4
9 5
7
10
5
7
10 6
8
11
6
8
11
R S
A B C D
1
3 2
4 5
7 6
8
U
A B C
1
6
9 2
7
7 3
8
8
V
B C D
2
2
7 3
3
8 4
5
10
U V
A B C D
1
1
6
9 2
2
7
7 3
3
8
8 4
5
10
10