将以下关系分解为BCNF
答
从candidate key定义:
在数据库的关系模型,关系的候选键是 该关系的最小的超密钥;即,一组属性 使得:这意味着该组
- 的关系不具有两个不同的元组(即行或在公共的数据库语言记录)具有相同的值,这些 属性(属性是一个超级键)
- 没有这些属性的适当子集(1)持有(这意味着该集合是最小的)。
鉴于F.D唯一C
和D
来到左侧,这意味着每一个关键必须具备C
和D
。
闭合(CD)不等于所有的属性,但是,从FD的,我们可以清楚地看到:
关闭(CDA)=关闭(CDB)=关闭(CDE)=设置所有的属性,这意味着所有三个CDA
,CDB
和CDE
都是候选键。
现在让我们按照此stanford lecture中给出的BCNF分解算法。
给出模式R.
- 计算键R.
- 重复,直到所有的关系都属于BCNF。
- 选择具有违反BCNF的F.D A→B的任何R'。
- 将R'分解为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和R4均在BCNF中。(R3,R4,E,D)。
+1
从什么来源采取这些引文?您需要在答案中包含一个*链接*以及作者姓名。请参阅:https://*.com/help/referencing –
请说明你能做些什么。 Google'stackexchange homework'&阅读[问]。我们不是来做你的功课。 – philipxy