資料庫候選碼和最小依賴集的求解

2021-09-20 21:51:12 字數 1456 閱讀 5632

——我們在書本上或者網上都是可以查詢到完整的概念以及定義,但是不了解的朋友就算是看到定義也看不懂,所以這裡只講做題方法,等學會了之後可以根據做題方法反向理解概念以及定義

關係模式

ru=(a,b,c,d,e,g),

f=解題步驟

第一步:

f如下:

ab–>c

cd–>e

e–>a

a–>g

第二步:

l(左邊有右邊沒有的元素):bd

r(右邊有左邊沒有的元素):g

n(兩邊都沒有的元素):∅

lr:(兩邊都有的元素):ace

第三步:

合併l和n的元素為x

則有x:b,d

有首先求x的閉包:(bd)+=bd(不是全集u)

則從lr中依次取乙個元素到x中,先取a,則有(abd)

第一次求閉包(abd)+=abdgc(元素順序無關)

第二次求閉包(abcdg)+=abcdge(全集u)

所以a,b,d是乙個候選碼

再從lr中取c加入x有x=(bcd)

第一次求閉包(bcd)+=bcde

第二次求閉包( bcde)+=bcdea

第三次求閉包(abcde)+=abcdeg(全集u)

所以abd是乙個候選碼

再從lr中取e加入x有x=(bde)

第一次求閉包(bde)+=bdea

第二次求閉包( abde)+=abdecg(全集u)

所以ebd是乙個候選碼

因為(abd)(bcd)(bde)的閉包都是u(abcdeg),所以本題有三個候選碼分別是(abd)(bcd)(bde)。

f=解題步驟

第一步:

abd->e

ab->g

b->f

c->j

cj->i

g->h

第二步:

1.將f中的所有依賴右邊化為單一元素(左邊不可拆分)

此題f=;已經滿足

備註:如果有ab->eg,化為單一元素則為ab->e,ab->g

2.去掉f中的所有依賴左邊的冗餘屬性.

做法是屬性中去掉其中的乙個,看看是否依然可以推導

此題:abd->e去掉a,則(bd)+不含e,故不能去掉,同理b,d都不是冗餘屬性

ab->g,也沒有

對於cj->i,因為c->j,然後cj->i所以j是冗餘的,cj->i將成為c->i

f=;3.去掉f中所有冗餘依賴關係.

做法為從f中去掉某關係,如去掉(x->y),然後在f中求x+,如果y在x+中,則表明x->是多餘的.需要去掉.

此題如果f去掉abd->e,f將等於,而(abd)+=,其中不包含e所以不是多餘的.

同理(ab)+=也不包含g,故不是多餘的.

b+=不多餘,c+=不多餘.

c->i,g->h不多餘.

故都不能去掉.

所以所求最小函式依賴集為 f=.

求候選碼和最小函式依賴集

1 求候選碼 設關係模式r為 boisqd f 關係中l類 只出現在左邊 l ib 關係中r類 只出現在右邊 r dq 關係中lr類 兩邊都有 lr s 關係中nlr類 兩邊都沒有 nlr o nlr類o一定是侯選碼的一部分。然後看l類能不能推r類並滿足u boisqd i s s d 所以i d ...

資料庫中候選碼的求解

若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上...

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

r a1,a2,an 和函式依賴集f,屬性分4類 l類 僅出現在f的函式依賴左部的屬性 r類 僅出現在f的函式依賴右部的屬性 n類 在f的函式依賴兩邊均未出現的屬性 lr類 在f的函式依賴兩邊均出現的屬性 對於給定的關係模式r及其函式依賴集f,1.如果x x r 是l類屬性,則x必為任一候選碼的成員...