資料庫第十一次作業
3.1.3
- 當只有A1為鍵時,所有包含A1的集合都是超鍵,共有2^(n-1)個
- A1,A2為鍵,超鍵有2^n - 2^(n-2) 即全集減去不包含{A1,A2}的集合
- {A1,A2},{A3,A4}為鍵,有2^(n-1)-2^(n-4)
考慮{A1,A2},有2^(n-2),則共有2*2^(n-2)=2^(n-1)個,但在計算{A3,A4}時重複計算了包含
{A1,A2,A3,A4}的情況,所以需要減去2^(n-4),故答案為2^(n-1)-2^(n-4)
- {A1,A2},{A1,A3}為鍵,有2^(n-1)-2^(n-3)
考慮{A1,A2},有2^(n-2),則共有2*2^(n-2)=2^(n-1)個,但在計算{A1,A3}時重複計算了包含
{A1,A2,A3}的情況,所以需要減去2^(n-3),故答案為2^(n-1)-2^(n-3)
3.2.1
A、
對於(a),考慮所有15個非空屬性集的閉包。
對於單個屬性,我們有A+=A,B+=B,C+=ACD和D+=AD。
在左邊只有一個屬性的新依賴項是C->A。
現在考慮屬性對:
AB+=ABCD,我們得到了新的依賴關係AB->D.
AC+=ACD,AC->D是非平凡的。
AD+=AD,所以沒有什麼新東西。
BC+=ABCD,我們得到BC->A,BC->D.
BD+=ABCD,推出BD->A和BD->C.
CD+=ACD,推出CD->A。
對於屬性的三元組,ACD+=ACD,但是其他集合的閉包都是ABCD。因此,我們得到了新的依賴關係ABC->D、ABD->C和BCD->A。
因為ABCD+=ABCD,所以沒有新的依賴項。
上述11個新相關性的集合為:C->A,AB->D,AC->D,BC->A,BC->D,BD->A,BD->C,CD->A,ABC->D,ABD->C和BCD->A。
B、
對於(b),通過對上面閉包的分析,我們發現AB、BC和BD是關鍵。所有其他集合要麼沒有ABCD作為閉包,要麼包含這三組中的一個。
C、
對於(c),超鍵都是包含這三個鍵中的一個的。也就是說,不是鍵的超鍵必須包含B和多個A、C和D中的一個。因此,超鍵是ABC、ABD、BCD和ABCD。
3.2.4
- 如下圖所示
A |
B |
1 |
小明 |
2 |
小明 |
其中A表示學號,B表示姓名,由於有同名的人存在,故A->B,但B->A不成立
B、
A |
B |
C |
1 |
男 |
小明 |
2 |
男 |
小明 |
其中A表示學號,B表示性別,C表示姓名,由於性別不能決定名字,故AB->C,A->C,但B->C不成立
C、
A |
B |
C |
1 |
1 |
1 |
2 |
1 |
2 |
1 |
2 |
3 |
其中A表示經度,B表示維度,由於只依靠經度或者維度無法在地圖上確定一個點
故,AB->C,但A->C或者B->C不成立
3.2.10
考慮S{A,B,C},故只有六種情況需要討論
{A}+=A,{B}+=B,{C}+=C
{AB}+=ABD,{AC}+=ABCDE,{BC}+=ABCDE
忽略D,E 得AC->B,BC->A
B、
{A}+=AD,{B}+=B,{C}+=C
{AB}+=ABDE,{AC}+=ABCDE,{BC}+=BC
忽略D,E 得AC->B
C、
{A}+=A,{B}+=B,{C}+=C
{AB}+=ABD,{AC}+=ABCDE,{BC}+=ABCDE
忽略D,E 得AC->B,BC->A
D、
{A}+=ABCDE,{B}+=ABCDE,{C}+=ABCDE
{AB}+=ABCDE,{AC}+=ABCDE,{BC}+=ABCDE
忽略D,E 得A->B,B->C,C->A