一、4nf和bcnf的區別
BCNF與4NF的區別:
編號 | BCNF | 4NF |
1 | BCNF中的關系也必須在3NF中。 | 4NF中的關系也必須是Boyce Codd正規形式(BCNF)。 |
2 | BCNF中的關系可能具有多值依賴關系。< 4NF中的關系不能有任何多值依賴關系。 | BCNF中的關系可能在4NF中,也可能不在。4NF中的關系總是在BCNF中。 |
4 | BCNF較4NF弱。 | 4NF比BCNF更強。 |
5 | 如果一個關系在BCNF中,那么它將比4NF有更多的冗余。 | 如果一個關系是4NF,那么它將比BCNF有更少的冗余。 |
6 | 如果一個關系在BCNF中,那么所有基于函數依賴性的冗余都被刪除了。 | 如果一個關系是4NF,那么所有基于函數依賴和多值依賴的冗余都將被刪除。 |
7 | 對于一個關系,BCNF中的表數小于或等于4NF中的表數。 | 對于一個關系,4NF中的表數大于或等于BCNF中的表數。 |
8 | 依賴保持在BCNF中很難實現。 | 與BCNF相比,4NF中依賴保持更難實現。 |
9 | 在實際數據庫設計中,一般采用3NF或BCNF。 | 在現實世界的數據庫設計中,通常4NF不是數據庫設計人員的優選。 |
10 | BCNF中的關系可以包含多值關系和連接依賴關系。 | 4NF中的關系可能只包含連接依賴。 |
延伸閱讀:
二、多值依賴
多值依賴屬4nf的定義范圍,比函數依賴要復雜得多。在關系模式中,函數依賴不能表示屬性值之間的一對多聯系,這些屬性之間有些雖然沒有直接關系,但存在間接的關系,把沒有直接聯系、但有間接的聯系稱為多值依賴的數據依賴。
在函數依賴中,X與Y是否存在函數依賴關系,只需考察X,Y的兩組屬性,與別的屬性無關。而在多值依賴中,X與Y是否存在多值依賴還需看屬性Z。