sqlserver 三大範式

SqlServer之數據庫三大範式

   

分析:html

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

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

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

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

   詳述:url

         第一範式spa

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

       例子:信息以下:3d

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

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

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

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

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

         tb_userInfo

       

          分析:爲何不知足第一範式?由於region列不具備原子性,能拆分紅省份、市和具體地址。

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

         tb_userInfo

      

         第二範式

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

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

        

           分析:訂單編號和商品編號做爲聯合主鍵,因爲商品名稱,單位,價格這幾列只與商品編號有關,與訂單

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

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

        

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

          第三範式

       

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

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

       將以上表格拆分紅以下表格,以知足第三範式:

      

      

相關文章
相關標籤/搜索