《关系规范化理论知识》由会员分享,可在线阅读,更多相关《关系规范化理论知识(21页珍藏版)》请在金锄头文库上搜索。
1、计算机科学与技术系 郑海旭,数据库系统概论An Introduction to Database System第六章 关系数据理论,第六章 关系数据理论,6.1 问题的提出6.2 规范化 6.4 模式的分解方法简介6.5 小结,针对具体问题,如何构造一个适合于 它的数据模式(使用的工具关系数据库的规范化理论),本章解决的问题,复习前一节的内容,例1试建立一个描述学校教务管理的数据库。 信息有:学生的学号(sno)、姓名(sn)、性别(sex)年龄(age)、住址(sloc).学校所属系编号(dno)、系名(dn)、系主任(mn)、系联系电话(phone)、所在地 课程号(cno)、课程名(cn
2、)、学分(credit)、成绩(grade),关系模式S_C_D中存在的问题,教务关系模式S_C_D(一个关系模式):(sno, sn,age,dn, mn, cno,cn, grade, )存在的问题:1.删除异常(Deletion Anomalies)2.插入异常(Insertion Anomalies)3.数据冗余太大, 更新异常(Update Anomalies),分解关系模式,把这个单一模式分成5个关系模式:S(sno, sn, age, sloc, ) /*学生信息*/C(cno, cn, credit, ) /*课程信息*/DEPT(dno, dn,mn, ) /*系的信息*/S
3、_D(sno, dno) /*学生与系的联系*/SC(sno,cno,grade) /*学生与课程的联系*/分解的本质:概念的单一化,本章要回答的问题:“好” 模式的标准?不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少,即每个关系只有一个主题。满足3NF标准的关系模式是好模式2. 分解的本质是什么? 概念的单一化过程3. 一个关系模式如何分解成几个“好”的模式? (不丢失信息和语义的前提下),关系模式分解方法举例,关系模式(学生-所在系-住宿-课程-成绩) S-D-L-C(Sno, Sdept, Sloc, Cno, Grade),关系模式(学生选课情况) SC(Sno, Cno,
4、Grade),关系模式(学生住宿情况)S-D-L(Sno, Sdept, Sloc),关系模式(学生-系)S-D(Sno, Sdept ),关系模式(系-住宿分配)S-D-L(Sdept, Sloc),5.2.6 规范化,关系数据库的规范化理论是数据库逻辑设计的工具。一个关系只要其分量都是不可分的数据项,它就是规范化的关系,但这只是最基本的规范化。规范化程度可以有多个不同的级别,规范化(续),规范化程度过低的关系不一定能够很好地描述现实世界,可能会存在插入异常、删除异常、修改复杂、数据冗余等问题一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式
5、的规范化,规范化步骤,1NF,2NF,3NF,BCNF,4NF,5NF,消除非主属性对码的部分依赖,消除非主属性对码的传递依赖,消除主属性对码的部分和传递依赖,消除多值依赖,消除连接依赖,规范化的基本思想,消除不合适的数据依赖的各关系模式达到某种程度的“分离”采用“一事一地”的模式设计原则 让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去所谓规范化实质上是概念的单一化,规范化(续),不能说规范化程度越高的关系模式就越好在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式上面的规范化步骤可以在其中
6、任何一步终止,对函数依赖(FD)的讨论,1、以下3个模式都是3NF,2、是3NF的模式是好模式,SC(Sno, Cno, Grade),S-D(Sno, Sdept ),S-D-L(Sdept, Sloc),3、是3NF的模式代表一个单一的主题,4、模式分解的本质 从语义上讲,是概念的单一化过程; 从数据依赖上说,是逐步去除非主属性对码的 部分依赖和传递依赖,6.3 模式的分解,规范化:把低一级的关系模式分解为若干个高一级的关系模式的过程。只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义。,关系模式分解的标准,给定R(U,F), 将其分解成 R1(U1,F1), R2(U2,F2
7、), .Rn(Un,Fn)三种模式分解等价的定义: 分解具有无损连接性 U=U1U2 Un 分解要保持函数依赖 F与Fi等价 分解既要保持函数依赖,又要具有无损连 接性,模式的分解(续),例:S-D-L(Sno, Sdept, Sloc) F= SnoSdept,SdeptSloc,SnoSloc 分解方法可以有多种: 1. S-D-L分解为三个关系模式 R1(Sno)R2(Sdept) R3(Sloc)2. SL分解为下面二个关系模式 R1(Sno, Sloc)R2(Sdept, Sloc)结论:1和2属于有损分解,模式的分解(续),例:S-D-L(Sno, Sdept, Sloc) F=
8、SnoSdept,SdeptSloc,SnoSloc 分解方法可以有多种: 3. S-D-L分解为下面二个关系模式 S-L(Sno, Sloc)S-D(Sno, Sdept)4. 将S-D-L分解为下面二个关系模式 S-D(Sno, Sdept) S-L(Sdept, Sloc)结论:3和4属于无损分解; 3的分解不保持FD, 4的分解保持FD。,定理6.3.1 若要求分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到3NF。,模式分解的方法简介,1、形式化方法给定R(U,F)求F的较小函数依赖集候选码PK和Fmin Fmin=F1, F2, Fn, 其中Fi: Xi YiR1(U1,F1), R2(U2,F2), .Rn(Un,Fn), R(PK) 即为分解的结果,其中Ui=XiYi, Ri是3NF。2、语义上的方法确定实体和联系;确定属性,下课了。,休息一会儿。,研究,