資料庫三正規化

2021-06-22 16:18:37 字數 1564 閱讀 1836

【送你6道美味下飯菜,簡單快手味鮮美,按步驟你也可以擁有它!】

關聯式資料庫設計之時是要遵守一定的規則的。尤其是資料庫設計正規化

簡單介紹1nf(第一正規化),2nf(第二正規化),3nf(第三正規化),

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

例:如職工號,姓名,**號碼組成乙個表(乙個人可能有乙個辦公室** 和乙個家裡**號碼) 規範成為1nf有三種方法:

一是重複儲存職工號和姓名。這樣,關鍵字只能是**號碼。

二是職工號為關鍵字,**號碼分為單位**和住宅**兩個屬性

三是職工號為關鍵字,但強制每條記錄只能有乙個**號碼。

以上三個方法,第一種方法最不可取,按實際情況選取後兩種情況。

第二正規化(2nf):如果關係模式r(u,f)中的所有非主屬性都完全依賴於任意乙個候選關鍵字,則稱關係r 是屬於第二正規化的。

例:選課關係 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)。新關係包括兩個關係模式,它們之間通過scn中

的外關鍵字cno相聯絡,需要時再進行自然聯接,恢復了原來的關係

第三正規化(3nf):如果關係模式r(u,f)中的所有非主屬性對任何候選關鍵字都不存在傳遞信賴,則稱關係r是屬於第三正規化的。

例:如s1(sno,sname,dno,dname,location) 各屬性分別代表學號,

姓名,所在系,系名稱,系位址。

關鍵字sno決定各個屬性。由於是單個關鍵字,沒有部分依賴的問題,肯定是2nf。但這關係肯定有大量的冗餘,有關學生所在的幾個

屬性dno,dname,location將重複儲存,插入,刪除和修改時也將產生類似以上例的情況。

原因:關係中存在傳遞依賴造成的。即sno -> dno。 而dno -> sno卻不存在,dno -> location, 因此關鍵遼 sno 對 locatio

n 函式決定是通過傳遞依賴 sno -> location 實現的。也就是說,sno不直接決定非主屬性location。

解決目地:每個關係模式中不能留有傳遞依賴。

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

注意:關係s中不能沒有外關鍵字dno。否則兩個關係之間失去聯絡。

資料庫正規化 三正規化

所謂第一正規化 1nf 是指在關係模型中,對域新增的乙個規範要求,所有的域都應該是原子性的,即資料庫表的每一列都是不可分割的原子資料項,而不能是集合,陣列,記錄等非原子資料項。即實體中的某個屬性有多個值時,必須拆分為不同的屬性。在符合第一正規化 1nf 表中的每個域值只能是實體的乙個屬性或乙個屬性的...

資料庫三正規化

資料庫的三正規化 1n 關係r中的屬性都是不可分割的項.2n 在1n的基礎上,每個非主屬性完全函式依賴於碼.3n 在2n的基礎上,每乙個非主屬性既不部分依賴於碼也不傳遞依賴於碼.1n 消除非主屬性對碼的部分函式依賴 2n 消除非主屬性對碼的傳遞函式依賴 3n 消除主屬性對碼的部分和傳遞函式依賴 bc...

資料庫三正規化

1 第一正規化 1nf 無重複的列 所謂第一正規化 1nf 是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義乙個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化 ...