資料庫原理之候選碼的求解

2021-10-04 19:20:21 字數 1416 閱讀 8344

r(a1,a2,…,an)和函式依賴集f,屬性分4類

l類:僅出現在f的函式依賴左部的屬性

r類:僅出現在f的函式依賴右部的屬性

n類:在f的函式依賴兩邊均未出現的屬性

lr類:在f的函式依賴兩邊均出現的屬性

對於給定的關係模式r及其函式依賴集f,

1.如果x(x∈r)是l類屬性,則x必為任一候選碼的成員。更進一步,如果x關於f的閉包包含了r的全部屬性,則x必為r的唯一候選碼。(由此可見一些題目的候選碼並不唯一)

2.如果x是r類屬性,則x不在任何候選碼中。

3.如果x是n類屬性,則x必定在任一候選碼中。正因為x是n類屬性在f的函式依賴兩邊都不出現,所以n類和l類組成的函式集關於f的閉包才能包含r的全部屬性,即如果n類和l類組成的函式集關於f的閉包包含r的全部屬性,則x必為唯一候選碼。

(1).找出l類屬性和n類屬性 例如:ab

然後判斷ab關於f的閉包是否包含r的全部屬性,若包含,則ab必為唯一的候選碼,後面的都不用看了

(2).找出lr類屬性 例如 c,d

(3).將1和2中找到的屬性進行組合,例如 abc和abd

然後分別求其閉包,如果包含r的全部屬性,即為候選碼。如果都包含的話,則都是候選碼。(也就是候選碼不唯一)

(1).r(x,y,z) f=(xy→z)

首先找出l類屬性xy,無n類屬性,

求xy關於f的閉包為xyz,包含r的全部屬性,

則r的候選碼為xy

(2).r(x,y,z) f=(y→z,xz→y)

l類屬性:x,無n類屬性,

求x關於f的閉包為x,不包含r的全部屬性,

繼續找lr類屬性:y、z

xy關於f的閉包為xyz,包含r的全部屬性

xz關於f的閉包為xyz,包含r的全部屬性

所以r的候選碼為xy和xz.(r中所有屬性x,y,z都是主屬性)

(3).r(x,y,z) f=(y→z,y→x,x→yz)

無l類屬性,無n類屬性,

繼續找lr類屬性:x、y、z

x關於f的閉包為xyz,包含r的全部屬性

y關於f的閉包為xyz,包含r的全部屬性

z關於f的閉包為z,不包含r的全部屬性

所以r的候選碼為x和y.

(4).r(x,y,z) f=(x→y,x→z)

l類屬性:x,無n類屬性,

x關於f的閉包為xyz,包含r的全部屬性

所以r的候選碼為x.

(5).r(w,x,y,z) f=(x→z,wx→y)

l類屬性:wx,無n類屬性,

wx關於f的閉包為wxyz,包含r的全部屬性

所以r的候選碼為wx.

(6).r(w,x,y,z) f=(x→z,x→y)

l類屬性:x,n類屬性:w,

wx關於f的閉包為wxyz,包含r的全部屬性

所以r的候選碼為wx.

資料庫中候選碼的求解

若p為r上的乙個屬性集,如果u完全依賴於p,則稱p為m上的候選碼。解釋一下上面那句話的意思 例如 關係r a,b,c 滿足函式依賴m a b,a c,b ac 如果p的閉包為u的話,那麼p就為u上的候選鍵 其中u為r中所有的元素即abc 在上面例題中的r a,b,c 中,a的閉包為abc,a就為r上...

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

閉包概念 以下是寫的比較科學規範的閉包求解方法,設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的閉包的步驟如下 第一步 設...