4.3 关系模式的规范化
4.3.1 关系与范式
要想设计一个好的关系,必须使关系满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求得严格。满足最低要求的关系属于第一范式的,在此基础上又满足了某种条件,达到第二范式的标准,则称它属于第二范式的关系,以此类推,直到第五范式。本章中,我们只需要掌握第一范式、第二范式、第三范式和BC范式即可。
1、第一范式
如果一个关系模式R的所有属性都是不可分的基本数据项,则称R是第一范式,不满足第一范式的数据库模式不能称为关系数据库,但满足第一范式关系模式并不一定是一个好的关系模式。
这个关系是否是第一范式呢?很明显不是,根据定义,每一个数据项不可分,像[课程、电话号码]这一项完全可以分成两个数据项,而它们却放在了一个数据项里,这是不满足第一范式的要求的。
2、第二范式
设R是一个关系模式,当R属于第一范式且每个非主属性都完全函数依赖于任一候选码时,我们称他是第二范式。判断一个关系R是不是第二范式的方法就是先求R的候选码,再看R中所有的非主属性,这些非主属性是否都依赖于任一候选码,若是,则为第二范式,否则就不是第二范式了
3、第三范式
设关系模式R是第二范式,且每个非主属性都非传递函数依赖于主码,我们称R为第三范式。
假设一个关系R中有非主键A和非主键B,那么就不能存在A依赖于B,而B又依赖于主键的情况。
4、BC范式
对于关系模式R,若R中的所有非平凡、完全的函数依赖的决定因素是码,则R属于BC范式。
由BC范式定义可得以下结论,若R属于BC范式,则R有:
R中所有的非主属性对每一个码都是完全函数依赖
R中的所有主属性对每一个不包含它的码也是完全函数依赖
R中没有任何属性完全函数依赖于非码的任何一组属性
这些概念可能会比较绕,但换句话来说就是X→Y时,X一定含有码(候选码中的任意一个)
我们总结一下这些范式到底是用来干什么的:
第一范式消除非基本数据项。
第二范式消除部分依赖。
第三范式消除传递依赖。