工程号工程名称职工号姓名职务小时工资率工时实发工资A1花园大厦1001齐光明工程师6513845.001002李思岐技术员6016960.001004葛宇宏律师60191140.00小计2945.00A2立交桥1001齐光明工程师6515975.001003鞠明亮工人5517935.00小计1910.00A3临江饭店1002李思岐技术员60181080.001004葛宇洪技术员6014840.00小计1920.00(某公司的工资表-1)规范化实例规范化实例工程号工程名称职工号姓名职务小时工资率工时A1花园大厦1001齐光明工程师6513A1花园大厦1002李思岐技术员6016A1花园大厦1001齐光明工程师6513A1花园大厦1003鞠明亮工人5517A3临江饭店1002李思岐技术员6018A3临江饭店1004葛宇洪技术员6014(某公司的工资表-1)规范化实例•表中包含大量的冗余,可能会导致数据异常:–更新异常例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行–添加异常若要增加一个新的职工时,首先必须给这名职工分配一个工程。或者为了添加一名新职工的数据,先给这名职工分配一个虚拟的工程。(因为主关键字不能为空)–删除异常例如,1001号职工要辞职,则必须删除所有职工号=1001的数据行。这样的删除操作,很可能丢失了其它有用的数据规范化实例•采用这种方法设计表的结构,虽然很容易产生工资报表,但是每当一名职工分配一个工程时,都要重复输入大量的数据。这种重复的输入操作,很可能导致数据的不一致性。一张表描述了多件事情,如图-3所示。应用范式规范化设计工程号工程名称职工号姓名职务小时工资率工时图-3函数依赖图工程信息工程信息员工信息员工信息项目工时信息项目工时信息应用第二范式规范化工程号工程名称职工号姓名职务小时工资率工程号职工号工时图-4应用第二范式工程表工程表员工表员工表项目工时表项目工时表满足第三范式吗?满足第三范式吗?应用第三范式规范化工程号工程名称职工号姓名职务职务小时工资率工程号职工号工时工程表工程表员工表员工表职务表职务表工程表工程表