文档库 最新最全的文档下载
当前位置:文档库 › 资料库正规化

资料库正规化

未正規化的資料表:

學號導師導師辦公室課程 1課程 2課程 3

1022Jones412101-07143-01159-02

4123Smith216201-01211-02214-01

第一正規形式:沒有重複的群組

學號導師導師辦公室課程 #

1022Jones412101-07

1022Jones412143-01

1022Jones412159-02

4123Smith216201-01

4123Smith216211-02

4123Smith216214-01

第二正規形式:刪除重複的資料

學生:註冊課程:

學號導師導師辦公室學號課程 #

1022Jones4121022101-07

4123Smith2161022143-01

1022159-02

4123201-01

4123211-02

4123214-01

第三正規形式:刪除不依賴索引鍵的資料

學生:教職員:註冊課程:學號導師名稱辦公室部門學號課程 # 1022Jones Jones412421022101-07 4123Smith Smith216421022143-01

1022159-02

4123201-01

4123211-02

4123214-01

在建置關聯性資料庫(RDB)時,正規化為非常重要基礎知識。正規化的主要目的,為維持資料庫的整合性,能夠有效率的管理資料庫。正規化一

言就是將非正規化的資料庫分解,分解幾次就稱做第幾次的正規化,通常有以下6種方式。在正規化的過程中,必須維持「1 fact in 1 place」的原則,除去資料的冗常性,保持資料的一貫性,相同資料只須在一個地方輸入等。

第1正規形(first normal form,1NF)

非正規形資料的欄位值無法再分離出來時,稱做第1正規形。非正規形資料因同一欄位存在複數值,會發生無法進行演算的問題。例如1筆訂單資

在多項商品的明細,將其分離出成1筆1筆的單筆明細,就成為第1正規形。

第2正規形(second normal form,2NF)

符合第1正規形而且「非Key值完全從屬於候補Key值」,稱做第2正規形。如下範例,訂單資料內存在非Key值「商品名稱」,部分從屬於候補Key值的「商品代碼」({訂單號碼,商品代號}→商品名稱),因此將其分離出來,即成為第2正規形。

*1)「函數從屬性」(functional dependency):「FD:X→Y,X(稱為決定項)屬性值確定之後,Y(稱為從屬項)屬性值亦可以確定,稱做Y函數從屬於X」

*2)「完全函數從屬性」(fully FD):「X→→Y,X的部分集合X'→Y不成立時,Y完全從屬於X。成立時,稱Y部分從屬於X」

第3正規形(third normal form,3NF)

符合第2正規形而且不含有「非Key值推移從屬於候補Key值」,稱做第3正規形。如下範例,商品主檔內存在非Key值的「商品類別名稱」,直接從屬於非Ley值的「商品類別代號」,推移從屬於主Key值的「商品代號」,因此將其分離出成,即成為第3正規形。

*1)「推移函數從屬性」(Transitively FD):「X→Y→Z,但是Y→X、Z→X不成立,Z推移從屬於X」。

BCNF正規形(Boyce/Codd normal form; BCNF)

同等於第3正規形,而且「自明函數從屬性的決定項都為Super Key」,稱做BCNF正規形。例如著名的SCT關聯,{學生、科目、講師}的關係資料

有{學生、科目}→講師(前提學生所修的1個科目不會有多位老師)以及講師→科目(前提1位講師只負責1個科目)的函數從屬性,符合第3正規形,但是「講師」不是SuperKey,不符合BCNF正規形,因此將其分解成「學生-講師」、「講師-科目」,即成為BCNF正規形(注意分解後,函數從屬關係會改變,原本不是Key值的「講師」變成Key值)。不分解的話會有(1)新講師上任,負責科目已確定,還沒有學生時,會發生無法登錄的情形。(2)學生刪除選課履歷時,講師和科目的資料也會被刪除的情形。(3)講師變更科目時,會出現重複的情形...。

*1)「自明函數從屬性」(Trivial FD):「X→X、{X,Y}→X,從屬項和決定項相同或者從屬項亦為決定項的集合」。

*2)「Super Key」:「包含有候補Key的集合」。{學生、科目、講師}Super Key為學生、科目、{學生、科目}、{學生、講師}、{科目、講師}等

上述的第1~3正規形都是針對具有「Key值」和「非Key值」的關聯資料,進行正規化。接下來的第4、5正規形,只針對只有存在「Key值」的關聯

料,進行正規化。

第4正規形(fourth normal form; 4NF)

「自明多值從屬性的決定項都為Super Key」,稱做第4正規形。例如,若有店名、顧客、商品3個主key的關係資料,屬於多值從屬性,將其分離成

-顧客」、「店-商品」兩個相關資料,即成為第4正規形。沒有第4正規時,當發生某家店出現新商品還有沒有顧客的情形,因顧客為主key不能為null 值,所以變成無法建檔等問題。

*1)「多值從屬性」(multivalued dependency):「MVD:A→→B|C,B、C各自獨立沒有關聯,卻都從屬於A」。

*2)「Super Key」:「包含有候補Key的集合」。{店名、顧客、商品}Super Key為店名、顧客、商品、{店名、顧客}、{店名、商品}、{顧客、商品

第5正規形(fifth normal form; 5NF,project-join normal form; PJ/NF)

符合第4正規形而且「「自明影射-結合從屬性的決定項都為Super Key」,稱做第5正規形。例如,{採購者、商品名、廠商}名3個主key的關係資料

以將其影射成「採購者-商品名」、「商品名-廠商名」、「採購者-廠商名」三個相關資料,即成為第5正規形。沒有第5正規時,採購者、商品名、廠商都為主Key不能為Null值,其中之一未決定時都無法建檔。

*1)「影射-結合從屬性」(project-join dependency):「*(A,B,C,..,Z),A,B,C,..,Z為R關聯資料的任意部分集合,R和A,B,C,..,Z上的影射-結合相同」。

*2)「Super Key」:「包含有候補Key的集合」。{採購、商品、廠商}Super Key為採購、商品、廠商、{採購、商品}、{商品、廠商}、{採購、廠商

相关文档