划分关系以实现BCNF

时间:2012-08-27 10:55:51

标签: database database-normalization

下面的关系是否正确分为BCNF中的关系:
R( a,b ,c,d,e) - a和b是主键,并且存在依赖关系,例如:

a→c
a→e
c→e

我将上述关系分为:

AC(的一个下,c)中
CE( C 下,E)
AB(的 A,B 下,d)

2 个答案:

答案 0 :(得分:0)

你确定那个主键吗?通常,确定所有候选键是这些练习的一部分。

表达我们对候选键的了解的非正式方式是,任何功能依赖的右侧(RHS)的每个属性都必须是每个候选键的一部分。

由于我不知道您如何确定{ab}是候选键,我倾向于这样说,因为{abd}不在任何RHS上,{abd}必须是每个候选键的一部分。

简而言之,你的FD说{abd}是主键,而不是{ab}。

为了使您的密钥和分解正确,您需要额外的FD ab-> d。

答案 1 :(得分:0)

a 是主键,而 b 是主键,还是 {a,b} 是(复合)主键吗?如果列是单独的主键,那么您有许多其他但未明确声明的功能依赖项: a→bd b→acde 。如果列 {a,b} 是复合PK,那么您还有一个额外的功能依赖 ab→cde 。无论哪种方式,AC和CE关系都很好,ABD关系是另一个必要的关系。唯一的问题是“ABD的候选键是什么”?答案是' {a,b} 作为复合PK,或 a b 作为两个单独的候选键'。