资源描述:
《数据库系统范式教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据依赖对关系数据库的影响函数依赖关系模式的范式关系模式的规范化数据依赖的公理系统数据库系统原理1.1数据依赖对关系模式的影响关系模式设计不规范会带来一系列的问题数据冗余、更新异常、插入异常、删除异常示例1:关系模式R(Tname,Addr,C#,Cname)一个教师只有一个地址(户口所在地)一个教师可教多门课程一门课程只有一个任课教师因此R的主码是(C#)数据库系统原理1.2RR的一个实例的一个实例TnameAddrC#CnameT1A1C1N1T1A1C2N2T1A1C3N3T2A2C4N4
2、T2A2C5N5T3A3C6N6数据库系统原理1.3问题(问题(11):数据冗余):数据冗余教师T1教了三门课程,他的地址被重复存储了2次。TnameAddrC#CnameT1A1C1N1T1A1C2N2T1A1C3N3T2A2C4N4T2A2C5N5T3A3C6N6数据库系统原理1.4问题(问题(22):更新异常):更新异常如果T1的地址变了,则需要改变3个元组的地址;若有一个未更改,就会出现数据不一致。但DBMS无法获知这种不一致。TnameAddrC#CnameT1A1C1N1T1A1C2N2T1A
3、1C3N3T2A2C4N4T2A2C5N5T3A3C6N6数据库系统原理1.5问题(问题(33):插入异常):插入异常如果要增加一名教师,但他还未带课,则C#和Cname为空,但由于C#是主码,为空违反了实体完整性,所以这名教师将无法插入到数据库中。TnameAddrC#CnameT1A1C1N1T1A1C2N2T1A1C3N3T2A2C4N4T2A2C5N5T3A3C6N6数据库系统原理1.6问题(问题(44):删除异常):删除异常如果教师T3现在不带课了,则需将T3的元组删去,但同时也把他的姓名和地址
4、信息删掉了。TnameAddrC#CnameT1A1C1N1T1A1C2N2T1A1C3N3T2A2C4N4T2A2C5N5T3A3C6N6数据库系统原理1.7如何解决?方法:模式分解方法1:R分解为授课信息丢失了R1(Tname,Addr)R2(C#,Cname)方法2R1中问题依然存在R1(Tname,Addr,C#)R2(C#,C)Cname)方法3基本解决问题R1(Tname,Addr)R2(Tname,C#,Cname)数据库系统原理1.8示例2:描述学校的数据库:学生的学号(Sno)、所在系(
5、Sdept)系主任姓名(Mname)、课程名(Cname),成绩(Grade)单一的关系模式:Student其中:U={Sno,Sdept,Mname,Cname,Grade}F={Sno→Sdept,Sdept→Mname,(Sno,Cname)→Grade}数据库系统原理1.9数据依赖对关系模式的影响(续)学校数据库的语义:⒈一个系有若干学生,一个学生只属于一个系;⒉一个系只有一名主任;⒊一个学生可以选修多门课程,每门课程有若干学生选修;⒋每个学生所学的每门课程都有一个成绩。数据库系统原理1.1
6、0Student关系模式上的一组函数依赖GdGradeSnoCnameSdeptMname数据库系统原理1.11关系模式关系模式StudentStudent中存在的问题中存在的问题⒈数据冗余太大浪费大量的存储空间例:每一个系主任的姓名重复出现⒉更新异常(UpdateAnomaliesUpdateAnomalies)数据冗余,更新数据时,维护数据完整性代价大。例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组数据库系统原理1.12关系模式关系模式StudentStude
7、nt中存在的问题中存在的问题⒊插入异常(InsertionAnomalies)该插的数据插不进去例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。⒋删除异常(DeletionAnomalies)不该删除的数据不得不删例,如果某个系的学生全部毕业了,我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。数据库系统原理1.13数据依赖对关系模式的影响(续)结论:Student关系模式不是一个好的模式。“好”的模式不会发生插入异常、删除异常、更新异常,数据冗余应尽可
8、能少。原因:由存在于模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数据依赖。数据库系统原理1.14规范化理论规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。数据库系统原理1.15要解决的内容到底什么样的模式才最佳?怎么分解才能达到要求?标准是什么?如何实现?数据库系统原理1.16函数依赖