【问题标题】:Can someone tell me if this relation is in 3NF?有人能告诉我这种关系是否在 3NF 中吗?
【发布时间】:2016-01-08 14:17:07
【问题描述】:

考虑具有以下函数依赖关系的关系 R(A, B, C, D, E):A->BC, D->CE, C->E

AD+ = ABCDE

主要属性:AD 非主要属性:BCE

分解成3NF而不是BCNF

R1(A, B, C, D) R2(C,E)

【问题讨论】:

    标签: database relational-database relational-algebra 3nf bcnf


    【解决方案1】:

    我已经很久没有这样做了。但是如果我记得在 3NF 中,如果一列传递依赖于另一列,则不允许列在表中。

    在这种情况下,唯一的传递依赖是A -> C -> E,这意味着需要从R中提取E。

    这是你所做的,我的理解。 有些东西告诉我你可能需要从 R1 中提取 C,但这可能只是 BCNF 中的必要条件。

    【讨论】:

      【解决方案2】:

      您的情况的第三范式如下:

      R1 (A B C)

      R2 (C E)

      R3 (C D)

      R4 (A D)

      请注意,这是以第三范式保留依赖关系分解关系的唯一方法,并且所有生成的依赖关系都使得所有分解的模式也都在 BCNF 中。

      最后,我们可以注意到,相同的关系可以在 BCNF 中通过失去一些函数依赖性以不同的方式分解。

      【讨论】:

      • 你的段落自相矛盾。你说只有一种 3NF 分解,但有很多 BCNF。但是每个 BCNF 也属于 3NF。也许你的意思是,只有一个保留 FD 的 3NF 分解。 (您的第一段有点奇怪,因为您说“所有架构”但只有一个。)
      猜你喜欢
      • 2021-12-26
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      相关资源
      最近更新 更多