關聯式資料庫正規化

2021-10-21 20:09:43 字數 2059 閱讀 5336

判斷是第幾正規化

概念:設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。

種類:目前關聯式資料庫有六種正規化:第一正規化(1nf)、第二正規化(2nf)、第三正規化(3nf)、巴斯-科德正規化(bcnf)、第四正規化(4nf)和第五正規化(5nf,又稱完美正規化)。

正規化之間的關係

正規化的特點

減少資料冗餘(這是最主要的好處,其他好處都是由此而附帶的)

消除異常(插入異常,更新異常,刪除異常)

讓資料組織的更加和諧

不滿足第一正規化的表

學號姓名

家庭住址

0001

張三xx省xx市xx區xx街道xx小區

資料冗餘,如果有多個學生在同乙個小區,那麼同樣的位址要多次儲存

修改異常,如果有學生更換家庭住址,那麼就得對整個家庭住址去修改

查詢效率太低,如果要查詢在xx市的所有學生,那麼必須對每個學生的家庭住址整個欄位去進行字元匹配

符合第一正規化的表

學號姓名

位址id

0001張三1

位址id省市

區街道小區

1xx省

xx市xx區

xx街道

不滿足第二正規化的表

學號姓名

年齡課程名稱

成績學分

關鍵字為組合關鍵字(學號, 課程名稱),這個資料庫表不滿足第二正規化,因為存在如下決定關係:(課程名稱) → (學分) (學號) → (姓名, 年齡),即存在組合關鍵字中的字段決定非關鍵字的情況。

資料冗餘:一門課被多個同學選修,那麼課程名稱和學分就多次重複儲存。

插入異常:當有一門新課沒人選修時,這門課就因為沒有主鍵而插不進來。

刪除異常:當一門課之北乙個同學選修時,刪除這個同學時這門課也會被刪除。

修改異常:當一門課程的學分需要修改時,就得修改每個選修這門課的同學。

學號姓名

年齡課程id成績

課程id

課程名稱

學分學生id

學生姓名

學生性別

學院id

學院**

由學生id無法直接推出學院**,而是由學生id->學院id->學院**,存在非主屬性對主鍵的傳遞依賴

資料冗餘:乙個學院有多名學生,那麼學院**就需要儲存多次

插入異常:當乙個學校沒有學生時,學院**就無法儲存

修改異常:當乙個學院**需要修改時,就需要修改多次

刪除一場:當乙個學院只有乙個學生時,學生被刪除那麼學院**就被刪除

學生id

學生姓名

學生性別

學院id

學院id

學院名稱

學院**

巴斯-科德正規化(bcnf)是第三正規化(3nf)的乙個子集,即滿足巴斯-科德正規化(bcnf)必須滿足第三正規化(3nf)

倉庫id

儲存物品id

管理員id數量

我們發現:(倉庫id, 儲存物品id) →(管理員id, 數量),(管理員id, 儲存物品id) → (倉庫id, 數量)

所以,(倉庫id, 儲存物品id)和(管理員id, 儲存物品id)都是倉庫管理關係表的候選關鍵字,表中的唯一非關鍵字段為數量,它是符合第三正規化的。但是,由於存在如下決定關係:

(倉庫id) → (管理員id),(管理員id) → (倉庫id)

即存在不滿足上述的第二種情況:主屬性(管理員)部分依賴於不包含它的候選鍵(倉庫id, 儲存物品id),所以其不符合bcnf正規化。它會出現如下異常情況:

資料冗餘

刪除異常:當倉庫被清空後,所有」儲存物品id」和」數量」資訊被刪除的同時,」倉庫id」和」管理員id」資訊也被刪除了。

插入異常:當倉庫沒有儲存任何物品時,無法給倉庫分配管理員。

更新異常:如果倉庫換了管理員,則表中所有行的管理員id都要修改。

倉庫id

管理員id

倉庫id

儲存物品id

數量

關聯式資料庫正規化

在建立乙個資料庫的過程中,必須依照一定的準則,這些準則被稱為正規化,從第一到第六共六個正規化,一般資料庫設計只要遵循第一正規化,第二正規化,和第三正規化就足夠了。滿足這些規範的資料庫是簡潔的 結構明晰的,同時,不會發生插入 insert 刪除 delete 和更新 update 操作異常。反之則是亂...

關聯式資料庫的正規化

構造資料庫必須遵循一定的規則。在 關聯式資料庫中,這種規則就是 正規化。正規化是符合某一種級別的關係模式的集合。關聯式資料庫中的關係必須滿足一定的要求,即滿足不同的 正規化。目前 關聯式資料庫有六種 正規化 第一 正規化 1nf 第二 正規化 2nf 第三 正規化 3nf 第四 正規化 4nf 第五...

關聯式資料庫的正規化

1 正規化 構造資料庫必須遵循一定的規劃,在關聯式資料庫中這種規則就是正規化 nf即normal form 正規化是符合一種級別的關係模式的集合。關聯式資料庫中的關係必須滿足一定的要求,即滿足不同的正規化。目前關聯式資料庫有6種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 第四...