将表转换为2NF - 要转换的奇怪表?

时间:2011-06-17 14:52:03

标签: database database-design database-normalization database-table

我有下表,我应该将其转换为2NF。

Convert table to 2NF

我已经回答了这个问题:

  

技能:员工,技能

     

位置:员工,当前工作   位置

我有一种感觉我错了,但^ ^。

也有人可以解释1NF,2NF和3NF之间的差异。我知道1是第一个,你必须把它全部分解成小桌子,但是想要一个非常好的描述来帮助我更好地理解。感谢

2 个答案:

答案 0 :(得分:0)

我是学习2NF的新手,但我已经解决了这样的问题。让我知道这是否正确,以便我能理解我的错误并多练习。

enter image description here 只有两张桌子。感谢

答案 1 :(得分:-2)

Employee Table

EmployeeID  |   Name
1       |   Jones
2       |   Bravo
3       |   Ellis
4       |   Harrison


Skills Table

SkillId     |   Skill
1       |   Typing
2       |   Shorthand
3       |   Whittling
4       |   Light Cleaning
5       |   Alchemy
6       |   Juggling

Location Table

LocationId  |   Name
1       |   114 Main Street
2       |   73 Industrial Way

EmployeeSkill Table

EmployeeId  |   LocationId  |   SkillId |   SkillName
1       |   1       |   1   |   Typing
1       |   1       |   2   |   Shorthand
1       |   1       |   3   |   Whittling
2       |   2       |   4   |   Light Cleaning
3       |   2       |   5   |   Alchemy
3       |   2       |   6   |   Juggling
4       |   2       |   4   |   Light Cleaning

在EmployeeSkill表中,主键是EmployeeId + LocationId,这为您提供了他们在该位置的技能。在此示例中,包括SkillName列违反了3NF。 这种做法实际上有时用于数据库设计(并称为“非规范化”),以减少连接以提高通常一起使用的读取数据的性能。
通常这只在用于报告的表格中完成。