首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候会在3NF中?

什么时候会在3NF中?
EN

Stack Overflow用户
提问于 2015-07-25 14:24:07
回答 2查看 670关注 0票数 0

我很难理解这三种正常形态。

3 NF: 2 NF +无跃迁

所以,如果我有,

代码语言:javascript
复制
A -> B
B -> C

那么,上述是一种过渡关系,因此不会在3NF?我正确理解了吗?

但在数据库规范化到底是做什么的?的答案中,paxdiablo说,

Third normal form (3NF) - 2NF and every non-key column in a table depends on nothing but the key.据此,将在3NF。我哪里出问题了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-25 17:50:07

一个关系在3NF中,如果它在2NF中,并且:

  1. 如果每个属性都依赖于一个键,
  2. 或者,如果一个属性依赖于一个非键,那么它就是素数.

(质数表示它属于一个键)。

例如,参见维基百科

如果只保留第一个条件,即:Boyce-Codd范式中的关系:

  1. 每个属性依赖于一个键。

因此,在您的示例中,如果关系只有三个属性ABC以及两个依赖项,则它不在3NF中,因为C不是素数,并且依赖于B,而B不是一个键。另一方面,如果有其他属性,而C是键或键的一部分,那么它可能在3NF中(但这取决于其他函数依赖项,这应该满足上述条件)。

2NF表示,每个非素属性取决于每个候选键,而不是其中的一部分。例如,如果一个关系具有属性ABC,那么唯一的键是ABB -> C,那么这种关系不在2NF中。

票数 1
EN

Stack Overflow用户

发布于 2015-08-06 06:03:37

您正在尝试的第2部分第3部分定义是:

  • 2NF保持,R的每一个非素数属性都非传递依赖于每个超键。(当存在X→Y和Y→Z而不是Y→X时,X瞬态地确定Z)

3NF的另一个定义是:

  • 对于每个非平凡的FD X→Y,要么X是超级键,要么Y中的属性(而不是X中的属性)是素数。(当X包含Y时,X→Y是平凡的)

那么BCNF是:

  • 对于每一个非平凡的FD x→Y,x是一个超级键。

这个答案

如果示例的唯一列是A、B和C,并且您的两个FDs构成最小覆盖,那么唯一的候选键是A,而C依赖于非超级键,因此它不在3NF (或BCNF)中。

你的用词太随便了,所以你的句子没有任何意义。学习术语以及在定义中如何使用它们来指代各种事物,并以这种方式引用适当的事物。并从一本(有信誉的)教科书中得到你的定义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31627438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档