函式依賴 多值依賴

2021-09-12 11:58:20 字數 3983 閱讀 3762

一、函式依賴(functional dependency)的概念

函式依賴是資料依賴的一種,它反映屬性或屬性組之間相依存,互相制約的關係,即反映現實世界的約束關係。

設r(u)是屬性u上的乙個關係模式,x和y均為u=的子集,r為r的任一關係,如果對於r中的任意兩個元組u,v,只要有u[x]=v[x],就有u[y]=v[y],則稱x函式決定y,或稱y函式依賴於x,記為x→y。

簡單的說就是在屬性u上有兩個子集屬性x,y,由x屬性可以獲得乙個元組,而x屬性對應的y屬性獲得相同的元組

例:(sno-學生id,tno-教師id,cno-課程id,sname-學生姓名,tname-教師姓名,cname-課程名稱,grade-成績)

1、sno→sname, cno→cname,(sno,cno)→grade √

2、sname→sno, tno→cno, sno→tname × (不存在一一對應關係)

函式依賴是語義範疇 

1、語義:資料所反映的現實世界事物本質聯絡

2、根據語義來確定函式依賴性的存在與否

3、函式依賴反映屬性之間的一般規律,必須在關係模式下的任乙個關係r中都滿足約束條件。

屬性間的聯絡決定函式依賴關係 

設x、y均是u的子集

1、x和y間聯絡是1:1,則x→y,y→x。(相互依賴,可記作x←→y)

2、x和y間聯絡是m:1(m), 則x→y。

3、x和y間聯絡是m:n(m,n),則x、y間不存在函式依賴。

完全函式依賴和部分函式依賴 

1、函式依賴分為完全函式依賴和部分函式依賴

2、定義:

在r(u)中,如果x→y,並且對於x的任何真子集x』都有x』-/->y』,則稱y完全依賴於x,記作x→y;否則,如果x→y,且x中存在乙個真子集x』,使得x』→y成立,則稱y部分依賴於x。

例:學生id,學生姓名,所修課程id,課程名稱,成績

(學生id,所修課程id)→成績

成績既不能單獨依賴於學生id,也不能單獨依賴於所修課程id,因此成績完全函式依賴於關鍵字。

(學生id,所修課程id)→學生姓名

學生id→學生姓名

學生姓名可以依賴於關鍵字的乙個主屬性——學生id,因此學生姓名部分函式依賴於(學生id,所修課程id)。

平凡函式依賴和非平凡函式依賴 

設x,y均為某關係上的屬性集,且x→y

1)若y包含於x,則稱x→y為:平凡函式依賴;

2)若y不包含於x,則稱x→y為:非平凡函式依賴。

y包含於x內,w於x相交,與y無直接交集。

則:x→y為平凡函式依賴

x→w, w→y為非平凡函式依賴

函式依賴的邏輯蘊涵

設有關係模式r(u)及其函式依賴集f, 如果對於r的任乙個滿足f的關係r函式依賴x→y都成立,

則稱f邏輯蘊涵x→y,或稱x→y可以由f推出。

例4.3.1:

關係模式 r=(a,b,c),函式依賴集f=, f邏輯蘊涵a→c。

函式依賴的性質

若u為關係模式r的屬性全集,f為u上的一組函式依賴,設x、y、z、w均為r的子集,對r(u,f)有:

f1(自反性):若x≥y(表x包含y),則x→y為f所蘊涵;(f1′:x→x)

f2(增廣性): 若x→y為f所蘊涵,則xz→yz為f所蘊涵;(f2′:xz→y)

f3(傳遞性): 若x→y,y→z為f所蘊涵,則x→z為f所蘊涵;

f4(偽增性):若x→y,w≥z(表w包含z)為f所蘊涵,則xw→yz為f所蘊涵;

f5(偽傳性): 若x→y,yw→z為f所蘊涵, 則xw→z為f所蘊涵;

f6(合成性): 若x→y,x→z為f所蘊涵,則x→yz為f所蘊涵;

f7(分解性): 若x→y,z≤y (表z包含於y)為f所蘊涵,則x→z為f所蘊涵。

函式依賴推理規則f1∽f7都是正確的。

多值依賴的定義:

設r(u)是乙個屬性集合u上的乙個關係模式,x, y, 和z是u的子集,並且z=u-x-y,多值依賴x->->y成立當且僅當對r的任乙個關係r,r在(x,z)上的每個值對應一組y的值,這組值僅僅決定於x值而與z值無關。

若x->->y,而z=空集,則稱x->->y為平凡的多值依賴。否則,稱x->->y為非平凡的多值依賴。

平凡多值依賴就是,屬性集合中分為兩個真子集,每乙個x對應一組y的取值

可以看出,如果把上面的一組改為乙個,那麼多值依賴就變成了函式依賴。當然乙個值組成的組也是組,所以說,函式依賴是多值依賴的特殊情況。

如下表:

課程c                                   教師t                              參考書b

數學                                      鄧軍                                數學分析

數學                                      鄧軍                                高等代數

數學                                      鄧軍                                微分方程

表中,u = c+t+b,(c,t)確定一組b,但是這組b其實與t無關,僅由c確定,所以(c,t)->->b。又因為t不是空集,所以(c,t)->->b為非平凡多值依賴。

要想消除多隻依賴,可以分解為:(c,t), (c,b)及

表1:課程c                  教師t

數學                     鄧軍

表2:課程c                    參考書b

數學                      數學分析

數學                      高等代數

數學                      微分方程

對於r中的每個非平凡多值依賴x->->y(y不屬於x),x都含有候選碼,則r屬於4nf。

分析:對於每乙個非平凡多值依賴x->->y,x若含有候選碼,也就是x->y,所以4nf所允許的非平凡多值依賴是函式依賴。

多值依賴的性質:

若 x->->y , 則 x->->z  多值依賴對稱性

若x->y.則x->->y   說明函式依賴是多值依賴的特殊情況,當x->y的時候,對於每乙個x都有乙個y與之對應,那麼對於每一對x,z都有一組y與之對應

設屬性值之間有包含關係 xy包含於w包含於u 那麼如果r(u)上有x->->y,那麼在r(w)上一世成立的

若x->->y 在r(u)上成立,且y』 包含於y,不能斷言 x->->y』在r(u)上成立(注意和上一條性質不同) (因為多值依賴中的定義中涉及了u中除了x,y之外的其餘屬性z,因此換成y』後就需要涉及z』 = u-x-y』 比之前確定x->->y的時候屬性列多,就不一定了)

函式的概念和這個概念有相似的地方

學習函式的概念前,先引入的概念是對映,一對一對映的關係就被稱為函式。簡單的例子

f(x, y, z)= x2+4y+z

對於任何一確定的(x,y,z),都有乙個確定的f(x,y,z)與之對應。這種概念很容易推廣到關聯式資料庫模式上,r(u),u=,對於任何乙個元組,只要(x,y,z)確定了,就能確定整個元組,也就是存在k = f(x,y,z)的關係,只不過這裡的f不能用公式表達,而只能是語義上的含義。

再到後來,我們接觸了類似y2=x的方程,也就是

f(x,y) = +-sqrt(x)

顯然,此時對於乙個確定的x值,f(x)可能有兩個值與之對應,從嚴格的「函式」定義出發,這不能算是函式。但是為了統一概念,被稱作「多值函式」。需要注意的是這裡雖然x不能完全確定f(x,y)的值,但是能確定f(x,y)的取值範圍(所有可能的值的組)。

關係模式中的多值依賴也從概念上與此非常類似,給定元組中的一些屬性,可確定另外的屬性可能的取值,也就是說,給定的屬性值能確定幾個元組,而不是唯一的元組。

還是上面的多值函式,可見f(x,y)的值僅與x有關 ,而與y無關。這在關係模式上就叫做平凡多值依賴。平凡多值依賴是4nf中可以存在的,而非平凡且非函式多值依賴不能在4nf中存在。

多值依賴 模式分解 (學習感想)

模式分解,是關係規範化的手段,而關係規範化的實質就是概念的單一化,一事一地,這裡書上講得挺好的 從而避免或減少增刪改的異常 繁瑣 以下統稱異常 對於乙個只有函式依賴的模式而言,我們把它分解到bcnf這個層次,那就徹底解決了增刪改的異常,如 學生s,系sd,宿舍d 有s sd,sd d,當我們把它分解...

直接依賴,間接依賴,可選依賴,排除依賴,依賴衝突

在本工程pom檔案中配置的依賴,稱為本工程的直接依賴。本工程pom配置了依賴a,a又依賴b,則本工程也依賴b,b為本工程的間接依賴。在依賴中配置true false 是否向下傳遞,如果配置為true,則別人依賴了本專案,被配置的不會在別人的專案中依賴到。所包含座標 排除依賴包中所包含的依賴關係 不需...

函式依賴 FD

函式依賴 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的乙個函式依賴。其實函...