1. 程式人生 > >資料三正規化 及 BCNF解釋

資料三正規化 及 BCNF解釋

大家在資料設計中經常接觸到正規化設計,那到底什麼設計是合乎正規化的,在解釋正規化之前,先來講解下正規化是什麼?

正規化: 字面意思就是規範,在資料庫設計中指資料表各個欄位間的關聯關係。

第一正規化:課本上的解釋是欄位不可拆分的最小單元。

這個很簡單,基本上現在主流的RDMS,你設計出來的資料表想不符合第一正規化都比較難,手動狗頭。簡單舉個例子來說 考試成績 這個資訊設計成 考試成績一個欄位就不滿足第一正規化,設計成考試科目+分數就是符合第一正規化的。不滿足第一正規化會帶來插入異常,你想想語文50分怎麼插入到一個欄位裡?

第二正規化:消除非主屬性對主屬性的部分依賴

如果你的主屬性是一個欄位,那沒什麼說的,肯定是滿足第二正規化的。但是主屬性是多個欄位呢?那就看每一個非主屬性是否完全依賴主屬性組,如果只依賴主屬性組中的部分屬性,該情況就不符合第二正規化。第二正規化:消除非主屬性對主屬性的部分依賴 。

第三正規化:消除非主屬性對主屬性的傳遞依賴。

很好理解,就是非主屬性必須直接依賴主屬性,不能通過一個非主屬性來傳遞一下。

BCNF:消除主屬性之間的部分依賴於傳遞依賴。與非主屬性無關。