狂学数据库之三大范式
在了解三大范式之前,我们需要了解一下它的背景就是关系数据库模式的规范化理论。
规范化的基本思想是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、删除与修改时发生的异常现象
。这就要求关系数据库设计出来的关系模式要满 足一定的条件。
规范化的含义:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合
关系数据库的规范化过程中为不同程度的规范化要求设立的不同的标准或准则称为范式。
满足最低要求的叫第一范式,简称 1NF。
在第一范式中满足进一步要求的为第 二范式(2NF)
,其余以此类推。R 为第几范式就可以写成 R∈xNF(x 表示某范式名)。
第一范式(1NF)
1NF 定义
如果关系模式 R 的每一个关系 r 的属性值都是不可分的原子值,那么称 R 是第一范式 (first normal form,简记为 1 NF)的模式。
不是 1NF 的关系称为非规范化的关系,满足 1NF 的关系称为规范化的关系。关系数据库研究的关系都是规范化的关系。
1NF的问题
满足第一范式的关系模式并不一定是一个合理的关系模式。
第二范式(2NF)
2NF定义
若 R∈1NF,且 R 中的每一个非主属性都完全函数依赖于 R 的任一候选码,则 R∈2NF。
2NF应满足的条件
2NF 关系中不存在非主属性对候选码的部分函数依赖。
例如,在关系模式:SOC (Sno, Sdept, Soff, Cno, Grade)中 Sdept﹑Soff 属性存在对码的部 分函数依赖。
为了消除这些部分函数依赖,可以采用投影分解法,
把 SOC 分解为两个关系 模式:
SC(Sno, Cno, Grade) SO(Sno, Sdept, Soff)
例题:
2NF的问题
可以在一定程度上解决原 1NF 关系中存在的插入异常,删除异常, 数据冗余度大,修改复杂等问题.但是将一个 1NF 关系分解为多个 2NF 的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余.也就是说
2NF 关系并不能解决所有问题。
第三范式(3NF)
3NF定义
如果关系R的任何一个非主属性都不传递函数依赖于它的任何一个候选码,则R∈3NF。
由定义可以证明,若 R∈3NF,则 R 的每一个非主属性既不部分函数依赖于候选码,也不传 递函数依赖于候选码。显然,如果 R∈3NF,则 R 也是 2NF。
判别3NF方法
①找候选码,确定非主属性。
②考察非主属性对候选码的函数依赖是否存在部分函数依赖。如果存在,则相应的关系 模式不是 2NF,否则是 2NF。
③考察非主属性之间是否存在函数依赖。如果存在,相应模式不是 3NF,否则是 3NF。 也可根据 3NF 定义,判断是否存在非主属性对候选码的传递函数依赖。这种判别方法 的好处是能够逐级判别关系模式的范式级别。
3NF的问题
可以在一定程度上解决原 2NF 关系中存在的插入异常,删除异常, 数据冗余度大,修改复杂等问题.但是将一个 2NF 关系分解为多个 3NF 的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余.也就是说,
属于 3NF 的关系模式并不一 定是一个好的关系模式.
END!!!