1. 程式人生 > >三大範式

三大範式

相關 種類 河南省 範式 原子 第三範式 tno 函數依賴 聯合

分析:

數據庫設計應遵循三大範式分別為:

第一範式:確保表中每列的原子性(不可拆分);

第二範式:確保表中每列與主鍵相關,而不能只與主鍵的某部分相關(主要針對聯合主鍵),主鍵列與非主鍵列遵循完全函數依賴關系(完全依賴);

第三範式:非主鍵列之間沒有傳遞函數依賴關系(消除傳遞依賴);

詳述:

第一範式

需求描述:數據庫系統中需要一個實體表,該表用來存儲用戶信息,其中“地址”這個屬性,要求查詢到省份、城市和詳細地址。

例子:信息如下:

姓名:張紅欣;性別:男; 年齡:26歲;年齡:26歲; 聯系電話:0378-23459876; 省份:河南省; 城市:開封; 詳細地址:朝陽區新華路23號;

姓名:王艷;性別:女;年齡:25;聯系電話:021-2348768;省份:貴州省;城市:貴陽市;詳細地址:南明區南明區獅峰路6號;

姓名:汪梅;性別:女;年齡:21;聯系電話:0571-3876450;省份:浙江省;城市:杭州市;詳細地址:濱江區濱康路352號;

針對以上需求,下面分別設計兩種類型表格:

第一種表設計:不滿足第一範式

tb_userInfo

技術分享

分析:為什麽不滿足第一範式?因為region列不具有原子性,能拆分成省份、市和具體地址。

第二種表設計:滿足第一範式

tb_userInfo

技術分享

第二範式

需求描述:設計一個訂單信息表,訂單有多種商品,將訂單編號和商品編號作為聯合主鍵。

第一種表設計:不滿足第二範式

技術分享

分析:訂單編號和商品編號作為聯合主鍵,由於商品名稱,單位,價格這幾列只與商品編號有關,與訂單

編號無關,因此與主鍵(聯合主鍵)無關,違反範式第二原則。

第二種表設計:滿足第二範式

技術分享

分析:把第一種設計表進行拆分,把商品信息分離到另一個表中,把訂單項目表也分離到另一個表中。

第三範式

技術分享

分析:在表中,一個UserID能確定一個UserLevel。這樣,UserID依賴於StudentNo和CardNo,而UserLevel又依

賴於UserID,這就導致了傳遞依賴,3NF就是消除這種依賴。

將以上表格拆分成如下表格,以滿足第三範式:

技術分享

技術分享

三大範式