答案 0 :(得分:1)
来自 candidate key 的定义:
在数据库的关系模型中,关系的候选键是 这种关系的最小超级钥匙;也就是说,一组属性 这样:
- 该关系没有两个不同的元组(即通用数据库语言中的行或记录),并且具有相同的值 属性(这意味着属性集是超级密钥)
- 这些属性没有适当的子集(1)成立(这意味着该集合是最小的)。
醇>
鉴于F.D的左侧只有C
和D
,这意味着每个密钥都必须拥有C
和D
。
闭包(CD)并不等于所有属性,但是,从F.D& s中我们可以清楚地看到:
闭包(CDA)=闭包(CDB)=闭包(CDE)=所有属性的集合,这意味着所有三个CDA
,CDB
和CDE
都是候选键。< / p>
现在让我们按照这个stanford lecture中给出的BCNF分解算法。
给定模式R。
- 计算R。
的键- 重复直到所有关系都在BCNF中。
醇>
- 选择任何R&#39;具有F.D A - > B违反了BCNF。
- 分解R&#39;进入R1(A,B)和R2(A,其余属性)。
- 为R1和R2计算F.D&。
- 计算R1和R2的密钥。
A-->B
违反了BCNF,因为A不是关键,所以我们将R分解为
R1(A,C,D,E)和R2(A,B)。
R2现在在BCNF中,但R1不是由于F.D ED-->A
,因为ED
不是关键。所以我们进一步将R1分解为:
R3(C,D,E)和R4(A,E,D),现在显然R3和R4都在BCNF中。