定義: 函數依賴: 通過某屬性(集)能確定另外一個屬性; (X,Y) >Z 完全函數依賴: 在函數依賴的基礎上,該屬性(集)的任意真子集不能確定另一個屬性(單屬性必定完全函數依賴); (X,Y) >Z 並且X! >Z, Y! >Z 部分函數依賴: 在函數依賴的基礎上,該屬性(集)的某真子集能確定另一 ...
函數依賴:
通過某屬性(集)能確定另外一個屬性;
(X,Y)--->Z
完全函數依賴:
在函數依賴的基礎上,該屬性(集)的任意真子集不能確定另一個屬性(單屬性必定完全函數依賴);
部分函數依賴:
在函數依賴的基礎上,該屬性(集)的某真子集能確定另一個屬性;
(X,Y)--->Z 並且X--->Z或者 Y--->Z
傳遞函數依賴:
假如 Z 函數依賴於 Y,且 Y 函數依賴於 X (『Y 不包含於 X,且 X 不函數依賴於 Y』這個前提),那麼我們就稱 Z 傳遞函數依賴於 X ;
(X,Y)--->Z , Z--->A, 則A傳遞函數依賴於(X,Y)
碼:
設 K 為某表中的一個屬性或屬性組,若除 K 之外的所有屬性都完全函數依賴於 K(這個“完全”不要漏了),那麼我們稱 K 為候選碼,簡稱為碼。
非主屬性:不包含在任何一個碼中的屬性。(否則為主屬性)
範式(NF):
第一範式(1NF):
指資料庫表的每一列(即每個屬性)都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重覆的屬性。簡而言之,第一範式就是無重覆的列。
第二範式(2NF):
在關係理論中的嚴格定義我這裡就不多介紹了(因為涉及到的鋪墊比較多),只需要瞭解2NF對1NF進行了哪些改進即可。其改進是,2NF在1NF的基礎之上,消除了非主屬性對於碼的部分函數依賴。
第三範式(3NF):
3NF在2NF的基礎之上,消除了非主屬性對於碼的傳遞函數依賴。也就是說, 如果存在非主屬性對於碼的傳遞函數依賴,則不符合3NF的要求。
BCNF範式:
在 3NF 的基礎上消除主屬性