溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SqlServer 數(shù)據(jù)庫 三大  范式

發(fā)布時(shí)間:2020-09-20 15:39:35 來源:腳本之家 閱讀:140 作者:Alan_beijing 欄目:數(shù)據(jù)庫

1 概述

一般地,在進(jìn)行數(shù)據(jù)庫設(shè)計(jì)時(shí),應(yīng)遵循三大原則,也就是我們通常說的三大范式,即第一范式要求確保表中每列的原子性,也就是不可拆分;第二范式要求確保表中每列與主鍵相關(guān),而不能只與主鍵的某部分相關(guān)(主要針對(duì)聯(lián)合主鍵),主鍵列與非主鍵列遵循完全函數(shù)依賴關(guān)系,也就是完全依賴;第三范式確保主鍵列之間沒有傳遞函數(shù)依賴關(guān)系,也就是消除傳遞依賴。

本文將基于三大范式原則,結(jié)合具體的實(shí)例做簡要分析,難度系數(shù):基礎(chǔ)。

2 第一范式

2.1 例子引入

根據(jù)如下場(chǎng)景設(shè)計(jì)出兩種數(shù)據(jù)表,請(qǐng)分析兩種數(shù)據(jù)表的合理性。

問題:需求描述:數(shù)據(jù)庫系統(tǒng)中需要一個(gè)實(shí)體表,該表用來存儲(chǔ)用戶信息,其中“地址”這個(gè)屬性,要求查詢到省份、城市和詳細(xì)地址。
2
3 具體例子:
4 姓名:張紅欣;  性別:男; 年齡:26歲; 聯(lián)系電話:0378-23459876;省份:河南省;城市:開封;  詳細(xì)地址:朝陽區(qū)新華路23號(hào);
5 姓名:王艷;    性別:女; 年齡:25歲; 聯(lián)系電話:021-2348768;  省份:貴州省;城市:貴陽市;詳細(xì)地址:南明區(qū)南明區(qū)獅峰路6號(hào);
6 姓名:汪梅;    性別:女; 年齡:21歲; 聯(lián)系電話:0571-3876450; 省份:浙江省;城市:杭州市;詳細(xì)地址:濱江區(qū)濱康路352號(hào);

第一種表設(shè)計(jì)

SqlServer 數(shù)據(jù)庫 三大  范式

第二種表設(shè)計(jì)

SqlServer 數(shù)據(jù)庫 三大  范式

2.2 分析

第一種表設(shè)計(jì)不滿足第一范式,為什么不滿足第一范式?因?yàn)閞egion列不具有原子性,能拆分成省份、市和具體地址;

3 第二范式

3.1 例子引入

根據(jù)如下場(chǎng)景設(shè)計(jì)出兩種數(shù)據(jù)表,請(qǐng)分析兩種數(shù)據(jù)表的合理性。

需求描述:設(shè)計(jì)一個(gè)訂單信息表,訂單有多種商品,將訂單編號(hào)和商品編號(hào)作為聯(lián)合主鍵。

第一種表設(shè)計(jì)

SqlServer 數(shù)據(jù)庫 三大  范式

第二種表設(shè)計(jì)

SqlServer 數(shù)據(jù)庫 三大  范式

3.2 分析

第一種表設(shè)計(jì)不滿足第二范式,訂單編號(hào)和商品編號(hào)作為聯(lián)合主鍵,由于商品名稱,單位,價(jià)格這幾列只與商品編號(hào)有關(guān),與訂單編號(hào)無關(guān),因此與主鍵(聯(lián)合主鍵)無關(guān),違反范式第二原則;

第二種表設(shè)計(jì)滿足第二范式,把第一種設(shè)計(jì)表進(jìn)行拆分,把商品信息分離到另一個(gè)表中,把訂單項(xiàng)目表也分離到另一個(gè)表中。

4 第三范式

4.1 例子引入

根據(jù)如下場(chǎng)景設(shè)計(jì)出兩種數(shù)據(jù)表,請(qǐng)分析兩種數(shù)據(jù)表的合理性。

需要在數(shù)據(jù)庫中存儲(chǔ)如下信息:
    學(xué)生編號(hào);學(xué)生卡號(hào);用戶ID號(hào);操作員級(jí)別;操作日期;操作時(shí)間;

第一種表設(shè)計(jì)

SqlServer 數(shù)據(jù)庫 三大  范式

第二種表設(shè)計(jì)

SqlServer 數(shù)據(jù)庫 三大  范式

SqlServer 數(shù)據(jù)庫 三大  范式

4.2 分析

第一種表設(shè)計(jì)不滿足第三范式,在表中,一個(gè)UserID能確定一個(gè)UserLevel。這樣,UserID依賴于StudentNo和CardNo,而UserLevel又依賴于UserID,這就導(dǎo)致了傳遞依賴,3NF就是消除這種依賴。

第二種表設(shè)計(jì)滿足第三范式,將第一種表格拆分成成兩個(gè)表格。

5 參考文獻(xiàn)

【01】http://www.cnblogs.com/springside-example/archive/2011/10/06/2530207.html

【02】http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html#undefined

6 版權(quán)

感謝您的閱讀,若有不足之處,歡迎指教,共同學(xué)習(xí)、共同進(jìn)步。博主網(wǎng)址:http://www.cnblogs.com/wangjiming/。極少部分文章利用讀書、參考、引用、抄襲、復(fù)制和粘貼等多種方式整合而成的,大部分為原創(chuàng)。如您喜歡,麻煩推薦一下;如您有新想法,歡迎提出,郵箱:2016177728@qq.com。可以轉(zhuǎn)載該博客,但必須著名博客來源。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI