【问题标题】:Database normalization into 3NF or BCNF数据库规范化为 3NF 或 BCNF
【发布时间】:2016-06-13 01:15:47
【问题描述】:

我正在对数据库进行规范化以使其最小为 3NF,但我不能只在最后一个中继续。

最后一张桌子我有以下键。 ID、Organization_number 和名称。 ID 是主键。 ID 可以确定 ORG_NR 和 Name,ORG_NR 也可以确定 ID 和 name。 我知道这违反了 3NF。 所以我的问题是,我应该怎么做才能达到 3NF 甚至 BCNF。

如果我将其拆分为表格,则关系是一对一的。

【问题讨论】:

  • 是什么让您认为“使关系一对一”是个问题?
  • 感谢您的评论,现在我得到了答案:)

标签: mysql database normalization database-normalization


【解决方案1】:

功能依赖决定候选键。主键只是您决定称为 PK 的一些 CK。除了是 CK,PK 在标准化中没有任何作用。想必你知道 ID 是唯一的(并且 {} 不是 CK),所以它是一个 CK,你已经进行了 PK。 (但你应该说清楚。)

由于 {ID} 和 {ORG_NR} 都决定了所有其他属性,并且每个属性都没有更小的子集,因此它们都是 CK。据推测,唯一的 FD 就是这些之后的那些。 (但你应该说清楚。)由于所有重要的 FK 都没有超级密钥,所以这是在 BCNF(以及 3NF)中。

PS 既然你(错误地)认为这不在 3NF 中,请找到 3NF 的定义并尝试显示它是否满足 3NF。

【讨论】:

  • 现在我明白你了,关于你的回答,这意味着没有必要把它分成拖车表。终于,工作完成了;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
  • 2014-12-14
  • 1970-01-01
相关资源
最近更新 更多