您的位置:首页 > 数据库

如何设计数据库(2)

2010-02-04 16:30 162 查看
数据规范化

• 第一范式(1st NF -First Normal Fromate)
– 如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)。第一范式的目标是确保每列的原子性。
• 公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等
• 公司定期制定一个工资报表,如图-1所示

工程号工程名称职工号姓名职务小时工资率工时实发工资
A1花园大厦1001齐光明工程师6513845.00
1002李思岐技术员6016960.00
1004葛宇宏律师60191140.00
小计2945.00
A2立交桥1001齐光明工程师6515975.00
1003鞠明亮工人5517935.00
小计1910.00
A3临江饭店1002李思岐技术员60181080.00
1004葛宇洪律师6014840.00
小计1920.00
图-1 某公司打印的工资报表

工程号工程名称职工号姓名职务小时工资率工时
A1花园大厦1001齐光明工程师6513
A1花园大厦1002李思岐技术员6016
A1花园大厦1004葛宇洪律师6019
A2立交桥1001齐光明工程师6515
A2立交桥1003鞠明亮工人5517
A3临江饭店1002李思岐技术员6018
A3临江饭店1004葛宇洪律师6014
图-2 某公司的项目工时表

大家都看到,上面这样设计的表会有很多问题:
1.表中包含大量的冗余,可能会导致数据异常:
• 删除异常
例如,1001号职工要辞职,则必须删除所有职工号=1001的数据行。这样的删除操作,很可能丢失了其它有用的数据
2.采用这种方法设计表的结构,虽然很容易产生工资报表,但是每当一名职工分配一个工程时,都要重复输入大量的数据。这种重复的输入操作,很可能导致数据的不一致性。
[align=center][/align]

我们用第二范式规范一下:

我们再用第三范式规范一下,是不是明晰了很多?!

规范化和性能的关系

• 通过在给定的表中插入计算列(如成绩总分),以方便查询
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 数据库 休闲