我有下表,我应该将其转换为2NF。
我已经回答了这个问题:
技能:员工,技能
位置:员工,当前工作 位置
我有一种感觉我错了,但^ ^。
也有人可以解释1NF,2NF和3NF之间的差异。我知道1是第一个,你必须把它全部分解成小桌子,但是想要一个非常好的描述来帮助我更好地理解。感谢
答案 0 :(得分:0)
我是学习2NF的新手,但我已经解决了这样的问题。让我知道这是否正确,以便我能理解我的错误并多练习。
只有两张桌子。感谢
答案 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。
这种做法实际上有时用于数据库设计(并称为“非规范化”),以减少连接以提高通常一起使用的读取数据的性能。
通常这只在用于报告的表格中完成。