1.概述
一般地,在進行資料庫設計時,應遵循三大原則,也就是我們通常說的三大正規化,即第一正規化要求確保表中每列的原子性,也就是不可拆分;第二正規化要求確保表中每列與主鍵相關,而不能只與主鍵的某部分相關(主要針對聯合主鍵),主鍵列與非主鍵列遵循完全函式依賴關係,也就是完全依賴;
第三正規化確保主鍵列之間沒有傳遞函式依賴關係,也就是
消除傳遞依賴。
2.第一正規化
2.1 例子引入
根據如下場景設計出兩種資料表,請分析兩種資料表的合理性。
問題:需求描述:資料庫系統中需要乙個實體表,該錶用來儲存使用者資訊,其中「位址」這個屬性,要求查詢到省份、城市和詳細位址。
具體例子如下:
第一種表設計
第二種表設計
2.2 分析
第一種表設計不滿足第一正規化,為什麼不滿足第一正規化?因為region列不具有原子性,能拆分成省份、市和具體位址;
3
第二正規化
3.1 例子引入
根據如下場景設計出兩種資料表,請分析兩種資料表的合理性。
1 需求描述:設計乙個訂單資訊表,訂單有多種商品,將訂單編號和商品編號作為聯合主鍵。
第一種表設計
第二種表設計
3.2 分析
第一種表設計不滿足第二正規化 ,訂單編號和商品編號作為聯合主鍵,由於商品名稱,單位,**這幾列只與商品編號有關,與訂單編號無關,因此與主鍵(聯合主鍵)無關,違反正規化第二原則;
第二種表設計滿足第二正規化,把第一種設計表進行拆分,把商品資訊分離到另乙個表中,把訂單專案表也分離到另乙個表中。
4
第三正規化
4.1 例子引入
根據如下場景設計出兩種資料表,請分析兩種資料表的合理性。
1需要在資料庫中儲存如下資訊:
2 學生編號;學生卡號;使用者id號;操作員級別;操作日期;操作時間;
第一種表設計
第二種表設計
4.2 分析
第一種表設計不滿足第三正規化,在表中,乙個userid能確定乙個userlevel。這樣,userid依賴於studentno和cardno,而userlevel又依賴於userid,這就導致了傳遞依賴,3nf就是消除這種依賴。
第二種表設計滿足第三正規化,
將第一種**拆分成成兩個**。
資料庫正規化 三正規化
所謂第一正規化 1nf 是指在關係模型中,對域新增的乙個規範要求,所有的域都應該是原子性的,即資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項。即實體中的某個屬性有多個值時,必須拆分為不同的屬性。在符合第一正規化 1nf 表中的每個域值只能是實體的乙個屬性或乙個屬性的...
資料庫三正規化
資料庫的三正規化 1n 關係r中的屬性都是不可分割的項.2n 在1n的基礎上,每個非主屬性完全函式依賴於碼.3n 在2n的基礎上,每乙個非主屬性既不部分依賴於碼也不傳遞依賴於碼.1n 消除非主屬性對碼的部分函式依賴 2n 消除非主屬性對碼的傳遞函式依賴 3n 消除主屬性對碼的部分和傳遞函式依賴 bc...
資料庫三正規化
1 第一正規化 1nf 無重複的列 所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義乙個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化 ...