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

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

分析
第一種表設(shè)計(jì)不滿足第一范式,為什么不滿足第一范式?因?yàn)閞egion列不具有原子性,能拆分成省份、市和具體地址;
第二范式
例子引入
需求描述:設(shè)計(jì)一個(gè)訂單信息表,訂單有多種商品,將訂單編號(hào)和商品編號(hào)作為聯(lián)合主鍵。
第一種表設(shè)計(jì)

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

分析
第一種表設(shè)計(jì)不滿足第二范式 ,訂單編號(hào)和商品編號(hào)作為聯(lián)合主鍵,由于商品名稱(chēng),單位,價(jià)格這幾列只與商品編號(hào)有關(guān),與訂單編號(hào)無(wú)關(guān),因此與主鍵(聯(lián)合主鍵)無(wú)關(guān),違反范式第二原則;
第二種表設(shè)計(jì)滿足第二范式,把第一種設(shè)計(jì)表進(jìn)行拆分,把商品信息分離到另一個(gè)表中,把訂單項(xiàng)目表也分離到另一個(gè)表中。
第三范式
例子引入
需求描述:
1 需要在數(shù)據(jù)庫(kù)中存儲(chǔ)如下信息:
2 學(xué)生編號(hào);學(xué)生卡號(hào);用戶ID號(hào);操作員級(jí)別;操作日期;操作時(shí)間;
第一種表設(shè)計(jì)

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


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