【问题标题】:Can BCNF decomposition preserve all functional dependencies given F = {AB -> E, BC -> G, C-> BG, CD->A, EC->D, G->CH}?给定 F = {AB -> E, BC -> G, C-> BG, CD->A, EC->D, G->CH},BCNF 分解能否保留所有函数依赖关系?
【发布时间】:2017-03-22 19:48:53
【问题描述】:

给定F = {AB -> E, BC -> G, C-> BG, CD->A, EC->D, G->CH},执行 BCNF 分解并检查它是否保留了所有函数依赖关系。

最小封面是R = {AB->E,C->B,C->G,CD->A,EC->D,G->C,G->H}

我在R 上执行了 BCNF 分解(必须在最小覆盖上执行),我保留了两个依赖项,其中一个被保留,一个不被保留。在答案中,他们告诉我所有的依赖关系都被保留了。谁能确认一下?

【问题讨论】:

  • 有什么问题?如果存在保留所有 FD 的分解,那又如何?正如你给它的问题是找到一个 BCNF 分解并检查它是否保留了所有 FD。你做到了。作业与您所说的不同吗?是要找到一个分解来保留所有 FD(如果有的话),还是什么? PS 关系的属性是什么?

标签: database relational-database database-normalization functional-dependencies bcnf


【解决方案1】:

ABE、CBG、CDA、CED、GCH 处于 BCNF 和无松动连接和依赖保留中。关系键是粗体

只要这个新关系在 BCNF 中,总是有可能添加一个新关系来保留依赖关系。

【讨论】:

    【解决方案2】:

    从规范封面开始,我们可以看到A B → E 的行列式不是超级键,因此R 可以替换为:

    R1 < (A B E) , { A B → E } >
    

    和:

    R2 < (A B C D G H) ,
    { G → C
    G → H
    C → B
    C → G
    C D → A
    A B C → D } >
    

    在 R2 中,G → C 的行列式不是超级键,因此 R2 可以替换为:

    R3 < (B C G H) ,
    { G → C
    G → H
    C → B
    C → G } >
    

    和:

    R4 < (A D G) ,
    { D G → A
    A G → D } >
    

    所以,最终的分解是:

    R1 < (A B E) ,
    { A B → E } >
    
    R3 < (B C G H) ,
    { G → C
    G → H
    C → B
    C → G } >
    
    R4 < (A D G) ,
    { D G → A
    A G → D } >
    

    和依赖:

    { C E → D }
    

    不保存。

    【讨论】:

    • 谢谢先生。我希望现在他们能提高我的分数,因为我在考试期间用 2 种不同的算法检查了 3 次,并且没有保留依赖关系。
    • 我的老师告诉我没有保留依赖关系。你确定吗?
    • CE -> D 没有被保留,所以我们可以说依赖关系没有被分解保留。
    • 我的意思是他告诉我的依赖关系被保留*。我仍然无法理解。而且他不想向学生提出分数。他坚持认为他们确实保留了。 ://
    • 如何给出这种分解表明没有依赖保持分解?
    猜你喜欢
    • 2019-12-19
    • 1970-01-01
    • 2019-01-07
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    相关资源
    最近更新 更多