我试图理解规范化。我已经关注了几个 Youtube 教程,还观看了 Lynda 教程。我对规范化有所了解,但我仍然有几个问题。1)1NF用于避免重复组和重复值,但是当我将table1的数据转移到table2时,table1没有任何重复值,但table2有。为什么会这样?其次我对2NF不太了解,请告诉我1nf和2nf之间的区别?
我了解 3NF,我们用它来将非键值放在其他表中。
请告诉我,我所理解的是否正确?并解决我的问题谢谢。
我试图理解规范化。我已经关注了几个 Youtube 教程,还观看了 Lynda 教程。我对规范化有所了解,但我仍然有几个问题。1)1NF用于避免重复组和重复值,但是当我将table1的数据转移到table2时,table1没有任何重复值,但table2有。为什么会这样?其次我对2NF不太了解,请告诉我1nf和2nf之间的区别?
我了解 3NF,我们用它来将非键值放在其他表中。
请告诉我,我所理解的是否正确?并解决我的问题谢谢。
当您从 1NF 转换为 2NF 时,新表中的重复值应该只是原始表中的外键。看看Wikipedia 条目中的第一个示例。在 1NF 表中,Current Work Location
与 each 重复Employee
,即使它仅依赖于Employee
,而不是整个{Employee Skill}
主键。在 2NF 版本中,有一个Employee
表,Current Work Location
不会重复。在Employees Skills
表中重复员工是因为他们可以拥有多种技能。
2NF 的好处是,当您更改仅依赖于键子集的值时(例如,员工更改位置),您只需更改一行。在 Wikipedia 示例的原始表中,如果员工更改位置,则必须更改具有该名称的所有员工技能行(并且如果您有其他类似非规范化的表,您也必须更新它们)。