還說七期的師哥師姐給我們講課。當時說到了資料庫的三正規化理論,聽得時候聽明白了,課下自己總結了一下。
其實,資料庫的正規化理論無非是為了節省資源,就是在保證資料完整性的前提下最大程度上減小資料的冗餘程度。而資料庫三正規化也是前人經過多次的經驗總結出來的,覺得資料庫在這樣的設計規則下會在資料完整性和占用資料資源兩者之間取得乙個較好的平衡。
下面通過例子來認識一下資料庫三正規化理論:
第一正規化:
第一正規化是指資料庫表的每一列都是不可分割的基本資料項,同一列的中不能喲多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。第一正規化包括下面的指導性原則:
1、 陣列的每個屬性只能包含乙個值
2、 關係中的每個陣列必須包含相同數量的值
3、 關係中的每個陣列一定不能相同
例如下面的這個關係就是不符合第一正規化的
學生姓名
性別入學時間張三女
2023年李四男
2023年
趙武王六
男2023年江濤女
2023年
大家看上邊的圖是不是覺得很彆扭呢,對,第三行裡面有兩個學生姓名。不必擔心,因為我們在sql server中建表的時候絕對不會出現這種情況的,所以你大可不必擔心自己設計出來的表不符合第一正規化。那麼正確的表的關係應該是下面這樣的:
學生姓名
性別入學時間張三女
2023年李四男
2023年趙武男
2023年王六男
2023年江濤女
2023年
第二正規化:
如果乙個資料表已經滿足第一正規化,而且該資料表中的任何乙個非主鍵欄位的數值都依賴於該資料表的主鍵字段,那麼該資料表滿足第二正規化。
例如下面的表:
專案編號
名稱負責人
負責人部門
專案1張濤
專案部專案2
王明建材部
專案3張紅
業務部我們乙個乙個的來看,專案編號顯然是主鍵字段,根據專案編號可以推出專案名稱,可以推出專案負責人,但是根據專案編號不能推出專案負責人部門,所以上面的表是不符合第二正規化的。接下來我們把上面的表拆成兩個符合第二正規化的表
專案編號
名稱負責人
1專案1張濤2
專案2王明
3專案3
張紅負責人
負責人部門
張濤專案部
王明建材部
張紅業務部
第三正規化
如果乙個資料表已經滿足第三正規化,而且該資料表中的任何兩個非主關鍵字段的資料值之間不存在函式信賴關係,那麼該資料表滿足第三正規化,即3nf。
大家可以看下面的**
編號姓名
性別工資
獎金王鵬男張紅
女假如公司有這樣的規定:工資的百分之十作為獎金發放給員工,那麼上面的表的設計就不符合第三正規化了。
從第三正規化的定義我們可以看出,根據工資可以推出獎金的多少,所以工資和獎金之間是存在函式信賴關係的。但是可能就有這樣的疑問了,我要是根據姓名還能推出性別呢,這怎麼辦呢?試想一下,如果沒有員工的基本資訊表你能根據姓名推出性別嗎?也就是說我們資料的根源資訊都不知道,你怎麼推出其他的資訊,也可以理解為上面的**就是我們剛剛說到的「根源資訊」。
我是這麼理解的,不知道大家對上面的理解有什麼疑問,請多多指教!
SQL的正規化理論
還說七期的師哥師姐給我們講課。當時說到了資料庫的三正規化理論,聽得時候聽明白了,課下自己總結了一下。其實,資料庫的正規化理論無非是為了節省資源,就是在保證資料完整性的前提下最大程度上減小資料的冗餘程度。而資料庫三正規化也是前人經過多次的經驗總結出來的,覺得資料庫在這樣的設計規則下會在資料完整性和占用...
SQL的正規化理論
還說七期的師哥師姐給我們講課。當時說到了資料庫的三正規化理論,聽得時候聽明白了,課下自己總結了一下。其實,資料庫的正規化理論無非是為了節省資源,就是在保證資料完整性的前提下最大程度上減小資料的冗餘程度。而資料庫三正規化也是前人經過多次的經驗總結出來的,覺得資料庫在這樣的設計規則下會在資料完整性和占用...
資料庫之SQL(正規化理論)
一 什麼是正規化理論?關係模型原理的核心是 規範化 概念,規範化是把資料庫組織成在保持儲存資料完整性的同時最小化冗餘資料的結構的過程。正規化化的資料庫是符合關係模型規則的資料庫,通過把這些規則稱為正規化。二 關聯式資料庫中有幾種正規化?六種第一正規化 1nf 第二正規化 2nf 第三正規化 3nf ...