說(shuō)到軟件開(kāi)發(fā) 就不能不說(shuō)數(shù)據(jù)庫(kù) 說(shuō)到數(shù)據(jù)庫(kù) 就不能不說(shuō)三范式 其實(shí)數(shù)據(jù)庫(kù)范式一共有六個(gè) 除了第一 二 三范式以
外還有第四 第五范式和一個(gè)BC范式? 在此我們只討論三范式 有興趣的朋友可以自己找一些專(zhuān)業(yè)的書(shū)籍進(jìn)一步學(xué)習(xí)
第一范式(1NF)
第一范式是指數(shù)據(jù)庫(kù)表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng) 同一列中不能有多個(gè)值 即實(shí)體中的某個(gè)屬性不能有多個(gè)
值或者不能有重復(fù)的屬性?
這就是第一范式的基本概念 什么意思呢 舉個(gè)例子吧 在一個(gè)表里有一個(gè)“電話(huà)”字段 其值既有手機(jī)號(hào) 又有座機(jī)號(hào) 那么
這樣就不符合
第一范式的要求了 此時(shí)應(yīng)該將“電話(huà)”拆分為“手機(jī)”跟“座機(jī)” 這樣一來(lái)就變成了一個(gè)符合第一范式的數(shù)據(jù)表了
總結(jié):字段不能再分
第二范式(2NF)
第二范式是在第一范式的基礎(chǔ)上建立起來(lái)的 即滿(mǎn)足第二范式必須先滿(mǎn)足第一范式 第二范式要求數(shù)據(jù)庫(kù)表中的每個(gè)
實(shí)例或行必須可以被惟一的區(qū)分 為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列 以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí)
要求實(shí)體的屬性完全依賴(lài)于主鍵 要討論一個(gè)表符不符合第二范式的前提是 這個(gè)表的主鍵為組合主鍵 如果不是組合主
鍵那就談不上符不符合第二范式了
總結(jié):不能部分依賴(lài),就是說(shuō)當(dāng)一個(gè)表有組合主鍵時(shí),其他非主鍵的字段必須完全依賴(lài)于主鍵。
第三范式(3NF)
第三范式是要符合第二范式 第三范式就是一個(gè)數(shù)據(jù)表中不能存在其他數(shù)據(jù)表中的非主鍵字段 也就是說(shuō)如果存在其他
表中的字段 就一定得是那個(gè)表的主鍵
假如一個(gè)表有有a b c三個(gè)字段 a—>b b—>c 那么c與a就是傳遞依賴(lài) 這樣就不符合第三范式 而且不管a能不能直接確
定c都屬于傳遞依賴(lài) 所以只有b跟c不依賴(lài)于a以外的任何字段才符合第三范式
總結(jié):不可以有傳遞依賴(lài),就是說(shuō)主鍵以外的字段必須依賴(lài)主鍵 而不能依賴(lài)其他字段
以上就是在下對(duì)三范式的粗淺理解 有不妥之處還請(qǐng)大家多多指教
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

