1. 程式人生 > >1NF,2NF,3NF,BCNF(3NF和BCNF的區別)

1NF,2NF,3NF,BCNF(3NF和BCNF的區別)

  • 候選碼:若關係中的某一組屬性的值能唯一地標識一個元組,而其子集不能,則稱該屬性組為候選碼;
  • 主碼:若一個關係有多個候選碼,則選定其中一個為主碼;
  • 主屬性&&非主屬性:候選碼的諸屬性都稱為主屬性,不包含在任何候選碼中的屬性稱為非主屬性;
  • 1NF

       滿足最低要求的叫第一正規化。

  • 2NF
若R屬於第一正規化,且每一個非主屬性完全函式依賴於任何一個候選碼,則R屬於2NF
  • 3NF

若R中的每一個非主屬性既不傳遞依賴於碼,也不部分依賴於碼,則R屬於第三正規化

  • BCNF
  1. 所有非主屬性對每一個碼都是完全函式依賴;
  2. 所有的主屬性對每一個不包含它的碼,也是完全函式依賴;
  3. 沒有任何屬性完全函式依賴於非碼的任何一組屬性。
  • 栗子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;

如有哪個地方寫錯了,歡迎指出來;