久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql數據庫的四個范式分別是什么

176次閱讀
沒有評論

共計 2352 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章給大家分享的是有關 mysql 數據庫的四個范式分別是什么的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

1、1NF(第一范式)

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

如果出現重復的屬性,就可能需要定義一個新的實體,新的實體由重復的屬性構成,新實體與原實體之間為一對多關系。第一范式的模式要求屬性值不可再分裂成更小部分,即屬性項不能是屬性組合或是由一組屬性構成。

簡而言之,第一范式就是無重復的列。例如,由“職工號”“姓名”“電話號碼”組成的表(一個人可能有一部辦公電話和一部移動電話),這時將其規范化為 1NF 可以將電話號碼分為“辦公電話”和“移動電話”兩個屬性,即職工(職工號,姓名,辦公電話,移動電話)。

2、2NF(第二范式)

第二范式 (2NF) 是在第一范式 (1NF) 的基礎上建立起來的,即滿足第二范式 (2NF) 必須先滿足第一范式 (1NF)。第二范式(2NF) 要求數據庫表中的每個實例或行必須可以被唯一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。

如果關系模型 R 為第一范式,并且 R 中的每一個非主屬性完全函數依賴于 R 的某個候選鍵,則稱 R 為第二范式模式(如果 A 是關系模式 R 的候選鍵的一個屬性,則稱 A 是 R 的主屬性,否則稱 A 是 R 的非主屬性)。

例如,在選課關系表 (學號,課程號,成績,學分),關鍵字為組合關鍵字(學號,課程號),但由于非主屬性學分僅依賴于課程號,對關鍵字(學號,課程號) 只是部分依賴,而不是完全依賴,因此此種方式會導致數據冗余以及更新異常等問題,解決辦法是將其分為兩個關系模式:學生表 (學號,課程號,分數) 和課程表(課程號,學分),新關系通過學生表中的外關鍵字課程號聯系,在需要時進行連接。

3、3NF(第三范式)

如果關系模型 R 是第二范式,且每個非主屬性都不傳遞依賴于 R 的候選鍵,則稱 R 是第三范式的模式。

以學生表 (學號,姓名,課程號,成績) 為例,其中學生姓名無重名,所以該表有兩個候選碼 (學號,課程號) 和(姓名,課程號),故存在函數依賴:學號—— 姓名,(學號,課程號)—— 成績,唯一的非主屬性成績對碼不存在部分依賴,也不存在傳遞依賴,所以屬性屬于第三范式。

4、BCNF(BC 范式)

它構建在第三范式的基礎上,如果關系模型 R 是第一范式,且每個屬性都不傳遞依賴于 R 的候選鍵,那么稱 R 為 BCNF 的模式。

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

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

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

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

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

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

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

5、4NF(第四范式)

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

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

1、第一范式(1NF)
在任何一個關系數據庫中,第一范式(1NF)是對關系模式的基本要求,不滿足第一范式(1NF)的數據庫就不是關系數據庫。
所謂第一范式(1NF)是指數據庫表的每一列 (即每個屬性) 都是不可分割的基本數據項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復的屬性。簡而言之,第一范式就是無重復的列。
2、第二范式(2NF)
第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求數據庫表中的每個實例或行必須可以被唯一地區分。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。員工信息表中加上了員工編號(emp_id)列,因為每個員工的員工編號是唯一的,因此每個員工可以被唯一區分。這個唯一屬性列被稱為主關鍵字或主鍵、主碼。
第二范式(2NF)要求實體的屬性完全依賴于主關鍵字。所謂完全依賴是指不能存在僅依賴主關鍵字一部分的屬性,如果存在,那么這個屬性和主關鍵字的這一部分應該分離出來形成一個新的實體,新實體與原實體之間是一對多的關系。為實現區分通常需要為表加上一個列,以存儲各個實例的唯一標識。簡而言之,第二范式就是非主屬性依賴于主關鍵字。
3、第三范式(3NF)
滿足第三范式(3NF)必須先滿足第二范式(2NF)。在滿足第二范式的基礎上,切不存在傳遞函數依賴,那么就是第三范式。簡而言之,第三范式就是屬性不依賴于其它非主屬性。

感謝各位的閱讀!關于“mysql 數據庫的四個范式分別是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計2352字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 繁峙县| 闻喜县| 祥云县| 镇平县| 会宁县| 东山县| 桂东县| 孝昌县| 灌南县| 西宁市| 麟游县| 沅江市| 莱芜市| 香格里拉县| 左贡县| 临海市| 宁城县| 宁津县| 合水县| 安乡县| 山西省| 隆化县| 新蔡县| 田林县| 三原县| 乐山市| 日土县| 柯坪县| 延安市| 榆林市| 长寿区| 西林县| 天门市| 烟台市| 张家口市| 黄龙县| 永安市| 平罗县| 礼泉县| 襄垣县| 宜宾市|