【问题标题】:Normalization Understanding规范化理解
【发布时间】:2013-05-10 09:20:35
【问题描述】:

我正在尝试理解规范化。我已经关注了几个 Youtube 教程,还观看了 Lynda 教程。我对规范化有所了解,但我仍然有几个问题。 1)1NF用于避免重复组和重复值,但是当我将table1的数据转移到table2时,table1没有任何重复值,但table2有。为什么会这样? 其次我对2NF不太了解,请告诉我1nf和2nf的区别?

我了解 3NF,我们用它来将非键值放在其他表中。

请告诉我我所理解的是否正确?并解决我的问题 谢谢。

【问题讨论】:

    标签: mysql database normalization denormalization database-relations


    【解决方案1】:

    当您从 1NF 转换为 2NF 时,新表中的重复值应该只是原始表中的外键。看一下Wikipedia entry 中的第一个示例。在 1NF 表中,Current Work Location 与每个 Employee 重复,即使它仅依赖于 Employee,而不是整个 {Employee Skill} 主键。在 2NF 版本中,有一个 Employee 表,其中 Current Work Location 不会重复。在Employees Skills 表中,员工是重复的,因为他们可以拥有多种技能。

    2NF 的好处是,当您更改仅依赖于键子集的值时(例如,员工更改位置),您只需更改一行。在 Wikipedia 示例的原始表中,如果员工更改位置,您将必须更改具有该名称的所有员工技能行(如果您有其他类似的非规范化表,您也必须更新它们)。

    【讨论】:

    • 非常感谢,现在我完全理解了 1NF :),但我仍然无法理解 2NF?
    猜你喜欢
    • 2014-02-18
    • 2012-01-04
    • 1970-01-01
    • 2017-01-25
    • 2012-05-22
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    相关资源
    最近更新 更多