狂學數據庫之關係模式的設計問題及數據的函數依賴

在這裏插入圖片描述

一. 關係模式的設計問題

1.1 數據依賴

關係數據庫是以關係模型爲基礎的數據庫,它利用關係描述現實世界。一個關係既可用 來描述一個實體及其屬性,也可用來描述實體間的一種聯繫。關係模式是用來定義關係的, 一個關係數據庫包含一組關係,定義這組關係的關係模式的全體就構成了該數據庫的模式。
關係模式的核心問題是數據依賴性.數據依賴是對可能成爲關係模式當前值的那些關係 的約束,是一個關係中屬性(或屬性組)與屬性(或屬性組)之間的相互依賴關係,是客觀 存在着的語義。
數據依賴是通過一個關係中屬性間值的依賴與否體現出數據間的相互關係,它是現實世 界屬性間相互聯繫的抽象 ,是數據內在的性質,是語義的體現。
其中最重要的是函數依賴 (Functional Dependency,FD)和多值依賴(Multivalued Dependency, MVD)。

1.2 數據依賴對關係模式的影響

函數依賴普遍地存在於現實生活中。比如,描述一個學生的關係,可以有學號(Sno)、 姓名(Sname)、所在系(Sdept)等幾個屬性。由於一個學號只對應一個學生,一個學生只在一 個系。因而當“學號”值確定之後,姓名及其所在系的值也就被唯一地確定了。屬性間的這 種依賴關係類似於數學中的函數

理想的模式應當不會發生插入異常,刪除異常,更新異常,數據冗餘應儘可能少.一個關係 模式之所以會產生上述問題,是由存在於模式中的某些數據依賴引起的.規範化理論正是用 來改造關係模式,通過分解關係模式來消除其中不合適的數據依賴,以解決插入異常,刪除 異常,更新異常和數據冗餘問題

二. 數據的函數依賴

2.1 函數依賴

2.1.1 函數依賴的定義

設 R(U)是屬性集 U 上的關係模式,X、Y 是 U 的一個子集。r 是 R(U)中的任意給定的 一個關係。若對於 r 中任意兩個元組 s 和 t,當 s[X]=t[X]時,就有 s[Y]=t[Y],則稱屬性子集 X 函數決定屬性子集 Y 或者稱 Y 函數依賴於 X,否則就稱 X 不函數決定 Y 或者稱 Y 不函 數依賴於 X。

  1. 如果 Y 函數依賴於 X,則記爲 X→Y。
  2. 如果 X→Y,則稱 X 爲決定因素( determinant)。
  3. 如果 X→Y,且 Y→X,則記爲 X←→Y。
  4. 如果 Y 不函數依賴於 X,則記爲 X↛Y。

比如在學習生活中:

學號→姓名(每個學號只能有一個學生姓名) 
學號→系別(每個學號只能在一個系) 
學號→圖書證號(每個學號只能有一個圖書證號) 
系別→系主任(每個系只能由一名系主任

2.1.2 函數依賴的3種基本情形

(1)平凡與非平凡函數依賴

如果 X→Y,但 Y 不是 X 的子集,則稱 X→Y 是非平凡函數依賴(nontrivial functional dependency), 一般都討論非平凡

在關係 SC(Sno,Cno,Grade)中,
非平凡函數依賴:(Sno,Cno) →Grade

如果 X→Y,但 Y 是 X 的子集,則稱 X→Y 是平凡函數依賴(nontrivial functional dependency)

在關係 SC(Sno,Cno,Grade)中
平凡函數依賴:(Sno,Cno) →Sno;(Sno,Cno) →Cno

(2)部分與完全函數依賴
如果 X→Y,但對於 X 中的任意一個真子集 X′,都有 Y 不依賴於 X′,則稱 Y 完全依賴 ,記爲 X F→ Y

在關係 SC(Sno,Cno,Sname,Grade)中,
 完全函數依賴: (Sno,Cno) →Grade

如果X→Y,但Y不完全函數依賴於X,則稱Y對X部分函數依賴,記爲 X P→ Y

在關係 SC(Sno,Cno,Sname,Grade)中,
部分函數依賴:(Sno,Cno) → Sname

(3)傳遞與直接函數依賴

在 R(U)中,如果 X→Y,(Y⊈X),Y↛X,Y→Z,則稱 Z 對 X 傳遞函數依賴。記爲 X 傳遞→ Z。 加上條件 Y↛X,是因爲如果 Y→X,則 X←→Y,實際上是== X 直接→Z==,即直接函數依賴而不是傳遞函數依賴。

指出關係 S (學號,姓名,圖書證號,系別,系主任)中存在的傳遞函數依賴。 
傳遞函數依賴:學號→系別, 系別→系主任,系主任傳遞函數依賴於學號

2.2 函數依賴和碼(關鍵字)的聯繫

碼是在關係模式 R 中,可以唯一標識一個元組的屬性或屬性組。

從函數依賴的角度,給出碼的形式化定義。 設 K 爲關係模式 R<U,F>中的屬性或屬性組,若 K F→U 則 K 爲 R 的候選碼( Candidate Key),也簡稱爲碼(Key)

關係模式的每個候選碼具有下列兩個特性:
(1) 唯一性:在關係模式 R(U)中,K 爲 R 的候選碼,對於關係模式 R 對應的任何一個關 系 r,都不存在候選碼屬性值相同的兩個元組,即候選碼的取值是唯一的。
(2) 最小特性:在關係模式 R(U)中,K 爲 R 的候選碼,在不破壞候選碼的唯一性的情況 下,沒有任何一個屬性能從候選碼裏面刪除。


設 R(A,B,C,D,E),F={AB→CDE,E→ABCD},確定 R 的主屬性及非 主屬性。
解:該關係模式有 2 個候選碼:AB,E。所以 A、B、E 是主屬性,C、D 是非主屬性。

2.3 最小函數依賴集

函數依賴集 F 中包含若干個函數依賴,爲了得到最爲精簡的函數依賴集,應該去掉其中平凡的,無關的函數依賴和多餘的屬性.
條件

(1)F 中的每一個函數依賴的依賴因素(右邊)只含有單個屬性。
(2)F中沒有冗餘的函數依賴,即在F中不存在這樣的函數依賴X→Y,使得F與F-{X→Y} 等價。
(3)每個函數依賴的左邊沒有冗餘的屬性,即 F 中不存在這樣的函數依賴 X→Y,X 有真 子集 W 使得 F-{X→Y}{W→Y}與 F 等價。

設有關係模式 R(U,F),其中 U={A,B,C,D,E,G),F={AD→E,AC→E, BCD→AG,AB→G,A→C},求 F 的最小函數依賴集?

第一步:將 F 中的所有的依賴因素化爲單個屬性。 AD→E,AC→E,BCD→A,BCD→G,AB→G,A→C
第二步:去掉 F 中的冗餘函數依賴。 (
1)由於 F 中去掉 AD→E,得 F1={AC→E,BCD→A,BCD→G,AB→G,A→C}, AD F1+ =ACDE,包含 E,因此該函數依賴是冗餘的,可以從 F 中去掉。
(2)由於 F1中去掉 AC→E,得 F2={ BCD→A,BCD→G,AB→G,A→C},AC F2+ =AC, 不包含 E,因此該函數依賴不是冗餘的,不能從 F1中去掉。
(3) 由 於 F1 中 去 掉 BCD→A , 得 F3={AC→E , BCD→G , AB→G , A→C} , BCD F3+=BCDG,不包含 A,該函數依賴不是冗餘的,不能從 F1中去掉。
(4) 由 於 F1 中 去 掉 BCD→G , 得 F4={AC→E , BCD→A , AB→G , A→C} , BCD F4+ =ABCDEG,包含 G,因此該函數依賴是冗餘的,可以從 F1中去掉。
(5)由於 F4中去掉 AB→G,得 F5={ AC→E,BCD→A,A→C}, **AB F5+**=ABCE,不 包含 G,因此該函數依賴不是冗餘的,不能從 F4中去掉。
(6)由於 F4中去掉 A→C,得 F6={AC→E,BCD→A,AB→G}, A F6+=A,不包含 C, 因此該函數依賴不是冗餘的,不能從 F4中去掉。 因此,F4={AC→E,BCD→A,AB→G,A→C}。
第三步:去掉 F4中的所有決定因素的冗餘屬性。方法是在某個決定因素中去掉其中的 一個屬性,看看是否依然能決定依賴因素。
(1)對於 AC→E,若去掉 A,C 的閉包不含 E,故 A 不是冗餘屬性,不能去掉;若去掉 C,A 的閉包含 E,故 C 是冗餘屬性,可以去掉。
(2)對於 BCD→A,若去掉 B,CD 的閉包不含 A,故 B 不是冗餘屬性,不能去掉;同理 C 和 D 也不是冗餘屬性。
3)對於 AB→G,若去掉 A,B 的閉包不含 G,故 A 不是冗餘屬性,不能去掉,同理 B 也不是冗餘屬性。 因此,Fm={A→E,BCD→A,AB→G,A→C}

結論:
F 與它的最小函數依賴集是等價的。
由於在求解過程中對屬性和函數依賴的 處理順序的關係,
因此每個函數依賴集 F 不一定只有一個最小函數依賴集!

END!!!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章