簡單易懂的資料庫三正規化理解

2021-07-14 07:11:02 字數 1231 閱讀 9697

原因:

對於三正規化總是學了又忘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 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即...