日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL数据库:范式

發布時間:2024/9/30 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL数据库:范式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

按照“數據庫規范化”對表進行設計,其目的就是減少數據庫中的數據冗余,以增加數據的一致性。

常見的范式有1NF、2NF、3NF、BCNF。下面對這幾種常見的范式進行簡要分析。

?

1、1NF(第一范式):

第一范式,就是數據表的列不可再分,數據庫表中的每一列都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。

看下面數據表,對于選課列明顯是可以再分的,所以它是違反第一范式的。

學號姓名選課
10001張三數學,語文,英語
10002李四語文,英語
10003王五語文,英語,歷史

?

2、2NF(第二范式):

第二范式必須先滿足第一范式。另外包含兩部分的內容:一是表必須有一個主鍵;二是表中非主鍵列必須完全依賴于主鍵,而不能只依賴于主鍵的一部分。

學號課程成績課程學分
10001數學1006
10001語文902
10001英語853
10002數學906
10003數學996
10004語文892

表中主鍵為 (學號,課程),我們可以表示為 (學號,課程) -> (成績,課程學分), 表示所有非主鍵列?(成績,課程學分)都依賴于主鍵?(學號,課程)。 但是,表中還存在另外一個依賴:(課程)->(課程學分)。這樣非主鍵列 ‘課程學分‘ 依賴于部分主鍵列 ’課程‘, 所以上表是不滿足第二范式的。

我們把它拆成如下2張表:

學生選課表:

學號課程成績
10001數學100
10001語文90
10001英語85
10002數學90
10003數學99
10004語文89

課程信息表:

課程課程學分
數學6
語文3
英語2

那么上面2個表,學生選課表主鍵為(學號,課程),課程信息表主鍵為(課程),表中所有非主鍵列都完全依賴主鍵。不僅符合第二范式,還符合第三范式。?

?

3、3NF(第三范式):

定義:首先是滿足?2NF,另外非主鍵列必須直接依賴于主鍵,表中的列不存在對非主鍵列的傳遞依賴。即不能存在:非主鍵列 A 依賴于非主鍵列 B,非主鍵列 B 依賴于主鍵的情況。

再看這樣一個學生信息表:

學號姓名性別班級班主任
10001張三一班小王
10002李四一班小王
10003王五二班小李
10004張小三二班小李

上表中,主鍵為:(學號),所有字段 (姓名,性別,班級,班主任)都依賴與主鍵(學號),不存在對主鍵的部分依賴。所以是滿足第二范式。但是,表中存在一個傳遞依賴,(學號)->(班級)->(班主任)。也就是說,(班主任)這個非主鍵列依賴與另外一個非主鍵列 (班級)。所以不符號第三范式。

把這個表拆分成如下2個表:

學生信息表:

學號姓名性別班級
10001張三一班
10002李四一班
10003王五二班
10004張小三二班

班級信息表:

班級班主任
一班小王
二班小李

這樣,對主鍵的傳遞依賴就消失了。上面的2個表都符合第3范式。

?

第二范式(2NF)和第三范式(3NF)的概念很容易混淆,區分它們的關鍵點在于,2NF:非主鍵列是否完全依賴于主鍵,還是依賴于主鍵的一部分;3NF:非主鍵列是直接依賴于主鍵,還是直接依賴于非主鍵列。

?

4、BCNF(BC范式):

定義:在第三范式的基礎上,消除主屬性對于碼部分的傳遞依賴。

假設倉庫管理關系表(倉庫號,存儲物品號,管理員號,數量),滿足一個管理員只在一個倉庫工作;一個倉庫可以存儲多種物品,則存在如下關系:

(倉庫號,存儲物品號)——>(管理員號,數量)

(管理員號,存儲物品號)——>(倉庫號,數量)

所以,(倉庫號,存儲物品號)和(管理員號,存儲物品號)都是倉庫管理關系表的候選碼,表中唯一非關鍵字段為數量,它是符合第三范式的。但是,由于存在如下決定關系:

(倉庫號)——>(管理員號)

(管理員號)——>(倉庫號)

存在關鍵字段決定關鍵字段的情況,因此其不符合BCNF。把倉庫管理關系表分解為兩個關系表? 倉庫管理表(倉庫號,管理員號) 和 倉庫表(倉庫號,存儲物品號,數量),這樣這個數據庫表是符合BCNF的,并消除了刪除異常、插入異常和更新異常。

?

5、4NF(第四范式):

設R是一個關系模型,D是R上的多值依賴集合。如果D中存在多值依賴X->Y時,X必是R的超鍵,那么稱R是第四范式的模式。

例如,職工表(職工編號,職工孩子姓名,職工選修課程),在這個表中,同一個職工可能會有多個職工孩子姓名,同樣,同一個職工也可能會有多個職工選修課程,即這里存在著多值事實,不符合第四范式。如果要符合第四范式,只需要將上表分為兩個表,使它們只有一個多值事實,例如職工表一(職工編號,職工孩子姓名),職工表二(職工編號,職工選修課程),兩個表都只有一個多值事實,所以符合第四范式。

?

原博客鏈接:https://blog.csdn.net/xidianliuy/article/details/51566576?

總結

以上是生活随笔為你收集整理的MySQL数据库:范式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。