320 likes | 505 Views
数据库原理与应用. 16 关系数据理论 - 范式 ② 郑捷. 关系数据理论. 问题的提出 规范化 公理系统 模式的分解. 数据库原理与应用. 郑捷 lzj@fjnu.edu.cn www.lzj.name. 2. 关系模式. 关系模式的形式化描述 一个五元组 R ( U , D , DOM, F ) 在本章中, D 和 DOM 关系不大 我们关注的是其中的三元组: R < U , F >. 数据库原理与应用. 郑捷 lzj@fjnu.edu.cn www.lzj.name. 3. 数据依赖. 一个关系内部属性与属性之间的一种约束关系
E N D
数据库原理与应用 16 关系数据理论 - 范式 ② 郑捷
关系数据理论 问题的提出 规范化 公理系统 模式的分解 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 2
关系模式 关系模式的形式化描述 一个五元组 R(U, D, DOM, F) 在本章中,D和DOM关系不大 我们关注的是其中的三元组: R<U, F> 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 3
数据依赖 一个关系内部属性与属性之间的一种约束关系 现实世界属性间相互联系的抽象 数据内在的性质,语义的体现 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 4
上述模式存在的问题 数据冗余太大 更新异常(Update Anomalies) 插入异常(Insertion Anomalies) 删除异常(Deletion Anomalies) 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 5
规范化 规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 6
函数依赖 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。 若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 7
平凡与非平凡依赖 在关系模式R(U)中,对于U的子集X和Y, 若X→Y,但Y≮X,则称X→Y是非平凡的函数依赖 若X→Y,但Y<X, 则称X→Y是平凡的函数依赖 例:在关系SC(Sno, Cno, Grade)中, 非平凡函数依赖: (Sno, Cno) → Grade 平凡函数依赖: (Sno, Cno) → Sno (Sno, Cno) → Cno 以下用小于号代替集合的包含符号 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 8
决定因素 若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。 若X→Y,Y→X,则记作X←→Y。 若Y不函数依赖于X,则记作X\→Y。 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 9
完全和部分函数依赖 在R(U)中,如果X→Y,并且对于X的任何一个真子集X',都有X'\ → Y, 则称Y对X完全函数依赖,记作 X →FY。 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖, 记作X → PY。 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 10
传递函数依赖 在R(U)中,如果X→Y,(Y≮X) ,Y\→X Y→Z,则称Z对X传递函数依赖。 记为:X →传递Z 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 11
码、候选码,主码 设K为R<U,F>中的属性或属性组合。若K→FU, 则K称为R的侯选码(Candidate Key)。 若候选码多于一个,则选定其中的一个做为主码(Primary Key)。 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 12
码中的属性 主属性与非主属性 包含在任何一个候选码中的属性 ,称为主属性(Prime attribute) 不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute) 全码 整个属性组是码,称为全码(All-key) 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 13
范式 范式(Normal Formal)是符合某一种级别的关系模式的集合 关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式 范式的种类 1NF, 2NF, 3NF, BCNF, 4NF, 5NF 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 14
关系数据理论 问题的提出 规范化 公理系统 模式的分解 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 15
第二范式 2NF • 定义:若R∈1NF,且每个非主属性完全函数依赖于码,则R∈2NF • 即:在1NF基础上消除部分依赖,得到2NF • 消除方式:;利用投影分解,将一个关系分解成若干个关系
案例 • 例:关系模式SLC(Sno, Sdept, Sloc, Cno, Grade) • 根据依赖分析,Sdept、Sloc和Cno不存在依赖关系 • 分解方式:本模式中存在两种完全依赖,那么就根据这两种完全依赖为依据,将其分解
第三范式 3NF • 定义:关系模式R<U, F>中不存在这样的码X,属性组Y和非主属性Z(Z不包含于Y),使得X→Y, Y→Z成立,Y\→X,则称R∈3NF • 即:在2NF基础上消除了对码的传递依赖 • 但是,多组候选码的情况除外 • 消除方式:还是通过投影分解关系
BC范式 BCNF • 定义:关系模式R<U, F>∈1NF。若X→Y且Y不包含于X时,X必含有码,则R∈BCNF • 即:每一个决定因素都包含码的1NF属于BCNF • 可以证明,BCNF比3NF更严格
案例 • 例:C(Cno, Cname, Pcno) • 例:SC(Sno, Cno, Grade) • 例:S(Sno, Sname, Sdept, Sage) • 例:SJP(S, J, P) • 反例:STJ(S, T, J)
3NF的漏洞 • 3NF中可能在主属性中存在对码的部分依赖和传递依赖
模式分解的彻底程度 • 当一个模式已经满足BCNF时,在函数依赖的范围内已经实现了彻底的分离 • 彻底消除了插入和删除的异常 • 但是除了函数依赖,还有一些其他形式的依赖
多值依赖 MVD • 定义:R(U)是属性集U上的一个关系模式,X、Y、Z是U的子集,并且Z=U-X-Y。关系模式R中多值依赖X→→Y成立,当且仅当对R的任意关系r,给定的一堆(x, z),有一组的Y的值,这组值仅仅决定于x而与z无关 • 在R(U)的任一关系r中,若存在元组t、s,使得t[X]=s[X],那么就必然存在元组w、v∈r,使得w[X]=v[X]=t[X],而w[Y]=t[Y],w[Z]=s[Z],v[Y]=s[Y],v[Z]=t[Z],则Y多值依赖于X,记为X→→Y。这里X、Y是U的子集,Z=U-X-Y。 • 若X→→Y,而Z=空集,则成为平凡的多值依赖
案例 • 例:178页的授课Teaching关系 • 对于一个课程和课本,有一组授课教师的值,但是这组教师的值取决于课程,更换成该课程的另外一组课程和课本,授课教师还是这些人 • 例:179页的仓库模型
多值依赖的特点 • 对称性 • 传递性 • 函数依赖可以看作多值依赖的特殊情况 • X→→Y,X→→ZX→→YZ • X→→Y,X→→ZX→→Y∩Z • X→→Y,X→→ZX→→Y-Z,X→→Z-Y
多值依赖的特点 • 多值依赖的有效性 与属性集的范围有关 • 函数依赖若成立,则对子集也成立,但是多值依赖不能断言对子集成立
第四范式 4NF • 定义:关系模式R<U, F>∈1NF,如果对于R的每个非平方多值依赖X→→Y(Y不包含于X),X都含有码,则R∈4NF • 4NF限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖 • 4NF允许的非平凡的多值依赖实际上是函数依赖 • 如果一个关系模式是4NF,则必定是BCNF • 用分解模式的方式消除非平凡的多值依赖
其它依赖和范式 • 除了函数依赖和多值依赖,还有很多依赖,比如连接依赖。 • 除了1NF到4NF,还有5NF等范式
规范化小结 • 规范化的基本思想是逐步消除数据依赖中的不合适的部分 • 基本手段就是分解关系
关系数据理论 问题的提出 规范化 公理系统 模式的分解 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 31
练习 • 195页,1、2题