關於資料庫設計的第一、二、三正規化

flypie發表於2016-12-27

關於資料庫設計的第一、二、三正規化

第一正規化

符合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的基礎上消除主屬性對於碼的部分與傳遞函式依賴

相關文章