1NF,2NF,3NF,BCNF(3NF和BCNF的區別)
阿新 • • 發佈:2019-02-06
- 候選碼:若關係中的某一組屬性的值能唯一地標識一個元組,而其子集不能,則稱該屬性組為候選碼;
- 主碼:若一個關係有多個候選碼,則選定其中一個為主碼;
- 主屬性&&非主屬性:候選碼的諸屬性都稱為主屬性,不包含在任何候選碼中的屬性稱為非主屬性;
- 1NF
滿足最低要求的叫第一正規化。
- 2NF
- 3NF
若R中的每一個非主屬性既不傳遞依賴於碼,也不部分依賴於碼,則R屬於第三正規化
- BCNF
- 所有非主屬性對每一個碼都是完全函式依賴;
- 所有的主屬性對每一個不包含它的碼,也是完全函式依賴;
- 沒有任何屬性完全函式依賴於非碼的任何一組屬性。
- 栗子1
關係模式SJP(S,J,P)中,S是學生,J表示課程,P表示名次,每一個學生選修每門課程的成績都會有一定的名次,每門課程中每一個名次只有一個學生(即沒有並列名次)。
函式依賴(S,J)決定P,(J,P)決定S;
所以(S,J)與(J,P)都可以作為候選碼,這兩個碼由兩個屬性組成,不存在非主屬性,顯然沒有非主屬性對碼的傳遞和部分函式依賴,所以SJP屬於第三正規化;而且滿足上面1,2,3三條,所以SJP屬於第三正規化;
- 栗子2
關係模式STJ(S,T,J)中,S是學生,T是教師,J是課程。每一教師只教一門課,每門課有若干教師,某一學生選定某課程,就得到一個固定的教師。
函式依賴:(S,J)決定T;(S,T)決定J;T決定J;
這裡候選碼(S,J),(S,T);
不存在非主屬性對碼的部分或傳遞函式依賴,所以STJ屬於第三正規化;
但是J部分函式依賴於碼(T,S),不滿足第3條,所以STJ不屬於BCNF;