1. 程式人生 > >資料庫第十一次作業

資料庫第十一次作業

 

3.1.3

  1. 當只有A1為鍵時,所有包含A1的集合都是超鍵,共有2^(n-1)個

 

  1. A1,A2為鍵,超鍵有2^n - 2^(n-2)   即全集減去不包含{A1,A2}的集合

 

  1. {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)

 

  1. {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

  1. 如下圖所示

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

  1.  

考慮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