将关系修改为BCNF

问题描述 投票:0回答:1

我正在学习DBMS和规范化,并且遇到了以下练习。对于以下问题:

Consider the relation R(b,e,s,t,r,o,n,g) with functional dependencies

         b,s -> e,r,o,n
         b -> t
         b -> g
         n -> b  
         o -> r

     (a) identify candidate keys

     (b) identify prime attributes

     (c) state the highest normal form of this table

我认为(a)将是{b,s},因为它们无冗余地标识了所有属性。

((b)也将是{b,s},因为它们组成了(a)的候选关键字。

(c)为1-NF的原因有很多。它不满足2-NF,因为存在部分依赖性n-> b。前述功能依赖性仅取决于b而不取决于s,因此取决于部分依赖性。它不满足3-NF,因为o-> r表示一个非素数属性依赖于另一个非素数属性。 BCNF不满意,因为不满足3-NF。

最后,如果要修改该表直到它位于BCNF中,请将关系R拆分为:

R1(b, e, s, r, o, n) with b, s -> e, r, o, n 

R2(b, t, g) with b -> t and b -> g

同时消除n-> b和o-> r满足BCNF吗?

我对满足BCNF感到很困惑。我将不胜感激所有步骤上的任何帮助/想法!

rdbms database-normalization bcnf
1个回答
2
投票

模式具有两个候选键:{b, s}{n, s}。您可以验证这两个键都是计算两组属性的闭包。

因此主要属性是bsn

您正确地说该关系不在2NF中,也不在3NF中。

您建议的分解不会在BCNF中产生子方案,因为在R1中依存关系o → r仍然成立,并且o不是R1的超键。

BCNF的“经典”分解算法会产生以下归一化模式:

R1(b g t)
R2(o r)
R3(b n)
R4(e n o s)

但依赖项

b s → e
b s → n
b s → o
b s → r

未保留在分解中。

3NF中保留数据和依赖项的分解如下:

R1(b e n o s) 
R2(b g t)    
R3(o r)

在此分解中,R2和R3也在BCNF中,而R1中的依赖性n → b违反了BCNF。

© www.soinside.com 2019 - 2024. All rights reserved.