關聯式資料庫設計正規化理解總結

2021-09-30 04:44:31 字數 1510 閱讀 3013

目地:規範化目的是使結構更合理,消除儲存異常,使資料冗餘盡量小,便於插入、刪除和更新 

原則:遵從概念單一化 "一事一地"原則,即乙個關係模式描述乙個實體或實體間的一種聯絡。規範的實質就是概念的單一化。 

方法:將關係模式投影分解成兩個或兩個以上的關係模式。

正規化關係:

1nf > 2nf > 3nf > bcnf

4nf和5nf一般用不到

理解:第一正規化(1nf):在關係模式r中的每乙個具體關係r中,如果每個屬性值都是不可再分的最小資料單位。

如,字段「**號碼」不能同時存手機和座機的**,應該設定成兩個字段。

第二正規化(2nf):非主屬性不存在部分依賴。

只有在組合主鍵時,才有是否滿足2nf的問題,即組合主鍵才能確定非主屬性,不能部分主鍵確定非主屬性。

如,選課關係 sci(sno,cno,grade,credit)其中sno為學號, cno為課程號,gradege 為成績,credit 為學分。 由以上條件,關鍵字為組合關鍵字(sno,cno)。

在應用中使用以上關係模式有以下問題: 

a.資料冗餘,假設同一門課由40個學生選修,學分就 重複40次。 

b.更新異常,若調整了某課程的學分,相應的元組credit值都要更新,有可能會出現同一門課學分不同。 

c.插入異常,如計畫開新課,由於沒人選修,沒有學號關鍵字,只能等有人選修才能把課程和學分存入。 

d.刪除異常,若學生已經結業,從當前資料庫刪除選修記錄。某些門課程新生尚未選修,則此門課程及學分記錄無法儲存。 

原因:非關鍵字屬性credit僅函式依賴於cno,也就是credit部分依賴組合關鍵字(sno,cno)而不是完全依賴。 

解決方法:分成兩個關係模式 sc1(sno,cno,grade),c2(cno,credit)。新關係包括兩個關係模式,它們之間通過sc1中的外關鍵字cno相聯絡,需要時再進行自然聯接,恢復了原來的關係 。

第三正規化(3nf):非主屬性不存在傳遞依賴。

即非主屬性直接依賴於主鍵,不能依賴別的屬性。

如,s1(sno,sname,dno,dname,location) 各屬性分別代表學號,姓名,所在系,系名稱,系位址。

關鍵字sno決定各個屬性。由於是單個關鍵字,沒有部分依賴的問題,肯定是2nf。但這關係肯定有大量的冗餘,有關學生所在的幾個屬性dno,dname,location將重複儲存,插入,刪除和修改時也將產生類似以上例的情況。 

原因:關係中存在傳遞依賴造成的。即sno -> dno。 而dno -> sno卻不存在,dno -> location, 因此關鍵遼 sno 對 location 函式決定是通過傳遞依賴 sno -> location 實現的。也就是說,sno不直接決定非主屬性location。

解決方法:分為兩個關係 s(sno,sname,dno),d(dno,dname,location)。

bc正規化(bcnf):所有屬性(包括主屬性和非主屬性)都不傳遞依賴於r的任何候選關鍵字。

關聯式資料庫設計正規化

簡介 設計關聯式資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。目前關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴德斯科正規化 bcnf 第四正規化 4nf 和第...

關聯式資料庫正規化粗略理解

粗略看了一下關聯式資料庫正規化介紹,簡單記錄一下自己的理解 第一正規化 指屬性達到原子性,即屬性不可再進行分割了。例如一張person 表,其中有個字段是個人資訊p info,這個個人資訊可再分割成姓名,性別,年齡三個字段。那麼person這張表就沒有達到第一正規化,應把個人資訊分解成姓名,性別,年...

關聯式資料庫的設計正規化

所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列不能有多個含義,即實體的某個屬性不能有多個含義或者不能有重複的屬性。1nf是關聯式資料庫的基本原則,不滿足1nf的要求,就不能稱其為關聯式資料庫。第一正規化表達了如下3個意思。1 乙個表中不能同時存在兩個含義重複的屬性。2 ...