【问题标题】:3NF vs BCNF: Example3NF 与 BCNF:示例
【发布时间】:2014-01-02 00:28:25
【问题描述】:

Gday 小伙子们,

好的,所以我有一个数据库类,我有这个例子让我觉得我真的没有完全理解两个 NF 之间的区别..

我知道

关系 R 在 3NF 中当且仅当对于 R 满足的每个非平凡 FD (X->A) 至少满足以下条件之一为真:

(a) X 是 R 的超键,或者

(b) A 是 R 的关键属性

对于每个满足的非平凡 FD (X->A),关系 R 在 BCNF 中 通过R,以下条件为真:

(a) X 是 R 的超级键

示例如下:

R = (A, B, C, D) F = {AB->C, AB->D, C->A, D->B} 1. R 在 3NF 中,为什么? 如果不是,分解成3NF

Sol:
Yes. Find all the Candidate Keys:
AB, BC, CD, AD
Check all FDs in F for 3NF condition

那么,C->A 不会导致违规吗? C 不是超级键,也不是微不足道的,D->B 也是如此?

但它不是 BCNF:

  1. BCNF 中有 R,为什么?如果不是,分解成BCNF 不,因为对于 C->A,C 不是超级键。 D->B R1 = {C, D},R2 = {A,C},R3 = {B,D}

【问题讨论】:

  • @MostyMostacho 好吧,我已经阅读了该主题和其他 3 个主题,但仍然......
  • @MostyMostacho 我不能在那里发表评论,我需要在你之前的回答中询问一些事情..

标签: database-design relational-database database-normalization 3nf bcnf


【解决方案1】:

那么,C->A 不会导致违规吗? C 不是超级键,也不是微不足道的......

那么 3NF 的第二个条件呢? A 是 R 中某个键的属性吗?

(提示:这些练习的目的部分也是为了向您展示为什么 3NF 不是一个非常有用的范式,以及 3NF 和 BCNF 之间的区别很重要的情况)

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 2013-11-14
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多