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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

数据库范式解析(1NF 2NF 3NF BCNF)

發(fā)布時(shí)間:2025/3/21 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库范式解析(1NF 2NF 3NF BCNF) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)據(jù)庫(kù)設(shè)計(jì)范式是關(guān)系型數(shù)據(jù)庫(kù)的設(shè)計(jì)準(zhǔn)則。其目的在于通過(guò)規(guī)劃設(shè)計(jì)使得數(shù)據(jù)庫(kù)結(jié)構(gòu)合理,盡量減少數(shù)據(jù)冗余,消除存儲(chǔ)異常,方便數(shù)據(jù)的插入、更新和刪除操作。目前常用范式包括1NF(第一范式)、2NF(第二范式)、3NF(第三范式)和BCNF(鮑依斯-科得范式)。

1NF 第一范式

如果一個(gè)關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),則R∈1NF。

也可表述為:數(shù)據(jù)庫(kù)表中的字段都是單一屬性的,不可再分。

比如“地址”屬性應(yīng)該拆分為“城市”、“區(qū)縣”、“具體地址”便于使用。

2NF 第二范式

若關(guān)系模式R∈1NF,并且每一個(gè)非主屬性都完全函數(shù)依賴于R的碼(多個(gè)主屬性字段的組合),則R∈2NF

也可表述為:數(shù)據(jù)庫(kù)表中不存在非關(guān)鍵字段對(duì)任一候選關(guān)鍵字段的部分函數(shù)依賴(部分函數(shù)依賴指的是存在組合關(guān)鍵字中的某些字段決定非關(guān)鍵字段的情況),也即所有非關(guān)鍵字段都完全依賴于任意一組候選關(guān)鍵字。

比如選課關(guān)系表(學(xué)號(hào), 姓名, 年齡, 課程名稱, 成績(jī), 學(xué)分),碼為組合關(guān)鍵字(學(xué)號(hào), 課程名稱),因?yàn)榇嬖谌缦聸Q定關(guān)系:

這個(gè)數(shù)據(jù)庫(kù)表不滿足第二范式,因?yàn)榇嬖谌缦聸Q定關(guān)系:(課程名稱) → (學(xué)分) 和 (學(xué)號(hào)) → (姓名, 年齡),即存在碼中的部分字段決定非關(guān)鍵字的情況,所以不符合2NF。應(yīng)修改為一以下三個(gè)表:

學(xué)生:Student(學(xué)號(hào), 姓名, 年齡);

課程:Course(課程名稱, 學(xué)分);

選課關(guān)系:SelectCourse(學(xué)號(hào), 課程名稱, 成績(jī))。

3NF 第三范式

關(guān)系模式R<U,F> 中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z ? Y), 使得X→Y,Y→Z,成立,則稱R<U,F> ∈ 3NF。

也可表述為:在第二范式的基礎(chǔ)上,數(shù)據(jù)表中如果不存在非關(guān)鍵字段對(duì)任一候選關(guān)鍵字段的傳遞函數(shù)依賴則符合第三范式。所謂傳遞函數(shù)依賴,指的是如果存在"A → B → C"的決定關(guān)系,則C傳遞函數(shù)依賴于A。因此,滿足第三范式的數(shù)據(jù)庫(kù)表應(yīng)該不存在如下依賴關(guān)系:關(guān)鍵字段 → 非關(guān)鍵字段x → 非關(guān)鍵字段y

比如:學(xué)生關(guān)系表為Student(學(xué)號(hào), 姓名, 年齡, 所在學(xué)院, 學(xué)院地點(diǎn), 學(xué)院電話)關(guān)鍵字段為“學(xué)號(hào)”,存在以下決定關(guān)系(學(xué)號(hào)) → (姓名, 年齡, 所在學(xué)院, 學(xué)院地點(diǎn), 學(xué)院電話),符合2NF;但存在(學(xué)號(hào)) → (所在學(xué)院) → (學(xué)院地點(diǎn), 學(xué)院電話),不符合3NF。應(yīng)改為:

學(xué)生:(學(xué)號(hào), 姓名, 年齡, 所在學(xué)院);

學(xué)院:(學(xué)院, 地點(diǎn), 電話)。

BCNF 鮑依斯-科得范式

設(shè)關(guān)系模式R<U,F>∈1NF,如果對(duì)于R的每個(gè)函數(shù)依賴X→Y,若Y不屬于X,則X必含有候選碼,那么R∈BCNF。

也可表述為:在第三范式的基礎(chǔ)上,數(shù)據(jù)庫(kù)表中如果不存在任何字段對(duì)任一候選關(guān)鍵字段的傳遞函數(shù)依賴則符合第三范式。

比如:倉(cāng)庫(kù)管理關(guān)系表為(倉(cāng)庫(kù)ID, 存儲(chǔ)物品ID, 管理員ID, 數(shù)量),且有一個(gè)管理員只在一個(gè)倉(cāng)庫(kù)工作;一個(gè)倉(cāng)庫(kù)可以存儲(chǔ)多種物品。這個(gè)數(shù)據(jù)庫(kù)表中存在如下決定關(guān)系:

  (倉(cāng)庫(kù)ID, 存儲(chǔ)物品ID) →(管理員ID, 數(shù)量)

  (管理員ID, 存儲(chǔ)物品ID) → (倉(cāng)庫(kù)ID, 數(shù)量)

所以,(倉(cāng)庫(kù)ID, 存儲(chǔ)物品ID)和(管理員ID, 存儲(chǔ)物品ID)都是表的候選關(guān)鍵字,表中的唯一非關(guān)鍵字段為數(shù)量,它是符合第三范式的。但是,由于存在如下決定關(guān)系:

  (倉(cāng)庫(kù)ID) → (管理員ID)

  (管理員ID) → (倉(cāng)庫(kù)ID)

即存在關(guān)鍵字段決定關(guān)鍵字段的情況,所以其不符合BCNF范式。數(shù)據(jù)表應(yīng)修改為:

  倉(cāng)庫(kù)管理:(倉(cāng)庫(kù)ID, 管理員ID);

  倉(cāng)庫(kù):(倉(cāng)庫(kù)ID, 存儲(chǔ)物品ID, 數(shù)量)。

四種范氏之間的關(guān)系

每一個(gè)范氏都是進(jìn)一步約束的關(guān)系,如下圖:

四種范式之間的關(guān)系

參考:

  • 數(shù)據(jù)庫(kù)范式(1NF 2NF 3NF BCNF)詳解一
  • 數(shù)據(jù)庫(kù)范式(1NF 2NF 3NF BCNF)詳解二
  • SQL范式
  • 細(xì)說(shuō)數(shù)據(jù)庫(kù)范式
  • from:?http://witmax.cn/database-normal-form.html

    總結(jié)

    以上是生活随笔為你收集整理的数据库范式解析(1NF 2NF 3NF BCNF)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。