新聞中心
作者 | 磊哥

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)鹽城免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
來源 | Java面試真題解析(ID:aimianshi666)
轉(zhuǎn)載請(qǐng)聯(lián)系授權(quán)(微信ID:GG_Stone)
一、第一范式
第一范式規(guī)定表中的每個(gè)列都應(yīng)該是不可分割的最小單元。比如以下表中的 address 字段就不是不可分割的最小單元,如下圖所示:
其中 address 還可以拆分為國家和城市,如下圖所示:
這樣改造之后,上面的表就滿足第一范式了。
二、第二范式
第二范式是在滿足第一范式的基礎(chǔ)上,規(guī)定表中的非主鍵列不存在對(duì)主鍵的部分依賴,也就是說每張表只描述一件事情,比如以下訂單表就不滿足第二范式,它可以拆分為兩張獨(dú)立的表:訂單表和商品表。
1、不滿足第二范式的訂單表
PS:上面的表可拆分為兩張獨(dú)立的表:訂單表和商品表。
2、 滿足第二范式的表
訂單表:
商品表:
三、第三范式
第三范式是在滿足第一范式和第二范式的基礎(chǔ)上,規(guī)定表中的列不存在對(duì)非主鍵列的傳遞依賴。比如以下的訂單表中的顧客名稱就不符合第三范式,因?yàn)樗嬖诹藢?duì)非主鍵顧客編號(hào)的依賴,如下圖所示:
修改之后(符合第三范式)的表結(jié)構(gòu)如下:
總結(jié)
第一范式規(guī)定表中的每個(gè)列都應(yīng)該是不可分割的最小單元。第二范式是在滿足第一范式的基礎(chǔ)上,規(guī)定表中的非主鍵列不存在對(duì)主鍵的部分依賴。第三范式是在滿足第一范式和第二范式的基礎(chǔ)上,規(guī)定表中的列不存在對(duì)非主鍵列的傳遞依賴。使用數(shù)據(jù)庫三范式的優(yōu)勢(shì)是:表的結(jié)構(gòu)更簡單、優(yōu)雅,表的邏輯和條理性更強(qiáng),并且使用三范式可以很大程度的減少表中的冗余數(shù)據(jù),很好的節(jié)省了數(shù)據(jù)庫的存儲(chǔ)資源。
標(biāo)題名稱:面試突擊:什么是三范式?它有什么用?
文章出自:http://www.5511xx.com/article/cccsdgj.html


咨詢
建站咨詢
