第三范式(Third Normal Form,3rd NF)就是指表中的所有
数据元素不但要能唯一地被
主关键字所标识,而且它们之间还必须
相互独立,不存在其他的
函数关系。也就是说,对于一个满足2nd NF 的
数据结构来说,表中有可能存在某些数据元素依赖于其他非关键字数据元素的现象,必须消除。
关系模式R 中若不存在这样的码X、属性组Y及
非主属性Z(Z (强制依赖)Y),使得X→Y,Y→Z,成立,Y→X不成立,则称R ∈ 3NF。
采用投影
分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、
数据冗余度大、修改复杂等问题。
将一个2NF关系分解为多个3NF的关系后,并不能完全消除
关系模式中的各种异常情况和
数据冗余。
例:如S1(SNO,SNAME,DNO,DNAME,LOCATION) 各属性分别代表
学号,姓名,所在系,系名称,系地址。
关键字SNO决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。
原因:关系中存在
传递依赖造成的。即SNO ->DNO。 而DNO ->SNO却不存在,DNO ->LOCATION, 因此关键字 SNO 对 LOCATION 函数决定是通过传递依赖 DNO ->LOCATION 实现的。也就是说,SNO不直接决定
非主属性LOCATION。
解决方法:分为两个关系 S(SNO,SNAME,DNO),D(DNO,DNAME,LOCATION)