当前位置:
文档之家› 第6章 关系数据库理论W11
第6章 关系数据库理论W11
t1[X]=t2[X]可以推导出t1[Y]=t2[Y],则称X函数决定Y,或Y函数
依赖于X,记为X→Y。
6.1.2 为什么要讨论函数依赖
数据冗余问题 数据更新问题
存在什么问题?
数据插入问题
数据删除问题
如何将“坏”的关系 模式转换成“好”的 关系模式?
术语:非平凡函数依赖、平凡函数依赖 如果X→Y,但Y不包含于X,则称X→Y 是非平凡的函数依赖。
如何对关系规范化,满足3NF或BCNF?
找出所有的函数依赖
每个新的关系模式仅包含一个函数依赖,决定因素作为该 关系模式的主关键字
以表6-1的“选课”关系为例
已知:U={学号, 课程号, 课程名, 责任教师, 职称, 考试成绩} 具体分解过程:
(1)找出所有的函数依赖:
F={(学号,课程号)考试成绩, 课程号课程名, 课程号责 任教师, 责任教师职称} 按相同左部进行分组得到如下结果: F1={(学号,课程号)考试成绩}
不满足第二范式 因为存在部分函数依赖
存储冗余、插入异常、更新异常、 删除异常等现象是否还存在呢?
把“选课”关系分解为如下“选课”和“课程”两个关系:
选课(学号, 课程号, 考试成绩) 课程(课程号, 课程名, 责任教师, 职称)
第三范式
如果R(U,F) ↔2NF,并且所有非主属性都不传递依赖于 关键字,则R(U,F) ↔3NF。
6.2 模式分解
“坏”的关系模式
“好”的关系模式
6.2.1 模式分解的准则
模式分解具有无损连接性;
无损连接是指分解后的关系通过自然连接可以恢复成原来的
关系。
模式分解能够保持函数依赖。
保持函数依赖分解是指在模式的分解过程中,函数依赖不能
丢失的特性,即模式分解不能破坏原来的语义。
6.2.2 模式分解举例
规范化程度可以有多个不同的级别。 规范化程度过低的关系不一定能够很好地描述现实世界,
可能会存在插入异常、删除异常、修改复杂、数据冗余等
问题。
一个低一级范式的关系模式,通过模式分解可以转换为若
干个高一级范式的关系模式集合,这种过程就叫关系模式
的规范化。
规范化总结(2/3)
关系模式规范化的基本步骤
6.3 关系规范化
目的是要设计“好的”关系数据库模式。
关系模式分为:
第一范式(1NF) 第二范式(2NF)
低
第三范式(3NF)
BC范式
(BCNF) (4NF) (5NF)
规范化程度
第四范式 第五范式
高
第一范式
每个关系模式都应满足最低要求:所有分量都必须是不可
分的最小数据项,并把其称为第一范式(1NF)关系。
给出以下几组数据
第一组数据假设教师T1负责课程C1、C2、C3,并且C1课程使用教室 M1和M4等: T1 C1—M1, M4 C2—M3, M6 C3—M2, M5, M7 第二组数据假设教师T2负责课程C4、C5,并且C4课程使用教室M1、 M3和M4等: T2 C4—M1, M3, M4 C5—M2, M6 第三组数据假设教师T3负责课程C6、C7,并且C6课程使用教室M2 和M3等: T3 C6—M2, M3 C7—M4
如:(学号,课程号)→成绩 如:(学号,学院)→学院
非平凡依赖 平凡依赖
举例:
关系模式:学生(学号,姓名,年龄)
(学号,姓名)→姓名 平凡 函数依赖 学号→姓名 非平凡 函数依赖
术语:不函数依赖于
如果Y不函数依赖于X,则记作X 如学号不函数依赖于性别, 则记作性别 学号。 Y。
术语:决定因素
如果X→Y,则X称作决定因素。 如学号→学院,则学号称作决定因素
将这些数据排列成关系?
是否存在操 作异常现象?
原因:存在一 个主属性对非 主属性的函数 依赖(课程→ 教师)
BC范式定义:
关系模式R(U,F) ↔1NF,X→Y是F上的任意函数 f 依赖,并且Y X,X U,则R(U,F) ↔BCNF。
换句话说,如果R(U,F)中的每个函数依赖的左部都是 关键字(或所有的决定因素都是关键字),则R(U,F) ↔BCNF。 也可以说,如果R(U,F) ↔3NF,并且不存在主属性对 非主属性的函数依赖,则R(U,F) ↔BCNF。
例:院系(编号,名称,负责人,地点)
有函数依赖:
编号→名称(名称函数依赖于编号)
编号→负责人(负责人函数依赖于编号)
名称→地点(地点函数依赖于名称) 名称→编号(编号函数依赖于名称) ……
函数依赖的严格形式化定义:
设有关系模式R(A1,A2,…,An),X和Y均为{A1,A2,…,An}的子
集,r是R的任一具体关系,t1、t2是r中的任意两个元组;如果由
关系模式
用U表示关系模式R的属性全集,即 U={A1,A2,…,An},用F表示关系模式R上的函数 依赖集,则关系模式R可表示为R(U,F)。
如U={编号,名称,负责人,地点} F={编号→负责人,编号→地点, 编号→名称,名称→编号} 则R(U,F)表示院系关系
术语:主属性、非主属性
如果K是关系模式R(U,F)的任一候选关键
1NF ↓ 消除非主属性对码的部分函数依赖 2NF ↓ 消除非主属性对码的传递函数依赖 3NF ↓ 消除主属性对码的部分和传递函数依赖 BCNF ↓ 消除非平凡且非函数依赖的多值依赖 4NF
规范化总结(3/3)
规范化的基本思想
消除不合适的数据依赖,各关系模式达到某种程度的
“分离”。
所谓规范化实质上是概念的单一化:让一个关系描述一
第三范式
例如:
已知关系模式 R(A,B,C)中
存在B →C 则此关系模式一定满足?NF
2
第三范式
例如:
已知关系模式 R(A,B,C)中
不存在B →C 和C →B 则此关系模式一定满足?NF
3
第三范式
例如: 已知关系模式 R(A,B,C) 则此关系模式一定满足?NF
3 特殊情况
第三范式
非规范化表格和规范化表格
第二范式
如果R(U,F) ↔1NF,并且R中的每个非主属性都完全函数 依赖于关键字,则R(U,F) ↔2NF。
第二范式
判断关系模式是否满足2NF的方法?
主关键字为单个属性时:一定为2NF 主关键字为多个属性时:如果每个非主属性组都完全依赖于主关
键字,则为果XK,则X 称为主属性;否则称为非主属性。 例如:选课(学号,课程号,成绩) 因为(学号,课程号)是选课关系的关键 字,所以学号和课程号均是主属性,而成 绩为非主属性。
术语:函数等价
如果X→Y,并且Y→X,则可记作X←→Y, 这时X和Y可以称做函数等价。 如在院系关系上: 编号→名称,名称→编号 所以在院系关系上编号和名称可以称作函数 等价。
第6章 关系数据库理论
问题
关系模式(relational model)的“好”与“坏”
设计好的关系模式
学习内容
函数依赖(Functional Dependency)
模式分解 关系规范化 讨论什么样的关系是“坏”的关系,如何将“坏”的关 系转换为“好”的关系
学习目标
理解函数依赖及其相应的概念和术语;
为了解决操作异常现象如何进行分解?
任何分解都会破坏函数依赖:
(教师,教室)课程
结论:不将3NF分解成BCNF!
BC范式是判断一个关系规范化程度的准则,如果一个关系
是3NF但不是BCNF,此时也不再进行分解,而是要注意可
能会产生的操作异常现象。
如何解决? 使用触发器如何?
6.3.5 规范化算法(略)
存在操作异常吗?
把表6-6所示意的课程关系分解成如下两个关系:
课程(课程号, 课程名, 责任教师)
教师(责任教师, 职称)
满足3NF么?
操作异常还存在吗?
6.3.4 BC范式
第三范式实际上已经解决了大部分操作异常现象,但是有
些关系模式可能还会出现这样或者那样的问题。
假设有如下关系模式:R(教师, 教室, 课程)
设有关系模式R(U,F),U={课程,教师,学院},F={课程→教师, 教师→学院},从F中可以看出,一门课程只能由一名教师负责, 一名教师只能属于一个学院。设有如表6-2所示的关系实例r,判 断如下的三个分解是否满足无损连接和保持函数依赖的特性:
ρ1={R1(课程,Φ),R2(教师, Φ),R3(学院, Φ)} ρ2={ R1({课程, 教师},{ 课程→教师 }), R2({课程, 学院},{ 课程→学院 })} ρ3={ R1({课程, 教师},{ 课程→教师 }), R2({教师, 学院},{ 教师→学院 })}
个概念、一个实体或者实体间的一种联系。若多于一个 概念就把它“分离”出去。
不能说规范化程度越高的关系模式就越好,上面的规范
化步骤可以在其中任何一步终止。
在设计数据库模式结构时,必须对现实世界的实际情况
和用户应用需求作进一步分析,确定一个合适的、能够 反映现实世界的模式。
掌握模式分解的准则; 理解关系范式(Normal Form)的定义,掌握关系规范化 的方法。
6.1 函数依赖(Functional Dependency)
Y=f(X) Y=X+1
Y=sin(X)
函数
Y=X2+2X+1
省=f(城市)
姓名=f(学号)
函数依赖的直观定义:
如果有一个关系模式R(A1,A2,…,An),X和Y为 {A1,A2,…,An}的子集,那么对于关系R中的任意一个X值, 都只有一个Y值与之对应,则称X函数决定Y,或Y函数依 赖于X。