1.3 第三范式(3NF)屬性不依賴于其它非主屬性 [ 消除傳遞依賴 ]
如果關(guān)系模式R是第二范式,且每個非主屬性都不傳遞依賴于R的候選鍵微饥,則稱R為第三范式模式逗扒。
滿足第三范式(3NF)必須先滿足第二范式(2NF)。第三范式(3NF)要求一個數(shù)據(jù)庫表中不包含已在其它表中已包含的非主關(guān)鍵字信息欠橘。
例如矩肩,存在一個部門信息表,其中每個部門有部門編號(dept_id)简软、部門名稱蛮拔、部門簡介等信息述暂。那么在的員工信息表中列出部門編號后就不能再將部門名稱、部門簡介等與部門有關(guān)的信息再加入員工信息表中建炫。如果不存在部門信息表畦韭,則根據(jù)第三范式(3NF)也應該構(gòu)建它,否則就會有大量的數(shù)據(jù)冗余肛跌。
第三范式(3NF):在第二范式的基礎上艺配,數(shù)據(jù)表中如果不存在非關(guān)鍵字段對任一候選關(guān)鍵字段的傳遞函數(shù)依賴則符合第三范式。簡而言之衍慎,第三范式就是屬性不依賴于其它非主屬性转唉。
所謂傳遞函數(shù)依賴,指的是如果存在"A → B → C"的決定關(guān)系稳捆,則C傳遞函數(shù)依賴于A赠法。
因此,滿足第三范式的數(shù)據(jù)庫表應該不存在如下依賴關(guān)系:
關(guān)鍵字段 → 非關(guān)鍵字段x → 非關(guān)鍵字段y
假定學生關(guān)系表為Student(學號, 姓名, 年齡, 所在學院, 學院地點, 學院電話)乔夯,關(guān)鍵字為單一關(guān)鍵字"學號"砖织,因為存在如下決定關(guān)系:
(學號) → (姓名, 年齡, 所在學院, 學院地點, 學院電話)
這個數(shù)據(jù)庫是符合2NF的,但是不符合3NF末荐,因為存在如下決定關(guān)系:
(學號) → (所在學院) → (學院地點, 學院電話)
即存在非關(guān)鍵字段"學院地點"侧纯、"學院電話"對關(guān)鍵字段"學號"的傳遞函數(shù)依賴。
它也會存在數(shù)據(jù)冗余甲脏、更新異常眶熬、插入異常和刪除異常的情況,讀者可自行分析得知块请。
把學生關(guān)系表分為如下兩個表:
學生:(學號, 姓名, 年齡, 所在學院)娜氏;
學院:(學院, 地點, 電話)。
這樣的數(shù)據(jù)庫表是符合第三范式的墩新,消除了數(shù)據(jù)冗余牍白、更新異常、插入異常和刪除異常抖棘。