相关疑难解决方法(0)

第一范式:明确定义

我试图获得什么是第一范式的明确版本。我阅读的所有内容都略有不同。

许多权威,例如 Date,说根据定义,关系总是处于第一范式,而其他人则给出了要求列表。这意味着对 1NF 的要求从零到很多。

我想区别在于表和关系之间的区别:表可能是一团糟,而关系遵循某些限制。关系在 SQL 中表示为表的事实因此造成了一些混淆。

我特别关注 1NF,因为它与 SQL 数据库有关。问题是:需要什么属性来确保表处于第一范式?


许多权威建议,如果一个表代表一个关系,那么它已经在 1NF 中。这将 1NF 的定义推回到关系的定义。

以下是 1NF 中表的一些属性:

  • 列顺序无关紧要 [1]
  • 行顺序无关紧要
  • 所有行的长度相同(即行数据与列标题匹配)
  • 没有重复的行(这可以使用代理主键来保证,但 PK 本身不是必需的)
  • 没有重复的列
  • 每一列包含一个单一值(原子)

[1] 技术上属性是无序的,但在表格中,行数据必须与列标题的顺序相同。然而,实际的顺序是微不足道的。

多个数据上

原子数据的概念是一个项目不能被进一步分解。这个概念是有限制的,因为虽然从技术上讲,一切都可以令人厌烦地分解,但实际上不能进一步分解所讨论的数据,这取决于数据的使用方式。

例如,完整地址或全名通常应该进一步细分,但可能不应该进一步细分诸如给定名称或城镇名称之类的组件,尽管它们可以作为字符串。

至于重复的列,它是一个设计不良列具有重复列,例如phone1phone2等。通常,重复数据指示用于一个附加的相关表的需要。

依赖

行之间不应该有任何关系,除了它们符合相同的标题。

列之间也应该没有关系,但我相信这是更高范式的主题。

问题是:1NF 的定义中有多少上述内容?独立行位也进入了吗?

normalization database-design relational-theory

10
推荐指数
2
解决办法
1052
查看次数