是否有任何违反 1NF 的函数依赖的示例?

Posted

技术标签:

【中文标题】是否有任何违反 1NF 的函数依赖的示例?【英文标题】:Is there an example of any functional dependency violating 1NF? 【发布时间】:2017-04-24 05:35:35 【问题描述】:

函数依赖是否有可能违反 1NF?例如

R=A,B,C,D,E F=Any FD that violates 1NF

什么样的函数依赖会违反 1NF?我了解违反 2NF、3NF 和 BCNF 的函数依赖关系的示例,但我从未见过违反 1NF 的 FD 示例。这甚至可能吗?

【问题讨论】:

这是不可能的,因为 1NF 只是关系定义的一部分(每个属性只有基本值)。任何关系,在定义的正确意义上,都自动属于 1NF。 你(认为你)所说的“1NF”是什么意思? 我们可以识别非 1NF 表中的 FD,但不会是违反 1NF 的 FD。 【参考方案1】:

与其他正常形式不同,1NF 关注的是结构,而不是函数依赖。所以你的问题的简单答案是否定的。

但是,关于 1NF 是否排除关系值属性 (RVA) 的可能性存在争议。如果您(和许多人一样)认为 RVA 被 1NF 禁止,那么任何基于关系值属性的函数依赖都不能被 1NF 关系满足。根据对规则的解释,此类 FD 将被 1NF 禁止。说 FD 本身违反了 1NF 是言过其实的,但如果说满足这样的 FD 的关系就是违反的话,那就是真的了。

或者,您可以认为,如果它具有任何价值,那么 1NF 应该意味着数据始终表示为关系的要求。在这种解释下,没有充分的理由排除 RVA 的可能性,并且 - 鉴于它们的排除可能会排除一些潜在重要的 FD - 有充分的理由允许它们。这是我的观点,尽管即使在那些考虑过这个问题的人中,这也可能是少数人的观点。如果您同意,那么您的问题的答案肯定是

【讨论】:

以上是关于是否有任何违反 1NF 的函数依赖的示例?的主要内容,如果未能解决你的问题,请参考以下文章

数据范式的理解与解析技巧

BCNF与3NF之间有啥区别

2016.6.14 关系数据理论之范式

数据库原理-范式

关系数据模型的范式

数据库系统基础