前言

范式是数据库设计时所依据的主要理论,如果达不到指定范式,就会出现数据冗余、插入、删除、更新异常,数据库设计中要求至少达到3NF标准。在数据库设计中主要依据各个属性在语义上的依赖关系,由于语义上存在歧义,一般考试中会给定函数依赖,要求判定关系模式的最高范式。

函数依赖

定义:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y(读作X决定Y)。 X称为这个函数依赖的决定因素
完全函数依赖:在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’→Y不成立,则称Y完全函数依赖于X
部分函数依赖:在关系模式R(U)中,如果X→Y,X’是X的一个真子集,都有X’→Y成立,则称Y部分函数依赖于X
传递函数依赖:在关系模式R(U)中,如果X→Y,(Y不是X的子集),Y→X Y→Z则有X→Z,称Z传递函数依赖于X

范式的定义

第一范式(1NF),所有属性均不可以被分解;
第二烦式(2NF),在1NF的基础上,所有的非主属性不存在对码的部分依赖;
第三范式(3NF),在1NF的基础上,所有的非主属性不存在对码的传递依赖;
BCNF(3.5NF),在3NF的基础上,不存主属性对于码的部分函数依赖与传递函数依赖。也可以是每个决定因素X(函数依赖的左部)都包含了R的一个候选码

示例

例1】:设关系模式R(U,F),U={A、B、C、D},F={AB→C,C→D},判断R是几范式。
解:候选码为:AB,非主属性为C、D
C、D不存在对码AB的部分依赖,R∈2NF
存在D传递依赖AB,所以R不是3NF
结果:R为2NF
例2】:设关系模式R(U,F),U={B、C、D、E、G、H},F={BCD→EGH,E→D,G→C},判断R是几范式。
解:候选码为:BCD、BGD、BCE、BEG,主属性为B、C、D、E、G,非主属性为H。
不存在H对码的部分依赖R∈2NF
不存在H对码的传递依赖R∈3NF
E→D,G→C的存在,说明存在主属性D、C对码存在部分依赖,所以R不是BCNF
结论:R是3NF

结论

范式存在以下关系:1NF ⊃ 2NF ⊃ 3NF ⊃ BCNF ⊃ 4NF,判定是求关系模式的最高范式,BCNF以前主要使用函数依赖关系判定,4NF的判定依据多值依赖判定的。在关系型数据库设计中,以是否达到3NF作为判定标准,但是设计中为了提高性能等原因,在消除了插入、删除、更新异常情况下,可能会增加冗余达不到3NF,此时数据的一致性就需要程序员自己动手维护了。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐