欢迎来到天天文库
浏览记录
ID:40108066
大小:943.81 KB
页数:99页
时间:2019-07-21
《关系规范化理论》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据库系统原理及应用第7章关系规范化理论韶关学院计算机科学系longtf@.sgu.edu.cn教学目的:1)了解规范化的定义2)掌握1NF、2NF、3NF和BCNF的定义.3)掌握模式分解算法以及关系规范化方法。重点与难点:1)1NF、2NF、3NF和BCNF式的实现方法。2)模式分解算法。一.关系规范化的必要性不规范的关系模式会带来什么问题?具体例子。教学管理关系模式设计:方案一:学生(学号,姓名,性别,年龄,系名)系别(系名,系主任)选课(学号,课程名,成绩)方案二:教学(学号,姓名,性别,年龄,系名,系主任,课程名,成绩)比较这两个方案,那个好?表面分析,深入
2、分析不规范关系模式可能出现的问题数据冗余大、插入异常、删除异常、更新异常学号姓名年龄性别系名系主任课程名成绩98001李华20男计算机系王民程序设计8898001李华20男计算机系王民数据结构7498001李华20男计算机系王民数据库8298001李华20男计算机系王民电路6598002张平21女计算机系王民程序设计9298002张平21女计算机系王民数据结构8298002张平21女计算机系王民数据库7898002张平21女计算机系王民电路8398003陈兵20男数学系赵敏高等数学7298003陈兵20男数学系赵敏数据结构9498003陈兵20男数学系赵敏数据库8
3、398003陈兵20男数学系赵敏离散数学87上述的关系模式存在的问题:⒈数据冗余太大浪费大量的存储空间例:每一个系主任的姓名重复出现⒉更新异常(UpdateAnomalies)数据冗余,更新数据时,维护数据完整性代价大。例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组(工作量大),否则产生数据不一致性。⒊插入异常(InsertionAnomalies)该插的数据插不进去,如:没有选课的学生信息不能存入,因为(学号,课程名)是主码,主码不能空(NOTNULL约束实体完整性约束)。又例如:如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据
4、库。⒋删除异常(DeletionAnomalies)不该删除的数据不得不删例,如果某个系的学生全部毕业了,我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。结论:上述教学关系模式不是一个好的模式。“好”的模式:应该不会发生插入异常、删除异常、更新异常,并且数据冗余应尽可能少(思考:在关系数据库中能否完全消除数据冗余?为什么?)。原因:由存在于模式中的某些数据依赖引起的解决方法:通过关系模式分解来消除其中不合适的数据依赖。关系规范化理论。数据依赖种类及定义:1、函数依赖2、平凡函数依赖与非平凡函数依赖3、完全函数依赖与部分函数依赖4、传递函数依赖定义:设
5、R(U)是属性集U上的关系模式,X、Y是U的两个子集。r是R(U)中任意给定的一个关系(实例)。若对于r中任意两个元组s和t,当s[X]=t[X]时,就有s[Y]=t[Y],则称属性子集X函数决定属性子集Y或者称Y函数依赖于X(FunctionalDependence),记其为X→Y。简称Y依赖于X,否则就称X不函数决定Y或者称Y不函数依赖于X。X叫做决定因素(Determinant),Y叫做依赖因素(Dependent)前面,我们对候选码(回顾?)进行了直观化的定义,下面用函数依赖的概念对候选码作出较为精确的形式化的定义。定义:设K是关系模式R(U)中的属性或属性组
6、,K’是K的任一真子集。若K→U,而不存在K‘→U,则K为R的候选码(CandidateKey)主属性:候选码中的任意一个属性称为主属性非主属性:不是候选码中的属性二.函数依赖的定义一个或多个属性组成的,它的值可唯一标识一个元组的最小属性组ABABABBABABA属性B函数依赖于属性A的几种情况。函数依赖说明:函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。(关系模式R对应的当前值r是元组的集合,r称为关系或关系实例。r通过增删等操作在不断的变化,而关系模式R是相对稳定的。)2.函数依赖是语义范畴的概念
7、。只能根据数据的语义来确定函数依赖。例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立3.数据库设计者可以对现实世界作强制的规定,所插入的元组必须满足规定的函数依赖。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。若发现有同名人存在,则拒绝装入该元组。平凡函数依赖与非平凡函数依赖在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但YX,则称X→Y是非平凡的函数依赖若X→Y,但YX,则称X→Y是平凡的函数依赖例:在关系SC(Sno,Cno,Grade)中,非平凡函数依赖:(Sno,Cno)→Grade平凡函数依赖:(Sno,C
此文档下载收益归作者所有