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