最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

后端MySQL數(shù)據(jù)庫四大范式詳細(xì)解析

 更新時(shí)間:2025年12月04日 10:55:26   作者:柯南二號(hào)  
數(shù)據(jù)庫的設(shè)計(jì)范式是數(shù)據(jù)庫設(shè)計(jì)所需要滿足的規(guī)范,滿足這些規(guī)范的數(shù)據(jù)庫是簡潔的、結(jié)構(gòu)明晰的,這篇文章主要介紹了后端MySQL數(shù)據(jù)庫四大范式的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

梳理一下 MySQL(或關(guān)系型數(shù)據(jù)庫)中的第一、二、三、四范式,這是數(shù)據(jù)庫設(shè)計(jì)中非常重要的規(guī)范化理論。

第一范式 (1NF:First Normal Form)

定義:字段具有原子性,不可再分。

  • 數(shù)據(jù)表中每一列都必須是不可分割的最小數(shù)據(jù)單元。

  • 每一行都應(yīng)該是唯一的(通常通過主鍵來保證)。

? 舉例:

不符合 1NF:

學(xué)生表
學(xué)號(hào)   姓名   聯(lián)系方式
1     張三   1380000, 1391111

問題:聯(lián)系方式有多個(gè)值,違反原子性。

符合 1NF:

學(xué)生表
學(xué)號(hào)   姓名   聯(lián)系方式
1     張三   1380000
1     張三   1391111

第二范式 (2NF:Second Normal Form)

定義:在 1NF 的基礎(chǔ)上,要求每個(gè)非主屬性完全依賴于主鍵,不能只依賴主鍵的一部分。

  • 適用于 聯(lián)合主鍵 的情況。

  • 消除部分依賴

? 舉例:

不符合 2NF:

選課表
學(xué)號(hào)+課程號(hào) (聯(lián)合主鍵)   姓名   成績
1+001                  張三   95

問題:姓名只依賴學(xué)號(hào),而不是依賴于 (學(xué)號(hào)+課程號(hào)) 這個(gè)整體主鍵。

符合 2NF(拆表):

學(xué)生表
學(xué)號(hào)   姓名

選課表
學(xué)號(hào)   課程號(hào)   成績

第三范式 (3NF:Third Normal Form)

定義:在 2NF 基礎(chǔ)上,非主屬性不依賴于其他非主屬性(消除傳遞依賴)。

  • 屬性不能依賴于主鍵之外的屬性。

? 舉例:

不符合 3NF:

學(xué)生表
學(xué)號(hào)   姓名   系編號(hào)   系名稱

問題:系名稱依賴于系編號(hào),而系編號(hào)又依賴學(xué)號(hào)(學(xué)號(hào) → 系編號(hào) → 系名稱,產(chǎn)生傳遞依賴)。

符合 3NF(拆表):

學(xué)生表
學(xué)號(hào)   姓名   系編號(hào)

系別表
系編號(hào)   系名稱

第四范式 (4NF:Fourth Normal Form)

定義:在 3NF 基礎(chǔ)上,要求多值依賴消除。

  • 一張表中不應(yīng)包含兩個(gè)或多個(gè)相互獨(dú)立的多對(duì)多關(guān)系。

? 舉例:

不符合 4NF:

學(xué)生表
學(xué)號(hào)   愛好       擅長課程
1     足球       數(shù)學(xué)
1     足球       英語
1     籃球       數(shù)學(xué)
1     籃球       英語

問題:愛好與擅長課程之間是獨(dú)立的多值依賴,導(dǎo)致大量冗余。

符合 4NF(拆表):

學(xué)生_愛好表
學(xué)號(hào)   愛好

學(xué)生_課程表
學(xué)號(hào)   擅長課程

總結(jié)

  • 1NF:字段不可再分(原子性)

  • 2NF:非主屬性完全依賴主鍵(消除部分依賴)

  • 3NF:非主屬性不依賴于其他非主屬性(消除傳遞依賴)

  • 4NF:不允許一個(gè)表里有多個(gè)獨(dú)立的多值依賴

?? 實(shí)際開發(fā)中:

  • 3NF 已經(jīng)能滿足大部分場景;

  • 4NF 更偏學(xué)術(shù),業(yè)務(wù)里一般用到 3NF + 適當(dāng)?shù)姆匆?guī)范化(為了性能)。

?? 那我?guī)湍阏硪粋€(gè) 1NF ~ 4NF 對(duì)比表,方便快速理解和記憶:

數(shù)據(jù)庫范式對(duì)比表

范式要求典型問題示例(不符合)示例(符合)
第一范式 (1NF)字段必須原子化,不可再分字段中有多個(gè)值,違反原子性聯(lián)系方式: 1380000, 1391111每條記錄一條聯(lián)系方式
第二范式 (2NF)在 1NF 基礎(chǔ)上,非主屬性必須完全依賴主鍵,不能部分依賴聯(lián)合主鍵時(shí),非主屬性只依賴其中一部分(學(xué)號(hào)+課程號(hào)) → 姓名將姓名拆到“學(xué)生表”
第三范式 (3NF)在 2NF 基礎(chǔ)上,非主屬性不能依賴其他非主屬性(消除傳遞依賴)非主屬性依賴另一個(gè)非主屬性學(xué)號(hào) → 系編號(hào) → 系名稱把“系編號(hào)-系名稱”拆到“系別表”
第四范式 (4NF)在 3NF 基礎(chǔ)上,消除多值依賴(不能同時(shí)描述多個(gè)獨(dú)立的多對(duì)多關(guān)系)一張表里既存儲(chǔ)“愛好”,又存儲(chǔ)“擅長課程”學(xué)號(hào) → 愛好 和 學(xué)號(hào) → 擅長課程分成“學(xué)生_愛好表”和“學(xué)生_課程表”

?? 記憶口訣

  • 1NF:字段原子化

  • 2NF:消除部分依賴

  • 3NF:消除傳遞依賴

  • 4NF:消除多值依賴

畫一個(gè) 范式演進(jìn)示意圖(從 1NF → 4NF,逐步拆表的過程)這樣更直觀。

畫一個(gè) 1NF → 4NF 的演進(jìn)示意圖,用一個(gè)「學(xué)生」場景,逐步展示規(guī)范化的過程:

范式演進(jìn)示意圖

未規(guī)范化

學(xué)生表
學(xué)號(hào) | 姓名 | 聯(lián)系方式           | 系名稱  | 愛好   | 擅長課程
1    | 張三 | 1380000,1391111   | 計(jì)算機(jī)系 | 足球   | 數(shù)學(xué)

問題:

  • 聯(lián)系方式不原子化(違反 1NF)

  • 姓名只依賴學(xué)號(hào),不依賴課程號(hào)(違反 2NF)

  • 系名稱依賴于系編號(hào),而不是直接依賴學(xué)號(hào)(違反 3NF)

  • 愛好和課程是獨(dú)立的多值依賴(違反 4NF)

第一范式 (1NF)

解決字段不可再分 → 拆分聯(lián)系方式

學(xué)生表
學(xué)號(hào) | 姓名 | 聯(lián)系方式 | 系編號(hào) | 系名稱 | 愛好 | 擅長課程
1    | 張三 | 1380000  | 01    | 計(jì)算機(jī) | 足球 | 數(shù)學(xué)
1    | 張三 | 1391111  | 01    | 計(jì)算機(jī) | 足球 | 數(shù)學(xué)

第二范式 (2NF)

解決部分依賴 → 拆分“學(xué)生”和“選課”

學(xué)生表
學(xué)號(hào) | 姓名 | 系編號(hào)

選課表
學(xué)號(hào) | 課程號(hào) | 成績

第三范式 (3NF)

解決傳遞依賴 → 把系名稱單獨(dú)拆表

學(xué)生表
學(xué)號(hào) | 姓名 | 系編號(hào)

系別表
系編號(hào) | 系名稱

選課表
學(xué)號(hào) | 課程號(hào) | 成績

第四范式 (4NF)

解決多值依賴 → 愛好、擅長課程單獨(dú)拆表

學(xué)生表
學(xué)號(hào) | 姓名 | 系編號(hào)

系別表
系編號(hào) | 系名稱

選課表
學(xué)號(hào) | 課程號(hào) | 成績

學(xué)生_愛好表
學(xué)號(hào) | 愛好

學(xué)生_課程表
學(xué)號(hào) | 擅長課程

?? 最終結(jié)果

  • 每張表結(jié)構(gòu)更清晰,避免冗余和異常(插入、更新、刪除異常)。

  • 實(shí)際項(xiàng)目中常用到 3NF,4NF 更多是學(xué)術(shù)或復(fù)雜業(yè)務(wù)場景。

總結(jié) 

到此這篇關(guān)于后端MySQL數(shù)據(jù)庫四大范式的文章就介紹到這了,更多相關(guān)后端數(shù)據(jù)庫四大范式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

得荣县| 汕头市| 通州市| 延川县| 香港 | 金塔县| 沧州市| 呼伦贝尔市| 姚安县| 农安县| 东源县| 平湖市| 南投县| 邳州市| 剑河县| 景谷| 崇左市| 芮城县| 丰都县| 大姚县| 全椒县| 日照市| 图片| 清镇市| 来凤县| 辉县市| 交城县| 台南县| 大田县| 精河县| 博客| 牟定县| 株洲市| 宝应县| 西乌珠穆沁旗| 基隆市| 平塘县| 斗六市| 黑山县| 郓城县| 来宾市|