第三範式
第三範式(Third Normal Form,3rd NF)就是指表中的所有数据元素不但要能惟一地被主关键字所标识,而且它们之间还必须相互独立,不存在其他的函式关係。也就是说,对于一个满足2nd NF 的数据结构来说,表中有可能存在某些数据元素依赖于其他非关键字数据元素的现象,必须消除。
基本介绍
- 中文名:第三範式
- 关係:传递函式依赖关係
- 模式:关係模式
- 方法:投影分解法
- 解决目地:每个关係模式中不能留有传递依赖
- 注意:关係S中不能没有外关键字DNO
简介
关係模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z(Z (强制依赖)Y),使得X→Y,Y→Z,成立,Y→X不成立,则称R<U,F> ∈ 3NF。
若R∈3NF,则R的每一个非主属性既不部分函式依赖于候选码也不传递函式依赖于候选码。
如果R∈3NF,则R也是2NF。
採用投影分解法将一个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)
注意:关係S中不能没有外关键字DNO。否则两个关係之间失去联繫。
将第一範式,第二範式化为第三範式的步骤:
(1)求出R的最小函式依赖集Fmin
(2)找出不在Fmin中出现的属性,并将这些属性从R中去掉,构成一个关係模式
(3)若Fmin中有一个函式依赖涉及R的全部属性,则R不能分解
(4)否则,若Fmin中有X->A,则分解应包含{XA};若有X->A1,X->A2....X->An均属于Fmin,则分解应包含{XA1A2...An}