**:
首先來看候選碼的定義:若關係中的某一屬性組的值能唯一地標識乙個元組,則稱該屬性組為候選碼。
若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的閉包的步驟如下 第一步 設...