第4章范式理论课件.ppt

上传人:牧羊曲112 文档编号:1624833 上传时间:2022-12-11 格式:PPT 页数:54 大小:456KB
返回 下载 相关 举报
第4章范式理论课件.ppt_第1页
第1页 / 共54页
第4章范式理论课件.ppt_第2页
第2页 / 共54页
第4章范式理论课件.ppt_第3页
第3页 / 共54页
第4章范式理论课件.ppt_第4页
第4页 / 共54页
第4章范式理论课件.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《第4章范式理论课件.ppt》由会员分享,可在线阅读,更多相关《第4章范式理论课件.ppt(54页珍藏版)》请在三一办公上搜索。

1、第6章 范式理论,目 录,本章要点 数据库规范化问题的提出和主要内容 函数依赖 关系模式的分解 关系模式的范式 教学目标了解数据库规范化问题的产生和规范化的主要内容 掌握函数依赖的相关概念 熟悉关系模式的分解 掌握关系模式的范式的概念及规范化过程,6.1关系数据库设计中存在的问题,示例:考虑为管理职工的工资信息而设计一个关系模式。,问题:麻烦! 好麻烦!插入异常:如果没有职工具有8级工资,则8级工资的工资数额就难以插入。删除异常:如果仅有职工赵明具有4级工资,如果将赵明删除,则有关4级工资的工资数额信息也随之删除了。数据冗余:职工很多,工资级别有限,每一级别的工资数额反复存储多次。更新异常:如

2、果将5级工资的工资数额调为620,则需要找到每个具有5级工资的职工,逐一修改。,6.1关系数据库设计中存在的问题,问题:麻烦! 好麻烦!插入异常: 元组插不进去; 插入一个元组却要求插入多个元组。删除异常: 删除时删掉了其他信息; 删除一个元组却删除了多个元组。更新异常:更新一个元组却要求更新多个元组。数据冗余:同一个数据在系统中多次重复出现。,6.1关系数据库设计中存在的问题,解决之道:分解! 再分解! 原来数据库设计可以如此简单!职工表 级别表,快速热身:它有哪些问题?学生关系模式S(学号, 姓名 , 系别 , 班主任 , 课程号 , 成绩),上表(关系模式)存在的缺陷:1、数据重复、冗余

3、。2、新增学生或课程,若未选课,则无法插入记录,因为(学号,课程号)为主键。3、如果有学生退学,则需将相关信息全部删除,导致课程信息可能丢失。,快速热身:它有哪些问题?学生关系模式S(学号, 姓名 , 系别 , 班主任 , 课程号 , 成绩),6.1关系数据库设计中存在的问题,改进的关系模式,6.1关系数据库设计中存在的问题,在数据库中,数据之间存在着密切地联系。在数据库技术中,把数据之间存在的联系称为“数据依赖”。在数据库规范化设计中,设计人员地一个职责就是把数据依赖找出来。函数依赖是基本的一种依赖。,6.2 函数依赖(Functional Dependency),回顾:函数熟悉的概念。 Y

4、=f(x):x和Y之间数量上的对应关系。给定x值,Y值与之对应。称x函数决定Y,或Y函数依赖于x。 在关系数据库中讨论函数或函数依赖注重的是语义上的关系。 如:省=f(城市) Y=f(x),函数依赖:任给R(U),U为属性集,x、y为U的子集,如果对于x的每个值,y有唯一确定的值与之对应,则称x决定y,或y函数依赖于x。记为:xy。例1:关系模式Student(Sno,Sname,Ssex,Sage,Sdept) 中 ,Sno函数决定Sname和Sdept ,或Sname和Sdept函数依赖于Sno,记为 Sno - Sname , Sno-Sdept,6.2函数依赖,注:函数依赖是属性间的一

5、种联系,6.2函数依赖,建立一个描述学校教务的数据库:学生的学号(Sno)、所在系(Sdept)系主任姓名(Mname)、课程名(Cname)成绩(Grade)单一的关系模式 : Student U Sno, Sdept, Mname, Cname, Grade , 根据学号可以确定学生的姓名;, 一个系有若干学生,但一个学生只属于一个系;, 一个系只有一名主任;,一个学生可以选修多门课程,每门课程有若干学生选修;, 每个学生所学的每门课程都有一个成绩。,根据如下描述写出依赖关系:,SNoSName,SNoSDept,SDeptMName,(SNo,CName)Score,F=SNoSName

6、, SNoSDept, SDeptMName, (SNo,CName)Score,例2:一个学校数据库中的唯一关系模式Student(U,F ) , 其中 U=Sno,Sdept,Mname,Cname,Grade F=Sno-Sdept ,Sdept -Mname, (Sno,Cname) -Grade ,插入异常不能插入一个没有学生的系,删除异常删除某系的一个学生时(如毕业)会删除系的相关信息,数据冗余太大系主任出现的次数和该系学生选课总数相同,Why?某些数据依赖引起的!,分解为三个关系模式Student(Sno,Sdept,Sno-Sdept);SC(Sno,Cname,Grade,(

7、Sno,Cname)-Grade);Dept(Sdept,Mname,Sdept-Mname);,Mname:系主任,完全函数依赖:若函数依赖X Y成立,且X是能够推出Y的最小集合,即不存在X的真子集Z,使Z Y成立,则称Y完全函数依赖于X,简称Y完全依赖于X,记做 ,否则称Y部分函数依赖于X,简称Y部分依赖于X,记做,例:(SNo,CName)SName,SNoSName,(SNo,CName)Score,【例】有一关系模式S(学号,姓名,系名称,出生年月)。,若无重名还存在学号姓名函数依赖,【例】有一关系模式SC(学号,课程号,成绩,教师编号)。,传递函数依赖: 若X Y,Y Z,并且 Y

8、 不能推出X ,Z不是Y的真子集 ,则称Z传递依赖于X 。,举例:,【例】关系模式R(学号,姓名,出生年月,系编号,系负责人),关系模式S(S# , SName , SDept , mname , C# , G)主码:(S#,C#)函数依赖:(S#,C#) G S# SName ,(S#,C#) SName S# SDept ,(S#,C#) SDept SDept mname,6.2函数依赖练习,检验:AC?CA?ABD?对于给出具体数据的表格,在判断时要看:当自变量字段取相同值时,对应的因变量的值是否也取相同的值。如果是,则是正确的。,6.2函数依赖练习,找出可能的函数依赖。,有一个关于学

9、生选课、教师任课的关系模式:R(S#, SNAME, C#, GRADE, CNAME, TNAME, TAGE)属性分别表示学生学号、姓名、选修课程的课程号、成绩、课程名、任课教师姓名和年龄等意义。* 如果规定,每个学号只能有一个学生姓名,每个课程号只能决定一门课程,那么可写出哪些形式的FD?,S#SNAME C#CNAME,(S#,C#)GRADE,C#(CNAME, TNAME, TAGE) TNAMETAGE,* 每个学生每学一门课程,有一个成绩,那么可写出什么形式的FD?,* 还写出其他什么形式的FD?,6.2函数依赖练习,6.2函数依赖练习,设关系模式R(A,B,C,D),在R的关

10、系中,属性值间有这样的联系:(1) A值与B值有一对多的联系,即每个A值有多个B值与之联系,而每个B值只有一个A值与之联系;(2) C值与D值之间有一对一联系,即每个C值只有一个D值与之联系,每个D值只有一个C值与之联系。 试根据这些规则写出相应的函数依赖。,根据条件(1),有:BA根据条件(2),有:CD 和 DC,6.3函数依赖,候选码:若关系中的某一属性组的值能唯一的标识一个元组,而其任何真子集都不能再标识,则称该属性组为候选码。简单的说候选码就是没有被选为主码的主属性,当一个关系有多个属性可以唯一标示时,就选取一个属性或者属性组为主码,剩下的属性或属性组就称为候选码.主属性:包含在每一

11、个候选码中的属性,称作主属性。,工人(工号,身份证号,姓名,性别,部门).显然工号和身份证号都能够唯一标示这个关系,所以都是主属性,我们选取工号为主码,那么身份证号就是候选码,反之,我们选择身份证号为主码,也可以让工号为候选码.,包含在任何一个候选键中的属性,叫主属性(Prime Attribute)。不包含在任何主键中的属性称为非主属性(Nonprime Attribute),或非键属性(Non-key Attribute)。,主码,简单地说,在一个关系表中主码能够唯一地标识每一个元组。也就是说,元组在主码属性上是不能有重复的。例如,把学生表的学号当主码的话,就不能有两个学号是一样的学生。

12、主码是一个属性或属性组。 候选码,一个关系表里只能有一个主码,成为主码的条件是:能够唯一地标识每一个元组。凡是达到这个条件的属性,都是候选码。主码就是从候选码里选出来的。 主属性,当主码只有一个属性时,那主属性自然是主码了。当主码是一个属性组时,这个属性组包含的属性都是主属性。 换一种说法,非主属性就是除开主码以外的属性。,外码:属性或属性组X不是关系模式R的码(既不是主码也不是候选码),但X是另一个关系模式的码,则称X是R的外部码,也称外码(Foreign key)。如在SC(Sno,Cno,Grade)中,Sno不是码,但Sno是关系模式S(Sno,Sdept,Sage)的码,则Sno是关

13、系模式SC的外部码 主码与外部码提供了一个表示关系间联系的手段。create table 表名( 列名 数据类型 ,列名 数据类型 ,primary key(列名 ,列名 ) ,foreign key (列名 ,列名 ) references 表名 (列名 ,列名 ),主码,外码,6.3 范式,6.3关系规范化,关系数据库范式理论是数据库设计的一种理论指南和基础,其既作为数据库设计优劣的判断依据,也可预测数据库系统可能出现的问题。 “范式” 是数据库设计过程中将要依据的准则,数据库结构必须满足这些准则,这些准则被称为规范化形式;在数据库设计过程中,对数据库进行检查和修改并使之符合范式的过程叫规

14、范化。 范式按照规范化的级别分为5种: 第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第一范式(5NF)。 数据库设计过程中通常需要用到的是前三类范式。,6.3关系规范化,定义范式是对关系的不同数据依赖程度的要求。通过模式分解将一个低级范式转换为若干个高级范式的过程称作规范化(概念的纯粹化)。,2NF,3NF,BCNF,4NF,5NF,第一范式(1NF),定义关系中每一分量不可再分。即不能以集合、序列等作为属性值。,第一范式(1NF),分量是否需要再分,与具体应用有关。如果用到值的一部分,则需要进一步分割。如果只是查询出生日期,则它满足1NF。如果查询两人生日

15、是否相同,则只比较月、日,需要将生日分解,就不满足1NF。,第一范式(1NF),并非所有满足1NF的模式都是“好”的关系模式 。,SLC (Sno, Sdept , Sloc, Cno, Grade),删除异常删除某学生的最后一门选修记录,会删除该学生的相关信息,插入异常无法插入一个尚未选课的学生信息,数据冗余太大某学生的Sdept和Sloc出现的次数和该学生选课总数相同,Why?Sdept和Sloc对码的部分依赖,第一范式(1NF)要求每个数据项都不能拆分两个或两个以上的数据项。,将地址字段分为城市、地区、街道、门牌号和邮政编码多个字段,以满足1NF,第二范式(2NF) 若关系模式R 1NF

16、 ,并且每一个非主属性都完全函数依赖于R的码,则R2NF。,2NF是在1NF上消除了可能存在的非主属性对码的部分依赖。,若R1NF 且(所有候选)码只有一个属性,则R2NF 。,投影分解,1NF,2NF,一定程度上解决了“异常”问题,第二范式(2NF),快速热身关系模式R(A,B,C,D),码为AB,给出它的一个函数依赖集,使得R属于1NF而不属于2NF。,第二范式(1NF):如果一个数据表已满足1NF,而且该数据表中的任何一个非主键字段的数据项都完全函数依赖该数据表的主键字段,则满足2NF。,该数据表的主键是“项目编号”,“负责人部门”完全依赖于“负责人”,而不取决与“项目编号“,将数据表分

17、成“项目表”和“部门表”,以满足2NF,第三范式(3NF),如果关系模式R满足2NF,并且其任何一个非主属性都不传递函数依赖于任何候选关键字,则称R为第三范式,记为3NF。,2NF,Why?存在非主属性对码的传递函数依赖(Sloc传递依赖于Sno),插入异常无法插入一个尚未招生的系,删除异常删除某系全部学生,则会删除该系信息,数据冗余大某系的住处Sloc重复次数和该系学生数相同,投影分解,3NF,3NF,快速热身关系模式R(A,B,C,D),码为AB,给出它的一个函数依赖集,使得R属于2NF而不属于3NF。,第三范式(3NF)数据表已满足第2范式,且其任何2个非主键字段的数据之间不存在函数依赖

18、关系。,“津贴”字段的数值是“基本工资”的10%,2个字段有依赖关系,不满足3NF,应删除“津贴”字段以满足3NF。,bcnf消除主属性对码的部分和传递依赖 4NF是消除非函数依赖的多值依赖,盘点,盘点,消除决定因素非码的函数依赖,1NF,2NF,3NF,消除非主属性对码的部分函数依赖,消除非主属性对码的传递函数依赖,盘点,一个低一级范式的关系模式,通过模式分解转化为若干个高一级范式的关系模式的集合,这种分解过程叫作关系模式的规范化。 规范化的目的是使结构合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新。规范化的原则是:遵从概念单一化“一事一地”的原则,即一个关系模式描述一个实体或实

19、体间的一种联系。规范的实质就是概念单一化。,盘点,不好的数据库设计存在数据冗余,操作异常。函数依赖的分析提供了很好的数据库设计思路。对数据库设计过程中初始函数依赖关系的采集是通过理解数据项和企业的规则来决定函数依赖的。根据函数依赖找出关系的候选码、主属性、非主属性。不好的数据库模式的原因是表达函数依赖的方式不妥,通过模式的分解,研究并消除属性之间的部分依赖、传递依赖即可得到高级别范式的模式。,盘点,模式好坏的评价标准是范式,但不能说规范化程度越高的关系模式就越好。从不同角度的分解都可以得到高级别的范式,一般不是从1NF到2NF,2NF到3NF的。实际使用时,一般是基于3NF进行,但根据实际情况

20、,不达3NF的情况也很常见。1NF消去对主码的部分函数依赖后=2NF。 2NF消去对主码的传递函数依赖后=3NF。 bcnf消除主属性对码的部分和传递依赖 4NF是消除非函数依赖的多值依赖,范式规范化的步骤:1、找到候选码2、找到非主属性3、判断范式级别4、分解,例题:有表格sc (sno,sname,sdept,mname,cno,cname,grade),判断其满足第几范式,并将其分解成满足3NF解答:1、候选码(sno,cno)2、找到非主属性(sname,sdept,mname, cname,grade)3、(sno,cno) sname sno sname (sno,cno) sde

21、pt sno sdept (sno,cno) mname sno mname (sno,cno) cname cno cname (sno,cno) grade (sno,cno) grade 4、sc1(sno,sname,sdept,mname) sc2(cno,cname) sc3(sno,cno,grade) 满足2NF5、sno sdept,sdept mname 存在传递依赖 分解成:sc11(sno,sname,sdept) sc12(sdept,mname) sc11(sno,sname,sdept) sc12(sdept,mname) sc2(cno,cname) sc3(s

22、no,cno,grade)满足3NF,练习,1、薄书P91页132、厚书P57页6,73、关系模式s(配件编号,配件名称,配件规格,供应商名称,供应商地址,价格,库存量,占用资金),看是否符合3NF,如果不符合,请规范到3NF.,P57,6答案:R(A,B,CD,E) FD(A BC,CD E,B D,E A)A BC A B,A C(分解规则) B D A D(传递规律) A C且A D A CD(合并规律) CD E A E A为候选码, E A E为候选码 CD E 则CD为候选码满足3NF,R1(A,B,C,D,E)满足BCNF,R11(A,B,C),R12(C,D,E),1.设工厂里有一个记录职工每天日产量的关系模式: R(Eno,Date,Output,Pno,PDirector)。 其中,Eno表示职工号,Date表示日期,Output表示职工日产量, Pno表示车间号,Pdirector表示车间主任 如果规定: 每个职工每天只有一个日产量; 每个职工只能隶属于一个车间,一个车间有多个职工; 每个车间只有一个车间主任。(1)根据上述规定,写出关系模式R的基本函数依赖;(2)试写出关系模式R的候选键,并写出求解过程;(3)试问关系模式R最高已经达到第几范式?为什么?(4)若不满足第三范式,请将其分解使其满足三范式。,练习,谢谢!,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号