——我們在書本上或者網上都是可以查詢到完整的概念以及定義,但是不了解的朋友就算是看到定義也看不懂,所以這裡只講做題方法,等學會了之後可以根據做題方法反向理解概念以及定義
關係模式
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必為任一候選碼的成員...