关系数据库中的关系需要满足一定的要求,不同程度的要求称为不同的范式(Normal Form, NF)。
满足最低要求的称为第一范式(1NF), 这是最基本的范式;在 1NF 的基础上满足一些新的需求的称为 2NF;依次类推还有 3NF及其改进形式 BCNF (Boyee-Codd Normal Form); 当然还有更高级别的范式: 4NF, 5NF,但是这里不做讨论。
1NF: 每个属性值不可再分,不含重复组关系。
2NF: 满足 1NF, 且所有非主属性都完全函数依赖于候选关键字。
3NF: 满足 2NF,且所有非主属性都不传递函数依赖于候选关键字。
BCNF: 满足 3NF,所有函数依赖集中的决定因子必包含候选关键字。
规范化:
一个低一级范式的关系通过模式分解( Schema Decomposition) 可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化( Normalization)。
1NF 转换为 2NF 时,需要消除非主属性对候选关键字的部分函数依赖。
2NF 转换为 3NF 时,需要消除非主属性对候选关键字的传递函数依赖。
3NF 转换为 BCNF 时,需要让所有依赖集中的决定因子都包含候选关键字。
名词解释:
函数依赖:
函数依赖是指关系中属性间的对应关系。
学号 (SNO) | 姓名 (SNAME) | 性别 (SSEX) | 宿舍(SROOM) |
---|---|---|---|
901004 | 张三 | 男 | 001 |
( 表 1 )
如图所示,表(关系)中存在如下函数依赖:
SNO -> SNAME
SNO -> SSEX
SNO -> SROOM
(-> 读作决定,SNO 是决定因子。或者 SNAME 函数依赖于 SNO, 依次类推)
完全函数依赖:
设 R 为任一给定的关系, X、Y 为其属性集,若 X -> Y,且对 X 中的任何真子集 X’ 都有 X’ 不决定 Y, 则称 Y 完全函数依赖于 X。
部分函数依赖:
设 R 为任一给定的关系, X、Y 为其属性集,若 X -> Y, X 中的存在真子集 X’ ,使 X’ -> Y, 则称 Y 部分函数依赖于 X。
候选关键字: