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