收藏 分享(赏)

数据库第六章关系数据理论.ppt

上传人:myw993772 文档编号:8798317 上传时间:2019-07-12 格式:PPT 页数:31 大小:757KB
下载 相关 举报
数据库第六章关系数据理论.ppt_第1页
第1页 / 共31页
数据库第六章关系数据理论.ppt_第2页
第2页 / 共31页
数据库第六章关系数据理论.ppt_第3页
第3页 / 共31页
数据库第六章关系数据理论.ppt_第4页
第4页 / 共31页
数据库第六章关系数据理论.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、关系数据理论,要点,关系规范化理论研究背景 数据依赖 规范化(Normalization)理论 1NF、2NF、3NF、BCNF等范式 关系模式规范化的必要性及方法,6.1 问题的提出,问题提出: 针对一个具体问题,如何构造合适的(更好的)数据模式,即如何更好地设计数据库的逻辑结构? 关系数据理论的研究背景 关系模型建立在严格的数学基础上,并可向别的数据模型转换,因此常以关系模型为背景来讨论这个问题,背景知识,数据模式(schema) 数据库中全体数据的逻辑结构和特征描述,如数据记录的构成,数据间的联系,安全性、完整性要求等。常以某一种数据模型为基础。 关系模型的形式化定义 R(U,D,dom

2、,F),本章简化为R(U, F)。 候选码、主码、外码、全码。主码和外码提供了一个表示关系间联系的手段 不包含在任何码中的属性,叫做非主属性。,一个例子:学生-课程-成绩管理,客观事实: 一个系有若干学生,但一个学生只属于一个系;一个系只有一名负责人;一个学生可以选修多门课程,每门课程有若干学生选修;每个学生学习每一门课程有一个成绩。 设计如下单个模式 属性组U = 学号SNO,系名SDEPT,系负责人MN,课程名CNAME,成绩G 数据依赖:关系模式中各属性之间相互依赖、相互制约的联系。两种重要的数据依赖:函数依赖(与“自变量”和“函数值”之间的映射类比)多值依赖 (考试不做要求),问题和改

3、进,该模式的主码为(SNO,CNAME) 存在的问题 插入异常:一个系无学生或未安排课程时,无法存入系与负责人(实体完整性约束) 删除异常:一个系的学生全部毕业而没有招生时,系与负责人也随之删除(现实中该系仍存在) 更新异常:当某系负责人更换时,须更新该系所有学生信息中的数据,系统需付出的维护工作量很大 冗余太大:系名、负责人姓名重复存储 “包罗万象”的关系模式并不好!,原因:数据依赖存在一些不合适的性质,需寻找更好的模式,一个好的模式应具备以下四个条件:1、尽可能少的数据冗余 2、没有插入异常3、没有删除异常 4、没有更新异常S(SNO, SDEPT, )SG(SNO, CNAME, G,

4、) DEPT(SDEPT, MN, )一个好的关系模式并非在任何情况下均是效率上最优的,应结合实际的应用目的。如上例中,查询某个学生选修课程名及所在系的系主任时就需要通过连接(系统开销很大),如这样的查询是非常经常的,则该模式的运行效率就较低。关系的规范化:按照一定的规范设计关系模式,将结构复杂的关系分解成结构简单的关系,从而把有问题的关系数据库模式转变为好的关系数据库模式。,6.2.1 函数依赖,定义1 设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记

5、作 。 若 ,则X叫做决定因素。 若Y不函数依赖于X,则记作 。,对定义的说明,函数依赖是语义范畴的概念只能根据语义来确定一个函数依赖,而不能按照其形式化定义来证明一个函数依赖是否成立;(如在无重名前提下Sname Age 成立,否则就不存在此函数依赖)函数依赖关系的存在与时间无关它是关系中的所有元组均满足的约束条件,当关系中的元组增加、删除或更新均不能破坏它;函数依赖可以保证关系分解的无损连接性设R(X,Y,Z),X,Y,Z为不相交的属性集合,如果 或 ,则有R(X,Y,Z)=RX,Y RX,Z, 即R等于R的两组投影在X上的自然连接,保证了关系R分解后不会丢失原有的信息。,进一步说明:函数

6、依赖与属性之间联系类型的关系,如属性X与Y有1:1联系时, X Y当学生无重名时,SNo SName 如果属性X与Y有m:1的联系时,则只存在函数依赖X Y如SNo与Sage、SDept之间均为m:1SNo Sage、 SNo SDept如果属性X与属性Y有m:n的联系时,则X与Y之间不存在任何函数依赖关系如 SNo与CNo之间不存在函数依赖,函数依赖之(完全依赖与传递依赖),定义2 设R(U)是属性集U上的关系模式。X,Y是U的子集。如果 ,并且对于X的任何一个真子集X, 都有 ,则称Y对X完全函数依赖(“一个都不能少”),记作若对于X的某个真子集X, 则称Y对X部分函数依赖,记作NOTE:

7、只有当决定因素为组合属性时,讨论部分函数依赖才有 意义,当决定因素是单属性时,只能是完全函数依赖定义3 设R(U)是属性集U上的关系模式。X,Y,Z是U的子集,如果但 ,而 ( , )则称Z对X传递函 数依赖,记作,F,P,t,6.2.3 范式,范式:符合某种级别(对关系中数据依赖的要求)的关系模式。 范式种类 1NF, 2NF, 3NF, BCNF, 4NF,5NF 按级别(条件、要求)由低到高: 1NF 2NF 3NF BCNF 4NF 5NF 通常称某一关系模式R为第几范式,记作R xNF。,1NF(First Normal Form),定义:关系R中每个分量都是不可分割的数据项,则R

8、1NF。 说明:1NF是关系模式的基本要求。 举例: 关系模式S-L-C(学号SNO, 系SDEPT, 住处SLOC, 课程CNO, 成绩G)是1NF。,6.2.4 2NF,定义:若R 1NF, 且每个非主属性完全依赖于码,则R 2NF 说明:不存在非主属性部分依赖于码的关系为2NF 举例:关系模式 S-L-C(SNO, SDEPT, SLOC, CNO, G) 函数依赖图,关系模式S-L-C是不2NF?,不是,因为SDEPT和SLOC部分依赖于码,不是2NF可能出现的问题,插入异常 某学生没有选课时,无法插入其系、住处等信息。 删除异常 某学生所有的选课信息都删除后,其系、住处等信息也被删除

9、。 修改复杂(更新异常) 学生转系时,除了修改其系名外,还需修改其住处信息;另外,若该学生选修了多门课程,则其对应的重复存储的系、住处等信息需一一修改。 冗余 同系的所有学生的住处信息重复存储,同一学生选多门课程时,其系、住处信息重复存储。,解决办法,模式分解 依赖关系分析上例中的模式分解为下列两个模式,该模式是2NF SC(SNO, CNO, G) (SNO, CNO)G S-L(SNO, SDEPT, SLOC) SNO SDEPT, SNO SLOC, SDEPT SLOC,分解说明,一个1NF,但非2NF的关系总是可以被分解成为一组2NF的关系。 规范化过程中通过一组投影运算消除部分依

10、赖,建议作如下分解(No1): 已知关系R(A,B,C,D), (A,B)为主码,即(A,B)-C, (A,B)-D,且A-D(部分依赖), 则将R分解成为两个投影:R1(A,D), A为主码R2(A,B,C), (A,B)为主码,A为外码,6.2.5 3NF,定义:若R2NF, 且它的任何一个非主属性都不传递依赖于任何候选码,则R 3NF。 说明:即不存在非主属性部分依赖和传递依赖于码的关系为3NF。 推论:不存在非主属性的模式为3NF。 上例中得到的关系模式是2NFSC(SNO, CNO, G);S-L(SNO, SDEPT, SLOC);,S-L中存在传递传递依赖,故该模式不是3NF,不

11、是3NF可能存在的问题,插入异常 当新系没有招生时,其住处信息无法插入。 删除异常 当某系所有学生毕业而又没招生时,该系学生住处信息将丢失。 更新异常 一个系住处信息变动时,需改动较多记录。 冗余 每个系的系名与学生住处信息重复存储的次数等于该系学生人数,解决方法,继续模式分解 如上例中的模式可分解为3NFSC(SNO, CNO, G); (SNO, CNO) GS-D(SNO, SDEPT); SNO SDEPTD-L(SDEPT, SLOC); SDEPT SLOC,SNO,SDEPT,SLOC,SDEPT,分解说明,一个2NF,但非3NF的关系总是可以被分解成为一组3NF的关系。 规范化

12、过程中通过一组投影运算消除传递依赖,建议作如下分解(No2): 已知关系R(A,B,C), A为主码(A-B, A-C),且B-C,则将R分解成为两个投影:R1(B,C), B为主码R2(A,B), A为主码,B为外码,对3NF的进一步说明,在不考虑主属性对码的部分依赖和传递依赖时,可以认为已实现了彻底的分解,已消除了插入异常,删除异常,修改异常,冗余等问题。 但是,当关系中存在两个或更多的候选码时,尤其是在几个候选码内的属性存在部分交迭时,仅仅满足3NF仍有问题,需要进一步分解成BCNF。,6.2.6 BCNF,(Boyce/Codd Normal Form) 定义:若每一个决定因素都包含(

13、或是)码,则R BCNF。 说明 BCNF中所有的依赖都是包含码的依赖。 一个BCNF范式必是3NF,但一个3NF范式不一定是BCNF (3NF中可能存在主属性对码的部分和传递依赖)。无重名条件下 SNC(SNO,SN,CNO,SCORE)两个候选码:(SNO,CNO); (SN,CNO)函数依赖 : SNO SN(SNO,CNO) SCORE (SN, CNO) SCORE非主属性SCORE对码不存在部分函数依赖和传递函数依赖,但 决定因素SNO或SN不包含候选码,即主属性对码存在部分函数依赖(SNO,CNO) SN (SN,CNO) SNO故SNC 是3NF,非BCNF。其弊端?,P,P,

14、主属性对码的部分函数依赖,造成SNC较大的数据冗余,学生姓名的存储次数等于选课数,导致更新异常。当学生改名时,必须对该学生的每一记录逐一修改。BCNF是在函数依赖范畴内对关系模式的彻底分解,已消除了插入和删除异常。 通常认为BCNF是扩充的第三范式,一般数据库设计达到BCNF已足够。,实例,例1: 无并列名次时的SJP(学生S, 课程J, 名次P) (S,J)和(J,P) 均为候选码 函数依赖为(S,J)P, (J,P) S 其中,两个决定因素均包含(是)候选码 可见SJP BCNF 例2: 每教师只教一门课时的STJ(学生S, 教师T, 课程J)(S,T)和(S,J) 均为候选码 函数依赖为

15、(S,J) T, (S,T) J, T J 可见STJ 3NF(此例中无非主属性), 但STJ BCNF, 因T为决定因素,但不包含码,例子,前例是3NF, 也是BCNF SC(SNO, CNO, G); (SNO, CNO) G S-D(SNO, SDEPT); SNO SDEPT D-L(SDEPT, SLOC); SDEPT SLOC,SNO,SDEPT,SLOC,SDEPT,规范化,规范化 概念:将一个低一级范式的关系模式分解为若干个高一级范式的关系模式的过程。 目的:设计正确、良好的关系模式。 基本思想:逐步消除关系模式的数据依赖中不合适的部分,使模式达到一定程度的分离,但又不丢失原

16、模式中的信息。 模式分解的数学实质:投影。 说明 模式分解可以在很大程度上消除冗余,解决更新异常等问题,但也要付出做连接运算等效率上的代价。,规范化与数据库设计,如何辨别一个关系模式的“好坏”? 不存在部分和传递函数依赖等“不好”的性质的模式是“好”模式,否则会出现冗余和插入、删除、更新等异常现象 规范化过程是用于设计好的数据库的有力辅助,但并不是唯一的方法。最初的设计中尽量做到“概念单一化”,即做到让一个关系描述一个概念、一个实体或实体间的一种联系,这样所设计的关系模式将会接近或达到第三范式,甚至达到BCNF。,规范化过程小结,练习一,设计关于供应商供应零件的数据库,要求达到3NF 最初的设

17、计: R(S#, Sname, City, Status, P#, Pname, Color, Weight, QTY) 主码:(S#, P#) 函数依赖: S#Sname, S# Status, S# City, City Status, P# Pname, P# Color, P# Weight ( S#, P#) QTY 可见,其中有部分依赖,还有传递依赖。该模式仅为1NF,分解,第一步分解,消除部分依赖,得到:R1(S#, P#, QTY),(S#, P#)为码R2(S#, Sname, City, Status), S#为码R3(P#, Pname, Color, Weight), P#为码 其中,R1和R3都已达到3NF,但R2还存在传递依赖,仅仅是2NF 第二步分解,消除R2中的传递依赖,得到:R2-1(S#, Sname, City), S#为码R2-2(City, Status), City为码 这样,R1, R2-1, R2-2和R3就是达到3NF的关系模式。此例中也已达到BCNF,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报