数据库设计概要学习教案.pptx
会计学1数据库设计数据库设计(shj)概要概要第一页,共25页。数据库设计本章(bnzhn)内容数据(shj)规范1stNF数据(shj)规范2ndNF数据(shj)规范3rdNF数据(shj)规范化实例第1页/共25页第二页,共25页。数据库设计本章(bnzhn)内容数据(shj)规范1stNF数据(shj)规范2ndNF数据(shj)规范3rdNF数据(shj)规范化实例第2页/共25页第三页,共25页。数据库设计(shj)数据规范1stNFl请分析如下的表,在数据库中该如何(rh)存储数据呢?职工号姓名电话办公室电话家庭电话001张明33030013309987002李平330300213456733456行列交叉产生多个值第3页/共25页第四页,共25页。数据库设计(shj)数据规范1stNFl上表不符合(fh)数据表存储方式,该如何处理呢?职工号姓名办公室电话001张明3303001002李平3303002第一种解决方案:舍弃(shq)子列中的某一列,表结构如下:职工号 姓名家庭电话001张明 3309987002李平 13456733456第4页/共25页第五页,共25页。数据(shj)库设计数据(shj)规范1stNF第二种解决方案:把表头中电话列去掉,直接改成(ichn)4列,修改后表结构如下:职工号姓名办公室电话家庭电话001张明33030013309987002李平330300213456733456第5页/共25页第六页,共25页。数据库设计(shj)数据规范1stNFl通过以上的实例(shl),我们可以归纳出数据规范化1NF:l表中已定义了主键(关键字)。l行与列的交叉点只能有一个值。第6页/共25页第七页,共25页。数据库设计(shj)本章内容数据规范(gufn)1stNF数据规范(gufn)2ndNF数据规范(gufn)3rdNF数据规范(gufn)化实例第7页/共25页第八页,共25页。数据库设计(shj)数据规范2ndNFl例:选课关系(gunx)(学号,课程号,学分,成绩)lSCI(SNO,CNO,CREDIT,GRADE)SNOCNOCREDITGRADE001029279002029288003029272002034389学分部分依赖课程号第8页/共25页第九页,共25页。数据库设计(shj)数据规范2ndNFl如何处理这种表中数据的部分(bfen)依赖呢?SNOCNOGRADE00102979002029880030297200203489CNOCREDIT02920343拆分成只有完全依赖的两个表第9页/共25页第十页,共25页。数据库设计(shj)数据规范2ndNFl第二范式:如果一个表属于1NF,且不包含(bohn)部分依赖性,既没有任何属性只依赖于关键字的一部分,则这个表属于第二范式(常记成2NF)。l换句话说,第二范式是任何属性都完全依赖主键。第10页/共25页第十一页,共25页。数据库设计本章(bnzhn)内容数据规范(gufn)1stNF数据规范(gufn)2ndNF数据规范(gufn)3rdNF数据规范(gufn)化实例第11页/共25页第十二页,共25页。数据(shj)库设计数据(shj)规范3rdNFl例:学生实体(学号,姓名,所在(suzi)系,系名称,系地址)lSTU(SNO,SNAME,DNO,DNAME,LOCATION)SNO SNAME DNO DNAMELOCATION001张明IM信息管理 行政415042刘丽EG电力工程 行政502107李华平IM信息管理 行政415109邓丽娟HR人力资源 行政317系名称、系地址依赖于所在系第12页/共25页第十三页,共25页。数据(shj)库设计数据(shj)规范3rdNFl如何(rh)解决这种传递依赖呢?DNODNAMELOCATIONIM信息管理行政415EG电力工程行政502HR人力资源行政317SNO SNAME DNO001张明IM042刘丽EG107李华平IM109邓丽娟HR拆分第13页/共25页第十四页,共25页。数据(shj)库设计数据(shj)规范3rdNFl通过以上实例总结得到:l一个表属于(shy)2NF,且不包含传递依赖性,则这个表是第三范式(常记成3NF)。l换句话说,没有任何一个非关键属性依赖于另一个非关键属性。第14页/共25页第十五页,共25页。数据库设计(shj)本章内容数据(shj)规范1stNF数据(shj)规范2ndNF数据(shj)规范3rdNF数据(shj)规范化实例第15页/共25页第十六页,共25页。数据库设计(shj)数据规范化实例假设某建筑公司(ns)要设计一个数据库,说明如下:公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等;公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等;公司按工时和小时工资率支付工资,小时工资率由职工职务决定(如,技术员的小时工资率与工程师不同);公司定期制定一个(y)工资报表如下图:第16页/共25页第十七页,共25页。数据(shj)库设计数据(shj)规范化实例工程号工程名称职工号姓名职务小时工资率工时实发工资A1花园大厦1001齐光明工程师6513845.001002李思岐技术员6016960.001004葛宇洪技术员60191140.00小计2945.00A2立交桥1001齐光明工程师6515975.001003鞠明亮工人5517935.00小计1910.00A3临江饭店1002李思岐技术员60181080.001004葛宇洪技术员6014840.00小计1920.00第17页/共25页第十八页,共25页。数据(shj)库设计数据(shj)规范化实例l首先把表格(biog)规范化为符合1NF,规范化后如下所示:工程号工程名称职工号姓名职务小时工资率工时A1花园大厦1001齐光明工程师6513A1花园大厦1002李思岐技术员6016A1花园大厦1004葛宇洪技术员6019A2立交桥1001齐光明工程师6515A2立交桥1003鞠明亮工人5517A3临江饭店1002李思岐技术员6018A3临江饭店1004葛宇洪技术员6014第18页/共25页第十九页,共25页。数据(shj)库设计数据(shj)规范化实例l表中包含大量的冗余,可能会导致(dozh)数据异常:l更新异常例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行。l添加异常若要增加一个新的职工时,首先必须给这名职工分配一个工程。(因为主关键字不能为空)l删除异常。第19页/共25页第二十页,共25页。数据(shj)库设计数据(shj)规范化实例l采用这种方法设计表的结构,虽然(surn)很容易产生工资报表,但是每当一名职工分配一个工程时,都要重复输入大量的数据。这种重复的输入操作,很可能导致数据的不一致性。第20页/共25页第二十一页,共25页。数据(shj)库设计数据(shj)规范化实例l用函数依赖图表示所有属性之间存在(cnzi)的函数依赖关系,如下图所示。工程号工程名称职工号姓名职务小时工资率工时第21页/共25页第二十二页,共25页。数据库设计(shj)数据规范化实例工程号工程名称职工号姓名职务小时工资率工程号职工号工时l符合(fh)2NF表结构如下:第22页/共25页第二十三页,共25页。数据(shj)库设计数据(shj)规范化实例工程号工程名称工程号职工号工时职工号姓名职务职务小时工资率l符合(fh)3NF表结构如下:第23页/共25页第二十四页,共25页。亲爱(qn i)的同学,下节课再见!第24页/共25页第二十五页,共25页。