關係模式候選鍵求取的演算法

2022-04-29 13:48:11 字數 1143 閱讀 9843

在學習資料庫的時候,經常要碰到候選鍵的求取,但是一開始的時候,根本搞不清楚怎麼去求,最近看了一些文章和資料,終於搞明白了。

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

若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個分別是abd、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。

以上舉例說明了候選鍵的求取演算法,如有什麼不足之處,請大家批評指正。

求關係模式的候選碼

求閉包的方法 理解定義 閉包就是由乙個屬性直接或間接推導出的所有屬性的集合 例項 有關係模式r a,b,c,d,e,f f是r上的函式依賴集合,f 則的閉包是?由b c得出此時閉包為abc,所以c在集合中,由c de得出此時閉包為abcde,此時依賴關係已全部用齊 ab的閉包就為abcde。求關係模...

理解超鍵 候選鍵 主鍵概念及關係

超鍵 super key 在關係中能唯一標識元組的屬性集稱為關係模式的超鍵 碼。候選鍵 candidate key 不含有多餘屬性的超鍵稱為候選鍵,即其真子集不再是超鍵。主鍵 primary key 使用者選作元組標識的乙個候選鍵稱為主鍵,是候選鍵之一。候選鍵是超鍵的子集,主鍵是候選鍵中的乙個。考慮...

關係型資料庫 超鍵 候選鍵 主鍵 外來鍵的區別

1 2 3 4 5 6 7 8 學號 姓名 性別 年齡 系別 專業 20020612 李輝 男 20 計算機 軟體開發 20060613 張明 男 18 計算機 軟體開發 20060614 王小玉 女 19 物理 力學 20060615 李淑華 女 17 生物 動物學 20060616 趙靜 男 2...