關於資料庫設計的第一、二、三正規化
第一正規化
符合1NF的關係中的每個屬性都不可再分
第二正規化
2NF在1NF的基礎之上,消除了非主屬性對於碼的部分函式依賴
碼
關係中的某個屬性或者某幾個屬性的組合,用於區分每個元組(可以把“元組”理解為一張表中的每條記錄,也就是每一行)
函式依賴
若在一張表中,在屬性(或屬性組)X的值確定的情況下,必定能確定屬性Y的值,那麼就可以說Y函式依賴於X,寫作 X → Y
-
完全函式依賴
在一張表中,若 X → Y,且對於 X 的任何一個真子集(假如屬性組 X 包含超過一個屬性的話),X ` → Y 不成立,那麼我們稱 Y 對於 X 完全函式依賴,記作 X F→ Y
-
部分函式依賴
假如 Y 函式依賴於 X,但同時 Y 並不完全函式依賴於 X,那麼我們就稱 Y 部分函式依賴於 X,記作 X P→ Y
-
傳遞函式依賴
假如 Z 函式依賴於 Y,且 Y 函式依賴於 X (嚴格來說還有一個X 不包含於Y,且 Y 不函式依賴於Z的前提條件),那麼我們就稱 Z 傳遞函式依賴於 X ,記作 X T→ Z
非主屬性
包含在任何一個碼中的屬性稱為主屬性,非主屬性相反
綜上所述,檢測是否符合第二正規化的步驟為:
第一步:找出資料表中所有的碼。
第二步:根據第一步所得到的碼,找出所有的主屬性。
第三步:資料表中,除去所有的主屬性,剩下的就都是非主屬性了。
第四步:檢視是否存在非主屬性對碼的部分函式依賴。
第三正規化
3NF在2NF的基礎之上,消除了非主屬性對於碼的傳遞函式依賴
BCNF正規化
在3NF的基礎上消除主屬性對於碼的部分與傳遞函式依賴