根據函式閉包,求候選碼

2021-09-24 22:35:26 字數 1113 閱讀 8150

**: 

首先來看候選碼的定義:若關係中的某一屬性組的值能唯一地標識乙個元組,則稱該屬性組為候選碼。

若w是候選鍵,則必須滿足兩個條件:w的閉包是u;w沒有冗餘。

設關係模式r中u=abc.......等n個屬性,u中的屬性在fd中有四種範圍:

求候選碼的簡單方法方法: 

(1)如果有屬性不在函式依賴集**現,那麼它必須包含在候選碼中;

(2)如果有屬性不在函式依賴集中任何函式依賴的右邊出現,那麼它必須包含在候選碼中;

(3)如果有屬性只在函式依賴集的左邊出現,則該屬性一定包含在候選碼中。

(4)如果有屬性或屬性組能唯一標識元組,則它就是候選碼;

演算法:按以下步驟求候選鍵:

1.只在fd右部出現的屬性,不屬於候選碼;

2.只在fd左部出現的屬性,一定存在於某候選碼當中;

3.外部屬性一定存在於任何候選碼當中;

4.其他屬性逐個與2,3的屬性組合,求屬性閉包,直至x的閉包等於u,若等於u,則x為候選碼。

例1:r,u=(a,b,c,d,e,g),f=,求候選碼。

因g只在右邊出現,所以g一定不屬於候選碼;而b,d只在左邊出現,所以b,d一定屬於候選碼;bd的閉包還是bd,則對bd進行組合,除了g以外,bd可以跟a,c,e進行組合

先看abd

abd本身自包abd,而ab-->c,cd-->e,a-->g,所以abd的閉包為abdceg=u

再看bdc

cd-->e,e-->a,a-->g,bdc本身自包,所以bdc的閉包為bdceag=u

最後看bde

e-->a,a-->g,ab-->c,bde本身自包,所以bde的閉包為bdeagc=u

因為(abd)、(bcd)、(bde)的閉包都是abcdeg所以本問題的候選碼有3個分別是abc、bcd和bde

例2:r,u=(a,b,c),f=,求候選碼。

因為a只出現在左邊,所以a一定是候選鍵。a的閉包還是a,則對a進行組合,可以和b,c進行組合。

首先看ab,ab本身自包ab,而ab-->c,所以ab的閉包是abc=u。

再看ac,ac本身自包ac,而c-->b,所以ac的閉包是abc=u。

因為ab,ac的閉包都是abc,也就是u,所以候選鍵是ab,ac。

資料庫學習筆記 求閉包和候選碼

例1 設有關係模式r a,b,c,d,e f 求 ab 求解方法 解 第一次 第二次 第三次 第四次 ab abcde 對於給定的關係r a1,a2,an 和函式依賴集f,可將其屬性分為4類 例2 設有關係模式cthrsg c,t,h,r,s,g 滿足下列函式依賴 c t 每門課程僅有一位教師講授 ...

資料庫閉包和候選碼求解方法

閉包概念 以下是寫的比較科學規範的閉包求解方法,設x和y均為關係r的屬性集的子集,f是r上的函式依賴集,若對r的任一屬性集b,一旦x b,必有b y,且對r的任一滿足以上條件的屬性集y1 必有y y1,此時稱y為屬性集x在函式依賴集f下的閉包,記作x 計算關係r的屬性集x的閉包的步驟如下 第一步 設...

資料庫閉包和候選碼求解方法

閉包概念 以下是寫的比較科學規範的閉包求解方法,設x和y均為關係r的屬性集的子集,f是r上的函式依賴集,若對r的任一屬性集b,一旦x b,必有b y,且對r的任一滿足以上條件的屬性集y1 必有y y1,此時稱y為屬性集x在函式依賴集f下的閉包,記作x 計算關係r的屬性集x的閉包的步驟如下 第一步 設...