原因:
對於三正規化總是學了又忘o(︶︿︶)o ,所以在這做記錄,同時也希望幫助其他同學。
說明:
以下解釋沒有官方的解釋和說明,如果錯誤請大家指正,多謝。
正文:
注意:藍色字型為主鍵。
1.第一正規化:原子性。化學中的原子是物質的最小不能分割的單位,在這也同樣是這個意思。舉例
uname address
小明 xx省yy市
而實際查詢時,我們只需要小明是位於哪個市,這時我們可以把address取出來再進行分割, 但這種處理方法不能解決根本的問題。因此需重新設計:
uname province city
小明 xx yy
2.第二正規化:完全依賴主鍵。這個含義稍微難理解。
2.1:先理解依賴二字的含義。舉例:
tel(主鍵,**號碼) name(姓名)
在這個表中,主鍵是**號碼,屬性有姓名,而我們姓名是不可能由tel來決定的。所以 這個表的設計是毫無意義的,這裡叫不依賴。
2.2:再理解部分依賴。口語就是:依賴其中的一部分。這裡我們要引入聯合主鍵。舉例:
身份證 學號 生日
idsno birthday
xx1003yy 49 10月3號
而我們的生日只是由聯合主鍵中的身份證這個主鍵決定的,和學號沒有關係。因此,生日 只是由聯合主鍵的一部分決定的,這就叫做部分依賴。
2.3:完全依賴。。主鍵完全決定非主鍵屬性,當我們只把id設為主鍵,而sno為非主鍵時,生日就完全依賴id了。
3.第三正規化:消除傳遞依賴。文字說明;a決定b,b決定c,得到a可以決定c,這就叫做傳遞性。第三正規化要消除這種關係。
舉例:
學號決定學院,學院決定了宿舍的位置,這時,學號間接的決定了宿舍的位置
學號 學院 宿舍位置
sno dept location
0113449 軟體 寧廬
解決方法:拆成兩個表
sno dept(外來鍵)
dept location
4.如果不遵循正規化,會造成修改異常,刪除異常,插入異常等問題,具體解釋可見這個博友的文章:
資料庫三正規化的簡單理解
資料庫正規化 正規化的級別 設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴斯 科德正規化 bcnf ...
資料庫設計三大正規化詳解(簡單易懂)
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...
資料庫三大正規化簡單理解
資料庫設計當中三正規化是經常遇到的,如果實際專案資料庫設計中能達到第三正規化基本也就滿足要求了,那麼如何快速有效的理解三個正規化,同時應用於實際專案中去呢?首先看看標準定義的三個正規化 第一正規化 1nf 所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即...