函式依賴 FD

2021-04-07 04:12:11 字數 2933 閱讀 3321

函式依賴(fd)

1、函式依賴的定義(領會):設有關係模式r(a1,a2,...an)或簡記為r(u),x,y是u的子集,r是

r的任一具體關係,如果對r的任意兩個元組t1,t2,由t1[x]=t2[x]導致t1[y]=t2[y],則稱x函式決

定y,或y函式依賴於x,記為x→y。x→y為模式r的乙個函式依賴。

其實函式依賴就和數學裡函式概念差不多,只不過在這裡不是變數而是屬性列。比

如關係表裡如果有身份證號和姓名兩列,身份證號不會有相同的(假身份證和公安局失誤造成的同

號不算),知道身份證號肯定就能知道這個人的姓名了,所以就可以說有函式依賴:身份證號→姓

名 成立。

pay attention to:

a、對任一具體關係均要滿足條件。

比如表裡有姓名和出生年月兩個屬性,現在沒有

重名的,你可以說知道姓名就能知道出生年月,但萬一增加記錄時,來了個與已有的人重名的

呢?除非給這是在給孩子上戶口,不允許重名,否則這時光知道姓名就不夠了。根據這一點,我

們可以依據特例否定函式依賴。

b、函式依賴只能根據實際情況判斷,不可證明

2、函式依賴的邏輯蘊涵(識記)

設f是關係模式r的乙個函式依賴集,x,y是r的屬性子集,如果從f中的函式依賴能夠推出x→y,則

稱f邏輯蘊涵x→y,記為f│=x→y.

就是說,乙個關係模式可能有多個函式依賴形成函式依賴集,現在有乙個新的函式

依賴不在函式依賴集裡,但能從集合裡根據一定的規則(就是後面的armstrong規則)推導出來,就

說那個集合邏輯蘊涵這個新的函式依賴。

比如,「根據身份證號能確定出生年月和性別」是已知的函式依賴,根據已知和後面的知識能推

匯出「根據身份證號能確定出生年月」,就說「根據身份證號能確定出生年月和性別」邏輯蘊涵

「根據身份證號能確定出生年月」。

而函式依賴的閉包f+是指被f邏輯蘊涵的函式依賴的全體構成的集合。

就是說根據f能推導出的全部函式依賴(至於怎麼推導和如何保證沒有遺漏都是以後

的事)。

3、鍵和fd的關係(領會)

鍵是唯一標識實體的屬性集。

設關係模式r(a1,a2...an),f是r上的函式依賴集,x是r的乙個子集,

(1)x→a1a2...an∈f+  

(2)不存在x的真子集y,使得y也能決定唯一的乙個元組,則x就是r的乙個候選鍵。

在函式依賴概念的基礎上,再加上能確定全部屬性和沒有富餘的部分。比如:知道

身份證號就能知道這個人的姓名,但是不能確定婚否,所有假如乙個關係模式有(身份證號、姓

名、婚否)這些屬性時,身份證號不能叫侯選鍵。還有知道身份證號和出生年月肯定能知道這個

人的姓名,但出生年月在這裡顯得多餘,以(身份證號,出生年月)也不能叫侯選鍵。

包含在任何乙個候選鍵中的屬性稱為主屬性,不包含在任何鍵中的屬性為非主屬性(非鍵屬性),

注意主屬性應當包含在候選鍵中。

這沒什麼好理解的,就是概念了。

4、函式依賴(fd)的推理規則(簡單應用)

armstrong(胳膊壯?)推理規則

設有關係模式r(u),x,y,z,w均是u的子集,f是r上只涉及到u中屬性的函式依賴集,推理規則

如下:自反律:如果yxu,則x→y在r上成立。 

增廣律:如果x→y為f所蘊涵,z包含於u,則xz→yz在r上成立。(xz表示x∪z,下同) 

傳遞律:如果x→y和y→z在r上成立,則x→z在r上成立。

合併律:如果x→y和x→z成立,那麼x→yz成立。 

偽傳遞律:如果x→y和wy→z成立,那麼wx→z成立。 

分解律:如果x→y和z包含於y成立,那麼x→z成立。 

其實這些東西都不難理解,記住就行了。書上還有引理4.1:armstrong是正確的(不

正確放這幹什麼?)和定理4.1:x→y的充要條件是y包含於x+(閉包就是這麼定義的嘛!),結論

都沒什麼好說的,證明過程就算了吧。

5、函式依賴推理規則的完備性(識記)

armstrong函式依賴推理規則系統是完備的。

屬性集x+ 中的每個屬性a,都有x→a被f邏輯蘊涵,即x+是所有由f邏輯蘊含x→a的屬性a的集

合。 f+是所有利用amstrong推理規則從f匯出的函式依賴的集合 

道理很簡單,到這時,邏輯蘊涵、armstrong規則、閉包這些概念應該有個整體的認

識:如果a邏輯蘊涵b,b一定在a的閉包中;a的閉包是由a根據armstrong能推導出的所有函式依賴。

6、閉包的計算(識記)

已知函式依賴集合f,如果知道x+,就能知道x→y是否在f+中,所以,要會求x+,具體

求法是演算法4.1,很簡單的,看看例4.3就行,就是乙個乙個往後推,推到推不動為止。

定理4.3說那個演算法是正確的,權且當成廢話吧:)

7、函式依賴集的等價和覆蓋(識記)

在關係模式r(u)上的兩個函式依賴集f和g,如果滿足f+=g+,則稱f和g是等價的,稱f和g等價也稱

f覆蓋g或g覆蓋f。

每個函式依賴集f都可以被乙個右部只有單屬性的函式依賴集g所覆蓋。

就是把合併律倒過來。

如果函式依賴集合f滿足: 

(1)f中每乙個函式依賴的右部都是單屬性; 

(2)f中的任一函式依賴x→a,其f-是不等價的; 

(3)f中的任一函式依賴x→a,z為x的子集。(f-)∪與f不等價。 

則稱f為最小函式依賴集合。 

如果函式依賴集f和g等價,並且g是最小集,那麼稱g是f的乙個最小覆蓋。

定理4.5的證明是最小覆蓋的求法

第一步:函式依賴右邊全轉換為單屬性

第二步:

while(對每個函式依賴的左邊進行檢查)

while(對當前函式依賴左邊的每個屬性進行檢查)

if(左邊-當前屬性)的閉包包含右邊

當前函式依賴的左邊=當前函式依賴的左邊-當前屬性;

第三步:

while(對每個函式依賴進行檢查)

資料庫系統中如何運用函式依賴FD推斷出關係集合的鍵

1 鍵中的屬性函式決定了關係集合中所有其他屬性 2 鍵的真子集不能函式決定關係集合中所有其他的屬性 就是說,鍵必須是最小的,不是唯一的 以上是我在關係型別資料庫系統學習中的總結。關於鍵的學術一點的定義可以看下面這篇部落格 3 包含 鍵 的集合就是 超鍵 了,可見超鍵沒有必要是最小的,也不是唯一的。1...

函式依賴 多值依賴

一 函式依賴 functional dependency 的概念 函式依賴是資料依賴的一種,它反映屬性或屬性組之間相依存,互相制約的關係,即反映現實世界的約束關係。設r u 是屬性u上的乙個關係模式,x和y均為u 的子集,r為r的任一關係,如果對於r中的任意兩個元組u,v,只要有u x v x 就有...

python中的fd函式 python 內建函式

內建函式 open 檔案操作 print input dir 資料 變數 顯示這個資料 變數能呼叫的方法 sum 求和 abs 求絕對值 max min 求最大值最小值 eg 列表 ret max 1,23,6 返回最大值 lst 1,2 3,4 1,9 ret max lst,key lambda...