1 概述
一般地,在進行資料庫設計時,應遵循三大原則,也就是我們通常說的三大正規化,即第一正規化要求確保表中每列的原子性,也就是不可拆分;第二正規化要求確保表中每列與主鍵相關,而不能只與主鍵的某部分相關(主要針對聯合主鍵),主鍵列與非主鍵列遵循完全函式依賴關係,也就是完全依賴;第三正規化確保主鍵列之間沒有傳遞函式依賴關係,也就是消除傳遞依賴。
本文將基於三大正規化原則,結合具體的例項做簡要分析,難度係數:基礎。
2 第一正規化
2.1 例子引入
根據如下場景設計出兩種資料表,請分析兩種資料表的合理性。
問題:需求描述:資料庫系統中需要乙個實體表,該錶用來儲存使用者資訊,其中「位址」這個屬性,要求查詢到省份、城市和詳細位址。
2 3 具體例子:
4 姓名:張紅欣; 性別:男; 年齡:26歲; 聯絡**:0378-23459876;省份:河南省;城市:開封; 詳細位址:朝陽區新華路23號;
5 姓名:王艷; 性別:女; 年齡:25歲; 聯絡**:021-2348768; 省份:貴州省;城市:貴陽市;詳細位址:南明區南明區獅峰路6號;
6 姓名:汪梅; 性別:女; 年齡:21歲; 聯絡**:0571-3876450; 省份:浙江省;城市:杭州市;詳細位址:濱江區濱康路352號;
第一種表設計
第二種表設計
2.2 分析
第一種表設計不滿足第一正規化,為什麼不滿足第一正規化?因為region列不具有原子性,能拆分成省份、市和具體位址;
3 第二正規化
3.1 例子引入
根據如下場景設計出兩種資料表,請分析兩種資料表的合理性。
需求描述:設計乙個訂單信qkvoeght息表,訂單有多種商品,將訂單編號和商品編號作為聯合主鍵。
第一種表設計
第二種表設計
3.2 分析
第一種表設計不滿足第二正規化,訂單編號和商品編號作為聯合主鍵,由於商品名稱,單位,**這幾列只與商品編號有關,與訂單編號無關,因此與主鍵(聯合主鍵)無關,違反正規化第二原則;
第二種表設計滿足第二正規化,把第一種設計表進行拆分,把商品資訊分離到另乙個表中,把訂單專案表也分離到另乙個表中。
4 第三正規化
4.1 例子引入
根據如下場景設計出兩種資料表,請分析兩種資料表的合理性。
需要在資料庫中儲存如下資訊:
qkvoeght; 學生編號;學生卡號;使用者id號;操作員級別;操作日期;操作時間;
第一種表設計
第二種表設計
4.2 分析
第一種表設計不滿足第三正規化,在表中,乙個userid能確定乙個userlevel。這樣,userid依賴於studentno和cardno,而userlevel又依賴於userid,這就導致了傳遞依賴,3nf就是消除這種依賴。
第二種表設計滿足第三正規化,將第一種**拆分成成兩個**。
5 參考文獻
程式設計客棧tml#undefined
6 版權
SqlServer系列 資料庫三大正規化
1 概述 一般地,在進行資料庫設計時,應遵循三大原則,也就是我們通常說的三大正規化,即第一正規化要求確保表中每列的原子性,也就是不可拆分 第二正規化要求確保表中每列與主鍵相關,而不能只與主鍵的某部分相關 主要針對聯合主鍵 主鍵列與非主鍵列遵循完全函式依賴關係,也就是完全依賴 第三正規化確保主鍵列之間...
SQL server 之資料庫大彙總
sql 資料庫的基本知識,從前邊的每一章都進行了總結,可是整個框架的總結到今天才開始完工,下邊從我想的思路對其進行了總結聯絡。資料庫是將現實世界中的實體 entity 用聯絡 relationship 關聯起來的整體 也成關聯式資料庫 其中最主要的物件就是表 table 另外檢視 view 是為了我...
MySQL學習筆記 十一 資料庫設計的三大正規化
為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。第一正規化是最基本的正規化。如果資料庫表中的所有字段值都是不可分解的原子值,就說明該資料庫表滿足了第一...