資料庫系統概論 學習筆記(三)第五部分

2021-05-24 23:03:56 字數 2946 閱讀 9016

第五章 關係資料理論

--資料的規範化

5.1提出問題

1、關係模式

r(u, d, dom, f)五元組表示,也可直接用r(u, f)來表示,即當且僅當u上的乙個關係r滿足f時,r稱為關係模式r(u, f)的乙個關係。

2、資料依賴

通過乙個關係中屬性間值的相等與否體現出來的資料間的相互關係。可分為函式依賴和多值依賴。

5.2 資料的規範化

正規化:關係模式滿足的確定約束條件,由低到高分為1nf、2nf、3nf、bcnf、4nf、5nf等。

規範化:把乙個低一級的關係模式分解為高一級關係模式的過程。

分解的兩個準則:(1)無損聯接性;    (2)函式依賴保持性

基本思想:逐步消除不合適的函式依賴,使資料庫中的各種關係模式達到某種程度的分離。

1、函式依賴

定義:對於r(u)的任意乙個可能的關係r,r中不可能存在兩個元組在x上的屬性值相等而在y上的屬性值不等。這樣可稱為x函式確定y或y函式依賴於x,記作x→y。

通俗地說,就像自變數x確定之後,相應的函式值f(x)也就惟一地確定了一樣。

比如員工資料表(員工號,員工姓名,所在部門),可以說員工號決定員工姓名和所在部門,或者說員工姓名、所在部門依賴於員工號,記為:員工號→員工姓名,員工號→所在部門。

2、碼關係r(u,f)中的乙個屬性或一組屬性k,如果給定乙個k則惟一決定u中的乙個元組,也就是u完全函式依賴於k,我們就稱k為r的候選碼。乙個關係可能有多個候選碼,選其一作為主碼。

包含在任一碼中的屬性稱為主屬性,不包含在任何碼中的屬性稱為非主屬性。

外碼:關係r中的屬性或屬性組x不是r的碼,但x是另乙個關係模式的碼,我們就稱之為外碼。

3、1nf

如果關係r中的所有屬性的屬性不可再分,是屬性項而不是屬性組,那麼關係模式r是第一正規化,記作1nf。這是關係的基本性質,任何關係都必須滿足第一正規化。比如:

員工工號

員工姓名

位址劉備

廣東省廣州市東大街1號[120002]

上表表示的關係就不是第一正規化,分解為:

員工工號

員工姓名

所在省

所在市

詳細位址

郵編劉備

廣東省廣州市

東大街1號

這就滿足了第一正規化的要求。

滿足第一正規化的關係模式會有許多重複值,並且增加了修改其資料時引起疏漏的可能性。

4、2nf

如果乙個關係屬於1nf,且所有的非主屬性都完全地依賴於主屬性,則稱為第二正規化。

如果乙個關係模式r不屬於2nf,那麼就會產生如下問題:(1)插入異常;(2)刪除異常;(3)修改複雜。

3、3nf

如果乙個關係r屬於2nf,且每個非主屬性不傳遞依賴於主屬性,這種關係是3nf。

從2nf中消除傳遞依賴,就是3nf。比如關係模式e(員工姓名,工資級別,工資額),其中職工姓名是關鍵字,此關係符合2nf,但是因為工資級別決定工資額,也就是說非主屬性「工資額」傳遞依賴於主屬性「員工姓名」,因此它不符合3nf,可以用投影分解的辦法將其分解成兩個關係模式:e(員工姓名,工資級別),f(工資級別,工資額),這兩個就都符合3nf的定義。

4、bcnf

如果關係模式r屬於1nf,且r中每乙個函式依賴關係中的決定因素都包含碼,則r屬於bcnf(boyeet和codd提出)。通常認為bcnf是第三正規化的改進。

當乙個關係模式r屬於bcnf,則在函式依賴範疇裡,就認為已經徹底實現了分離,消除了插入、刪除異常。

綜合1nf、2nf、3nf和bcnf的內涵可概括為:

(1)每乙個屬性都是不可再分解的屬性(1nf的要求)

(2)非主屬性完全函式依賴於碼(2nf的要求)

(3)非主屬性不傳遞依賴於任何乙個候選碼(3nf的要求)

(4)主屬性對不含它的碼完全函式依賴(bcnf的要求)

(5)沒有屬性完全函式依賴於一組非主屬性(bcnf的要求)

5、多值依賴與4nf

多值依賴:關係模式r(u,f)屬於1nf,x、y是u的非空子集,z=u-x-y也非空,若任取一組值對(x,z),都可決定一組(y1、y2、…、yn)值,且此決定關係與z值無關,我們就稱y多值依賴於x,記作x→→y。

4nf:關係模式r(u,f)屬於1nf,若對任一多值依賴x→→y,x必包含r的主鍵,就稱r為第四正規化。

如以下關係r(ypm,bm,gys):

ypm(用品名)

bm(部門)

gys(**商)

辦公桌總經理室

華美辦公桌

銷售部科技

辦公椅工程部

光偉辦公椅

計畫部中廈

辦公椅總經理室

華美從表中可以看出,對於ypm的乙個值,不論gys取什麼值,總有一組確定的bm與這對應,所以有ypm→→bm,現時也有ypm→→gys,此關係是全碼,這說明r不滿足4nf,此種關係模式有資料冗餘和修改量大等弊端,可用分解法分解為:r1(ypm,bm),r2(ypm,gys)。

6、非規範化處理

是不是規範化設計就一定是完美的呢?不是,在實際應用中,由規範化設計所帶來的效能問題可能是令人無法承受的。這時就要進行非規範化處理。

非規範化是為了獲得效能上的要求所進行的違反規範化規則的操作。由於非規範化幾乎必然導致冗餘,占用更多的儲存空間,因此設計時需要從效能和空間的平衡進行考慮,不斷地嘗試和評估。當然,如果僅僅是為了一時的方便而進行非規範化處理那是非常不好的習慣,不值得去效仿,比如某些人就因為某些不是理由的理由將匯率這些基本資料也冗餘到訂單表中,這就不是什麼好的方法了。

python 第五部分 物件導向 學習筆記

一 物件導向 將程式設計當成乙個事物,對外界來說,事物是直接使用的,不用去管他內部的情況,而程式設計就是設定事物能夠做什麼事。1.類和物件 關係 用類去建立乙個物件 類 是對一系列具有相同特徵和行為的事物的統稱,是乙個抽象的概念,不是真實存在的事物 特徵即是屬性 行為即是方法 物件 是類建立出來的真...

資料庫系統概論三

1 sql語言的特點 1 綜合統一。2 高度非過程化。3 面向集合的操作方式。4 以同一種語法結構提供多種使用方式 5 語言簡潔 易學易用。2 sql語言的資料查詢,資料定義,資料操縱功能,這些分別有哪些sql語句?1 資料定義 定義資料庫中的基本物件 模式 架構 定義 表定義 檢視和索引。注意 s...

資料庫系統概論第五章習題

1.什麼是資料庫完整性?與安全性的區別和區別。答 資料庫完整性是指資料的正確性和相容性。完整性是為了防止資料庫中存在不正確的資料,安全性是為了保護資料庫防止惡意破 壞和非法訪問 前者防範物件是不合語義資料,後者是非法使用者和非法操作。2.完整性約束條件 主體完整性 主屬性不取空值且唯一 違約處理 拒...