一. 首先介紹幾個概念:
1. 完全函數依賴:在屬性集U上的關系模式R(U)中,如果X->Y,並且對於X的任何一個真子集X’,都有X’≠>Y,則Y對X完全函數依賴。
2. 傳遞函數依賴:在R(U)中,如果X->Y,Y->Z,則稱Z對X的傳遞函數依賴。
二. 范式
關系型數據庫有6種范式:第一范式(1NF),第二范式(2NF),第三范式(3NF),巴德斯科范式(BCNF),第四范式(4NF),第五范式(5NF)。各種范式之間的聯系:5NF∈4NF∈BCNF∈3NF∈2NF∈1NF
1. 第一范式(1NF):
數據庫表中的字段都是單一屬性的,不可再分。第一范式滿足最低要求。
2. 第二范式(2NF)
對於R∈1NF,且每一個非主屬性完全函數依賴於碼,則R∈2NF。
3. 第三范式(3NF)
每一個非主屬性既不依賴於碼也不傳遞依賴於碼,則R屬於第三范式。
4.BCNF
除本NF外的碼,不存在其他決定因素,即無回路。
關系模式的規范化過程:
總結:在開發程序時,設計的數據庫最大的程度的遵循三范式,三范式在查詢的時候會join很多表,導致查詢效率降低,以至於有時候為了提高查詢的效率可以適度的冗余,適度的反范式。