第三章规范化理论
2014-6-3
hh
28
第三章 规范化理论
第三范式(续)
例: 在关系模式R(S,C,Z)中,S表示街道, C表示城市,Z表示邮政编码。根据数据语义可 知,R具有如下函数依赖: (S,C)→Z, Z→C 其中R的码为{S,C}。 R中没有任何非主属性对码的部分函数依赖或 传递函数依赖,因此R属于3NF。 但是,该关系模式仍然存在一些问题,例如,要 插入邮政编码与其对应城市的关系,必须知道 该邮政编码所对应的一条街道名。
2NF
2014-6-3 hh 25
第三章 规范化理论
第三范式(续)
所在系关系中可以插入无在校学生的系的信息。
某个系的学生全部毕业了,该系的信息仍存在。
关于系的系主任的信息只在DM关系中存储一次。 当学校调整某个系的系主任时,只需修改DM关系中 一个相应元组的‚系主任‛值。
2014-6-3
2014-6-3
hh
22
第三章 规范化理论
2NF存在的问题
SC(学号,课程号,成绩)
SDM(学号,所在系,系主任)
插入异常:如果某个系因种种原因(例如刚成立), 目前暂时没有在校学生,无法把这个系的信息存入 数据库。 删除异常:如果某个系的学生全部毕业了,在删除 该系学生信息的同时,把这个系的信息也丢掉了。 数据冗余度大:每个系只有一个系主任,关于系主 任的信息却重复出现,重复次数与该系学生人数相 同。 修改复杂:当学校调整系主任时,由于关于每个系 的系主任信息是重复存储的,修改时必须同时更新 该系所有学生的‚系主任‛值。
完全函数依赖
成绩
学号
hh
系主任
19
2014-6-3
第三章 规范化理论
第二范式(续)
SC(学号,课程号,成绩)
分解后,上述 四大问题解决 了吗?
SDM(学号,所在系,系主任)
可以插入尚未选课的学生。 删除一个学生的所有选课信息,所在系关系SDM中关 于该学生的元组不受影响。 大大降低了数据冗余。 简化了修改操作。
2014-6-3
hh
4
第三章 规范化理论
例子
设关系模式 R(学号,所在系,系主任,课程号,成绩) 若一名学生可以上若干门课,并在一个系注册, 每个系只有一个系主任。 该模式的属 则该模式的属性间存在着如下的函数依赖:
学号所在系 学号系主任 所在系系主任 (学号, 课程号)成绩
S(学号,系名)S∈3NF D(系名,系主任) D∈3NF
2014-6-3
hh
24
第三章 规范化理论
3.2.3第三范式(3NF)
在分解后的关系模式中既没有非主属性对码 的部分函数依赖也没有非主属性对码的传递函 数依赖,在一定程度上解决了上述四个问题, 即:
1NF 消除掉部分函数依赖
2NF 消除掉传递函数依赖
3.2
3.2.1 3.2.2 3.2.3
范式
第一范式(1NF) 第二范式(2NF) 第三范式(2NF) BC范式(BCNF)
hh 12
3.2.4
2014-6-3
第三章 规范化理论
什么叫范式?
关系数据库中的关系模式是要满足一定要求的, 满足不同程度要求的为不同范式。 满足最低要求的叫第一范式,简称1NF。在第 一范式中满足进一步要求的为第二范式,其余 以此类推。显然,各种范式之间存在联系: 1NF2NF3NFBCNF ***一个低一级范式的关系模式,通过模式分 解可以转换为若干个高一级范式的关系模式的 集合,这种过程就叫规范化***。
第三章 规范化理论
BC范式(续)
BCNF的定义是: 如果关系模式R属于1NF,并且R的所有属性 (包括主属性和非主属性)既不部分依赖也不 传递依赖于R的码,则R∈BCNF。 BCNF(Boyce Codd Normal Form)是由Boyce 和Codd提出的,比3NF更进了一步。通常认为 BCNF是修正了的第三范式,所以只要不引起混 淆或误解,有时统称它们为第三范式。
2014-6-3 hh 9
第三章 规范化理论
2.完全函数依赖和部分函数依赖
在函数依赖XY中,如果对于X的任何一个真 子集Xˊ,都有Xˊ→ Y, 则称Y完全函数依赖 于X,否则称Y部分函数依赖于X。
例 R(学号,所在系,系主任,课程号,成绩)
部分函数确定
关键字 (主码)
学号
完全函数确定
所在系 成绩
2014-6-3 hh 3
第三章 规范化理论
1.函数依赖
一般地讲,设X、Y是关系的两个不同的属性组, 如果X的取值确定时,Y的取值也就确定了, 叫做X函数决定Y或Y函数依赖于X ,表示为X Y ,其中X称作决定因素 这种依赖关系实际上是函数关系,正象一个函 数y=f(x)一样,x的值给定了,函数值y也就唯 一地确定了。
hh 13
2014-6-3
第三章 规范化理论
3.2.1第一范式(1NF)
关系模型要求关系模式的每一个分量必须 是一个不可分的数据项,也就是说,不允 许表中还有表。凡是满足该条件的关系模 式都属于第一范式。 第一范式是对关系模式的一个最起码的要 求。不满足第一范式的数据库模式不能称 为关系数据库。
课程号
hh
2014-6-3
10
第三章 规范化理论
3.传递函数依赖
如果存在函数依赖XY,Y→Z,并且Y不是X 的子集,同时Y不能函数决定X,则Z传递函数依 赖于X。 例如,学号→所在系,所在系→系主任,则学 号→系主任,这样“系主任”传递函数依赖于 “学号”。
2014-6-3
hh
11
第三章 规范化理论
2014-6-3 hh 7
第三章 规范化理论
几点说明:
1. 函数依赖是语义范畴的概念.它反映了一种 语义完整性约束,只能根据语义来确定一个函 数依赖. 2. 函数依赖是指关系R模式的所有关系元组均 应满足的约束条件,而不是关系模式中的某个 或某些元组满足的约束条件
2014-6-3
hh
8
第三章 规范化理论
3. 如果X Y,并且Y不是X的子集,则称X Y是 非平凡的函数依赖;如果Y是X的子集,则称X Y是平凡的函数依赖; 我们讨论的是非平凡的函数依赖. 4. 函数依赖的存在,决定了自然连接的特性 设关系模式R(X,Y,Z),X,Y,Z为不相交的属 性集合,若X Y,X Z,则有 R(X,Y,Z)=R[X,Y]*R[X,Z] 即用他们的自然连接可复员原关系模式
2014-6-3
hh
32
第三章 规范化理论
3.3 规范化举例
一个不好的关系模式会导致
插入异常 删除异常 数据冗余度大 修改复杂 逐步消除数据依赖中不合适的部分 使模式中的各关系模式达到某种程度的‘分离’,让一个关 系描述一个概念、一个实体或者实体间的一种联系。 若多于一个概念就把它‘分离’出去。
3)修改复杂(如果学生换系,不但要修改系 名,还要修改系主任,而且有几条记录就得修 改几次)。
4)数据冗余度大
hh 17
2014-6-3
第三章 规范化理论
3.2.2第二范式(2NF)
R(学号,所在系,系主任,课程号,成绩) 所在系 系主任
部分函数依赖
模式分解! 怎样解决 以上四大 问题?
学号 课程号
规范化的目的:
因此,所谓规范化实质上是概念的单一化。
2014-6-3
hh
33
第三章 规范化理论
规范化的过程
原始的关系模式 横向或纵向展开(去掉表中有表的情况) 属于1NF的关系模式 消除非主属性对码的部分函数依赖 属于2NF的关系模式 消除非主属性对码的传递函数依赖 属于3NF的关系模式 消除所有属性对码的部分和传递函数依赖
hh
26
第三章 规范化理论
第三范式(续)
3NF的定义是: 如果一个关系模式R属于2NF,并且每一个非主 属性都不传递函数依赖于R的码,则R∈3NF。 3NF就是要求R的每一个非主属性既不部分函数 依赖也不传递函数依赖于码。
2014-6-3
hh
27
第三章 规范化理论
第三范式(续)
采用投影分解法将一个2NF的关系模式分解为 多个3NF的关系模式,可在一定程度上减轻原 2NF关系模式中存在的插入异常、删除异常、 数据冗余度大、修改复杂等问题。 但是,并不能完全消除关系模式中的各种异常 情况和数据冗余
2014-6-3
hh
14
第三章 规范化理论
非第一范式转换为第一范式
纵向展开
2014-6-3
hh
15
第三章 规范化理论
非第一范式转换为第一范式
横向展开
2014-6-3
hh
16
第三章 规范化理论
1NF存在的问题
1)插入异常(无法插入一个没有选课的学生 的有关信息) 2)删除异常(如果删除一门课程,则整个元 组就不存在,即将删除其它信息)
2014-6-3
hh
20
第三章 规范化理论
第二范式(续)
2NF的定义: 如果一个关系模式R属于1NF,且它的每一个非 主属性都完全函数依赖于码,则R属于2NF。
1NF 消除掉部分函数依赖
2NF
2014-6-3
hh
21
第三章 规范化理论
第二范式(续)
2NF在一定程度上减轻原1NF关系中存在的插入 异常、删除异常、数据冗余度大、修改复杂等 问题。 但2NF并不能完全消除关系模式中的各种异常 情况和数据冗余。 例如上例中,满足了第二范式的关系模式SDM 仍然存在以下问题: