【问题标题】:Which of these definitions explain 1NF?这些定义中的哪一个解释了 1NF?
【发布时间】:2014-05-11 19:53:13
【问题描述】:

当我试图在谷歌中寻找 1NF 的定义时,我发现它很模糊。

  • this one 这样的一些网站说,当表格没有任何重复的列集时,表格是第一范式。

  • 其他一些人(大多数人)说同一列中不应存在同一域的多个值。

  • 他们中的一些人说,所有表都应该有一个主键,但有些人根本不谈论主键!

谁能帮我解释一下?

【问题讨论】:

标签: database database-normalization


【解决方案1】:

如果关系具有以下属性,即其域中没有元素本身是集合,则该关系处于第一范式。

来自 E. F. Codd(1972 年 10 月)。 《数据库关系模型的进一步规范化》

这真的归结为它是关于什么的,但是invented the relational database model的那个人。

当某事物处于第一范式时,没有列本身包含数据集。

first normal form 上的维基百科文章通过非规范化表演示了这一点:

示例 1:

顾客 客户编号 |名字 |姓氏 |电话号码 123 |罗伯特 |英格拉姆 | 555-861-2025 第456章简 |赖特 | 555-403-1659、555-776-4100 第789章玛丽亚 |费尔南德斯 | 555-808-9633

这个表是非规范化的,因为 Jane 有一个电话号码是一个集合。因此写表仍然违反 1NF。

示例2:

顾客 客户编号 |名字 |姓氏 |电话号码 123 |罗伯特 |英格拉姆 | 555-861-2025 第456章简 |赖特 | 555-403-1659 第456章简 |赖特 | 555-776-4100 第789章玛丽亚 |费尔南德斯 | 555-808-9633

规范化表格的正确方法是将其分成两个表格。

示例 3:

顾客 客户编号 |名字 |姓 123 |罗伯特 |英格拉姆 第456章简 |赖特 第789章玛丽亚 |费尔南德斯 电话 客户编号 |电话号码 123 | 555-861-2025 第456章555-403-1659 第456章555-776-4100 第789章555-808-9633

另一种看待 1NF 的方式是由 Chris Date(来自 Wikipedia)定义的:

  1. 行没有从上到下的顺序。
  2. 列没有从左到右的顺序。
  3. 没有重复的行。
  4. 每个行列交集只包含一个来自适用域的值(仅此而已)。
  5. 所有列都是常规的 [即行没有隐藏的组件,例如行 ID、对象 ID 或隐藏的时间戳]。

Example2 缺少唯一键,这违反了规则 3。Example1 违反了规则 4,因为电话号码包含多个值。

只有 Example3 满足所有这些要求。

进一步阅读:

【讨论】:

  • 谢谢@MichaelT,我已经阅读了维基百科的 1NF 文章,但它并不像看起来那么明确。看看你的例子2表。文章没有直接提到这是不是1NF!它只是说你应该把它分成两张桌子。
  • 当 Codd 在那里说“集合”时,他的意思是“关系”——正如“他们自己”和他对“规范化”的表述所证明的那样——集合是带有相关标题的元组集合。但是他的写作和数学很草率。 PS 维基百科的文章没有多大用处,因为它以典型的方式被混淆了。根据定义,所有这些属性都是关系的属性,因此它们不会掩盖 1NF 关系。示例 2 肯定有一个 CK(即所有列)并且没有重复项,就像每个关系一样。如果示例 1 是关系示例,则示例 1 没有“行列交集”的“多个值”。
【解决方案2】:

我发现的最简单的解释是从here复制的修改后的定义:

第一范式定义

如果满足以下条件,则数据库处于第一范式:

1) 只包含原子值

2) 没有重复组

【讨论】:

  • 其实没那么简单。想象一下,如果你只能找到两列具有相同值的几行,那么它们应该有自己的表。那么,如果您想对所有包含数千行的表执行此操作,则可能会出现问题。
  • @Shnd 这不是"repeating groups" 的意思。并不是说它有一个明确的含义。 Codd 1970 说“当前数据库术语中的属性和重复组大致分别类似于简单域和非简单域”——意思是非关系域和关系域。 (所以从 Codd 的观点来看,这个答案的 1 和 2 说的是同一件事。)
猜你喜欢
  • 2023-03-30
  • 2016-12-30
  • 2010-09-16
  • 2014-03-06
  • 2019-10-15
  • 1970-01-01
  • 2016-04-06
  • 2012-12-20
  • 1970-01-01
相关资源
最近更新 更多