mysql三正規化和反三正規化 資料庫三正規化和反三正規化

2021-10-18 09:49:51 字數 855 閱讀 2346

要說資料庫什麼最抽象,我覺得就是這個三正規化,不是很好理解,但是表在設計的時候又必須要知道這麼乙個規則。

首先使用最簡潔的話說說這三正規化:

第一正規化(1nf:the first normal form):每一列不能再分割。

第二正規化(2nf:the second normal form):滿足1nf條件下,每一列非主鍵列要完全依賴主鍵,不能只依賴聯合主鍵中的一部分(因為主鍵可能是聯合主鍵,有多列的,必須所有欄位都用上 )

第三正規化(3nf:the third normal form):滿足2nf條件下,非主鍵的列不能依賴於非主鍵的列;

看到這三句話肯定不理解,於是,我們用圖來理解一下

1.第一正規化

簡單的來說就是不能建立下面這樣的表,可以看到位址這一列是可以分割的;

一般只要是關係型資料庫建立的表都會滿足第一正規化的。

2.第二正規化

看下面這個表,這裡聯合主鍵是(學號,科目),只有確定了這兩個值,才能確定其他的列;比如分數,如果只依賴學號,那麼當學號為1的時候,分數有兩個,不能唯一確定;如果只依賴科目,當科目為語文的時候,分數也對應有兩個;

注意上面這個表中的姓名,它只是依賴學號的,根據學號就可以找對唯一對應的姓名,所以這時非主鍵列 「姓名」  部分依賴於聯合主鍵「學號,科目」,不是完全依賴,所以不滿足第二正規化;

我們需要將姓名這一列給提取出來,下表所示,對於完全依賴主鍵的放在一張表中,展示依賴一部分主鍵的放在另外一張表中;

MySQL三正規化與反三正規化

目錄反三正規化 對於三正規化和反三正規化的選擇 參考cs notes 資料庫 資料庫系統原理.html 正規化 屬性不可再分 即表中的字段不能再拆分 例 乙個name屬性可以分為firstname屬性和lastname屬性,則不符合第一正規化。表中有鍵碼,非主屬性完全依賴鍵碼 即表中的非主屬性完全依...

MySQL三大正規化和反正規化

1.第一正規化 確保資料表中每列 字段 的原子性。如果資料表中每個欄位都是不可再分的最小資料單元,則滿足第一正規化。比如位址可再分 例如 user使用者表,包含欄位id,username,password 2.第二正規化 在第一正規化的基礎上更進一步,目標是確保表中的每列都和主鍵相關。如果乙個關係滿...

MySQL三大正規化和反正規化

1.第一正規化確保資料表中每列 字段 的原子性。如果資料表中每個欄位都是不可再分的最小資料單元,則滿足第一正規化。例如 user使用者表,包含欄位id,username,password 2.第二正規化在第一正規化的基礎上更進一步,目標是確保表中的每列都和主鍵相關。如果乙個關係滿足第一正規化,並且除...