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的閉包的步驟如下 第一步 設...