Database design 我在本练习中应用的Boyce Codd NF正确吗?

Database design 我在本练习中应用的Boyce Codd NF正确吗?,database-design,bcnf,Database Design,Bcnf,考试复习,而不是作业 我正在进行此练习,我想检查我的解决方案是否正确: 给定以下关系R和一组函数依赖项F: R={A,B,C,D,E,F,G,H,I} F={C,D}->{A}, {G} ->{E}, {C,D,E}->{G,B,H}, {B} ->{F}, {H} ->{I} 将R分解为满足Boyce-Codd范式的关系 我的回答是:BOLD是主键 (C,D,A) (C,D,E,B,H) (B,F) (H,I) (G,C,D) (E,G)我认为您导出的前四个都是5NF {GCD} {EG}

考试复习,而不是作业

我正在进行此练习,我想检查我的解决方案是否正确:

给定以下关系R和一组函数依赖项F: R={A,B,C,D,E,F,G,H,I} F={C,D}->{A}, {G} ->{E}, {C,D,E}->{G,B,H}, {B} ->{F}, {H} ->{I} 将R分解为满足Boyce-Codd范式的关系

我的回答是:BOLD是主键

CD,A)

CDE,B,H)

B,F)

H,I)

G,C,D)


EG

我认为您导出的前四个都是5NF

  • {GCD}
  • {EG}
但这两个看起来不对劲

首先,您的一个FD是G->E。在一个只包含G和E的关系中,您如何确定正确的分解是

  • {EG}
而不是

  • {GE}
如果FD G->E仍然必须保持


乍一看,我看不出你如何从你给出的FDs中导出G->CD。

根据本页:
BCNF的可实现性
我试图捕获:{AB→ C、 C→ B} 。我真的把自己搞糊涂了。谢谢你参与@Mike我会再试一次,我的规则之一是如果
{X->Y}
违反了BCNF,将
R
(所有属性)分解为
{R-Y}
{XY}
。所以我做了
R={C,D,E,G}-{E}={C,D,G}
,我的
X
{G}
,我的
Y
{E}
,所以我得到
{G,E}
。但是在我最初的问题中,我没有显示正确的复合主键,因此它们应该是
{***C***、***D***、***G***}
{***G***、***E***}
。我真的希望我能处理好这件事,否则我就麻烦了:)[不能在评论框中加粗]这很难:把这个关系R{studentID,Final,Advisor}和一些条目{{{1,IT,Smith},{1,ECON,Murphy},{2,ECON,Murphy},{3,IT,Smith}分解成两个表:{{{studentID,Final}->{Advisor},{Final},{Advisor}。目前的情况是,如果studentID=1从经济学改为生物学,那么导师墨菲现在将指向错误的决赛。因此,为了防止这种情况发生,我们必须为正确性释放一些函数依赖性。应用我在前面的评论中所做的有助于实现这一点。另一种方法是在数据库中设置触发器。你没有回答我的问题:你是从哪里学到这个规则的?您对R={studentID,Final,Advisor}的分解是错误的。快速检查:投影分解总是产生一个属性比你开始时少的关系。对不起,我的考试开始了,我必须集中精力。我提到的解决方案来自我的讲师。