我有这种关系:
wiki(url,title,abstract,link,category_id,category,heading,heading_pos)
FD是:
F = {
url → title, abstract
category_id → category
url, heading_pos → heading
}
我需要找到键并分解为一组Boyce-Codd归一化关系。我试图阅读相关和类似的问题,但我无法理解给定的答案。希望有人能帮我完成这项任务
答案 0 :(得分:0)
假设' wiki' 为关系R
,其属性 url,title,.. heading_pos 为 A, B,...... H 。
我们有,
R = {A,B,C,D,E,F,G,H}
FD' s = {A-> BC,E-> F,AH-> G}
这里的关键是 ADEH 。
我们可以先将关系R
转换为3NF然后转换为BCNF。
要将关系R
和一组功能依赖关系(FD's
)转换为3NF
,您可以使用 伯恩斯坦的综合 即可。申请伯恩斯坦的综合 -
FD's
是最小化 FD
设为自己的子架构。 例如 :
首先我们检查FD's
是否为最小封面(单身右手边,没有无关的左侧属性,没有冗余的FD )
第二我们使每个FD
成为自己的子架构。所以现在我们有 - (每个关系的键都是粗体)
[R <子> 1 子> = {的 A 下,B}
[R <子> 2 子> = {的 A 强>,C}
[R <子> 3 子> = {<强>电子下,F}
[R <子> 4 子> = {的 A,H 强>,G}
第三我们将所有子模式与相同的LHS组合在一起。所以现在我们有 -
S 1 = { A ,B,C}
S 2 = { E ,F}
S 3 = { A,H ,G}
由于上述分解关系中没有一个包含 R 的键,因此我们需要创建一个包含 R 键形式的属性的附加关系模式。这是为了确保保留依赖关系的无损连接分解。所以我们添加 -
S 4 = { A,D,E,H }
这是 3NF 。现在检查 BCNF ,我们检查是否有任何这些关系(S 1 ,S 2 ,S 3 , S 4 )违反 BCNF 的条件(即每个功能依赖X->Y
左侧({{ 1}})必须 超级键 )。在这种情况下,这些都不会违反 BCNF ,因此它也会被分解为 BCNF 。