我试图获得什么是第一范式的明确版本。我阅读的所有内容都略有不同。
许多权威,例如 Date,说根据定义,关系总是处于第一范式,而其他人则给出了要求列表。这意味着对 1NF 的要求从零到很多。
我想区别在于表和关系之间的区别:表可能是一团糟,而关系遵循某些限制。关系在 SQL 中表示为表的事实因此造成了一些混淆。
我特别关注 1NF,因为它与 SQL 数据库有关。问题是:需要什么属性来确保表处于第一范式?
许多权威建议,如果一个表代表一个关系,那么它已经在 1NF 中。这将 1NF 的定义推回到关系的定义。
以下是 1NF 中表的一些属性:
[1] 技术上属性是无序的,但在表格中,行数据必须与列标题的顺序相同。然而,实际的顺序是微不足道的。
在多个数据上:
原子数据的概念是一个项目不能被进一步分解。这个概念是有限制的,因为虽然从技术上讲,一切都可以令人厌烦地分解,但实际上不能进一步分解所讨论的数据,这取决于数据的使用方式。
例如,完整地址或全名通常应该进一步细分,但可能不应该进一步细分诸如给定名称或城镇名称之类的组件,尽管它们可以作为字符串。
至于重复的列,它是一个设计不良列具有近重复列,例如phone1
,phone2
等。通常,重复数据指示用于一个附加的相关表的需要。
依赖
行之间不应该有任何关系,除了它们符合相同的标题。
列之间也应该没有关系,但我相信这是更高范式的主题。
问题是:1NF 的定义中有多少上述内容?独立行位也进入了吗?