懂得資料庫正規化,對於設計出乙個合理的資料庫有很大的幫助。本文根據自己對資料庫正規化的理解,結合具體的例子,嘗試著用通俗易懂的語言講明白資料庫三正規化。
如果資料庫中所有的字段值都是不可拆分的原子值,那麼就滿足第一正規化了。簡單點說就是不能有表中表,所以關聯式資料庫都滿足第一正規化。例子略。第二正規化是在第一正規化的基礎上,保證所有非主鍵都依賴於主鍵,對於聯合主鍵,非主鍵得完全依賴(也就是說不能依賴於聯合主鍵的一部分)。
比如要設計乙個訂單資訊表,因為訂單中可能會有多種商品,所以要將訂單編號和商品編號作為資料庫表的聯合主鍵,如下表所示。
訂單資訊表
這樣就產生乙個問題:這個表中是以訂單編號和商品編號作為聯合主鍵。這樣在該表中商品名稱、單位、商品**等資訊不與該錶的主鍵完全相關,而僅僅是與商品編號相關。所以在這裡違反了第二正規化的設計原則。
第三正規化是在滿足第二正規化的基礎上,保證所有非主鍵都跟主鍵直接相關而不是間接相關。如下表所示:
訂單編號
客戶編號
客戶姓名
****
0011
張三1234567
0022
王麻子1222222
0033
李四7654321
如上圖所示,一定訂單只有乙個客戶,把訂單編號作為主鍵,上表每個屬性都依賴於訂單編號,依賴的意思是說訂單編號相等時,其他屬性也得一樣。那麼就有定單編號確定客戶編號,而客戶編號又可以確定客戶姓名,這就產生了乙個傳遞關係,所以不滿足三正規化。要滿足三正規化,應該拆分為兩個表,乙個是訂單資訊表,乙個是客戶資訊表。一般我們設計資料庫中得滿足第三正規化。
談笑間秒懂資料庫
字數 1200 小心在剛入門時向別人解釋說它是用來儲存資料的,但後來才知道,這是錯的理解,小心表示很尷尬。有鑑於此,小心希望通過以下的介紹,能讓小白對資料庫有個簡單形象的理解,即使不如科學那麼嚴謹。小心認為,新手入門資料庫,難點不在於具體怎麼用,而在於一開始你對他的理解。你可以不斷練習來達到熟練的操...
資料庫正規化 三正規化
所謂第一正規化 1nf 是指在關係模型中,對域新增的乙個規範要求,所有的域都應該是原子性的,即資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項。即實體中的某個屬性有多個值時,必須拆分為不同的屬性。在符合第一正規化 1nf 表中的每個域值只能是實體的乙個屬性或乙個屬性的...
資料庫三正規化
資料庫的三正規化 1n 關係r中的屬性都是不可分割的項.2n 在1n的基礎上,每個非主屬性完全函式依賴於碼.3n 在2n的基礎上,每乙個非主屬性既不部分依賴於碼也不傳遞依賴於碼.1n 消除非主屬性對碼的部分函式依賴 2n 消除非主屬性對碼的傳遞函式依賴 3n 消除主屬性對碼的部分和傳遞函式依賴 bc...