数据库课件6db关系数据库理论.ppt

上传人:m**** 文档编号:570139943 上传时间:2024-08-02 格式:PPT 页数:81 大小:471KB
返回 下载 相关 举报
数据库课件6db关系数据库理论.ppt_第1页
第1页 / 共81页
数据库课件6db关系数据库理论.ppt_第2页
第2页 / 共81页
数据库课件6db关系数据库理论.ppt_第3页
第3页 / 共81页
数据库课件6db关系数据库理论.ppt_第4页
第4页 / 共81页
数据库课件6db关系数据库理论.ppt_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《数据库课件6db关系数据库理论.ppt》由会员分享,可在线阅读,更多相关《数据库课件6db关系数据库理论.ppt(81页珍藏版)》请在金锄头文库上搜索。

1、第六章 关系数据理论n任何一个二目关系模式任何一个二目关系模式R R(A A,B B)一定属于一定属于BCNFBCNF吗吗?n一个全是主属性的关系模式一定可以达到第几范一个全是主属性的关系模式一定可以达到第几范式?式?n一个全码的关系模式一定可以达到第几范式?一个全码的关系模式一定可以达到第几范式?n关系模式关系模式R R(A A,B B,C C),),有函数依赖集有函数依赖集F FAB AB C,BC A,C,BC A,则最高达到第几范式?则最高达到第几范式?n n应用系统设计的共同问题:应用系统设计的共同问题:n n如何把现实世界表达成合适的数据库模式如何把现实世界表达成合适的数据库模式如

2、何把现实世界表达成合适的数据库模式如何把现实世界表达成合适的数据库模式, , , ,即设计即设计即设计即设计数据库的逻辑结构数据库的逻辑结构数据库的逻辑结构数据库的逻辑结构n n以关系模型为背景讨论:以关系模型为背景讨论:n n针对一个具体问题针对一个具体问题针对一个具体问题针对一个具体问题, , , ,如何构造合适的数据模式如何构造合适的数据模式如何构造合适的数据模式如何构造合适的数据模式? ? ? ?n n构造几个关系构造几个关系构造几个关系构造几个关系? ? ? ?n n每个关系由哪些属性组成每个关系由哪些属性组成每个关系由哪些属性组成每个关系由哪些属性组成? ? ? ?n n等等。等等

3、。等等。等等。n n这些直接决定数据库的运行效率这些直接决定数据库的运行效率这些直接决定数据库的运行效率这些直接决定数据库的运行效率n关系关系DBDB设计理论(规范化理论)研究的是设计理论(规范化理论)研究的是关系关系模式中各属性之间的数据依赖关系及其对关系模式中各属性之间的数据依赖关系及其对关系模式性能的影响模式性能的影响,探讨,探讨“好好”的关系模式应该的关系模式应该具备的性质,以及达到具备的性质,以及达到“好好”的关系模式的设的关系模式的设计算法。计算法。n规范化理论规范化理论 -解决解决如何设计一个适合的关如何设计一个适合的关系数据库系统系数据库系统的问题的问题n n判断关系模式优劣的

4、理论标准判断关系模式优劣的理论标准判断关系模式优劣的理论标准判断关系模式优劣的理论标准n n帮助我们预测可能出现的问题帮助我们预测可能出现的问题帮助我们预测可能出现的问题帮助我们预测可能出现的问题n n关系模型有严格的数学理论基础关系模型有严格的数学理论基础关系模型有严格的数学理论基础关系模型有严格的数学理论基础n n可以向其它模型转换可以向其它模型转换可以向其它模型转换可以向其它模型转换n n具有普遍理论意义具有普遍理论意义具有普遍理论意义具有普遍理论意义关系模式的形式化定义关系模式的形式化定义n n关系模式由五部分组成,即它是一个五关系模式由五部分组成,即它是一个五元组:元组:n nR(U

5、, D, DOM, F)R(U, D, DOM, F)n nR R R R: 关系名关系名关系名关系名n nU U U U: 组成该关系的属性名集合组成该关系的属性名集合组成该关系的属性名集合组成该关系的属性名集合n nD D D D: 属性组属性组属性组属性组U U U U中属性所来自的域中属性所来自的域中属性所来自的域中属性所来自的域n nDOMDOMDOMDOM:属性向域的映象集合属性向域的映象集合属性向域的映象集合属性向域的映象集合n nF F F F: 属性间数据的依赖关系集合属性间数据的依赖关系集合属性间数据的依赖关系集合属性间数据的依赖关系集合6.16.1问题的提出问题的提出 关

6、系的规模关系的规模 1.1.一个关系中信息量与关系的列数成正比一个关系中信息量与关系的列数成正比 信息量信息量 列数列数 一个关系中一个关系中的信息量多的信息量多少才最合适,少才最合适,是不是属性是不是属性越多越好?越多越好? 2.2.关系操作关系操作高效:高效: 关系运算关系运算 、 ;单表单表低效:低效: 、 ;多表;多表增加关系中增加关系中的列数是不的列数是不是可以减少是可以减少联接操作,联接操作,是不是属性是不是属性越多越好?越多越好? 3.举例举例1:Class(clno,dept,major)S(sno,sname,sex,birthdate,clno,address)C(cno,

7、cname,score,pcno)SC(sno,cno,p1,p2,p3)max(clno, dept, major sno, sname,sex, birthdate, address cno, cname, score, pcno , p1 , p2 , p3) 共共18个属性个属性共共15个属性个属性n 数据冗余数据冗余设每个字段设每个字段10 Byte10 ByteS S: 有有 5000050000个记录个记录 500006050000603103106 6 Byte ByteClassClass:有:有10001000个记录个记录 1000301000303103104 4 Byt

8、e ByteC C:有:有500500个记录个记录 50040500402102104 4 Byte ByteSCSC:有:有50000500004040个记录个记录 500005000040405050 1101108 8 Byte Byte共:共:3103106 63103104 4 2102104 4 1101108 8 = 1030510 = 10305104 4 1.0305101.0305108 8 maxmax: 5000040150500004015030010300106 6 3103108 8同一数据在同一数据在DBDB中多次无控制冗余存放造成的。中多次无控制冗余存放造成的

9、。 MaxMax表存在的问题表存在的问题 MaxMax表存在的问题(续)表存在的问题(续)n插入异常:合法数据无法入库。插入异常:合法数据无法入库。 关系关系 maxmax码:(码:( snosno , ,cnocno ) 一一个个新新生生入入校校时时,已已是是学学生生,但但没没有有选选课课,这这时时不不能能入入库库,且且查询学生时无法查到。查询学生时无法查到。n删除异常:删除操作造成有效数据的丢失。删除异常:删除操作造成有效数据的丢失。 如如:有有门门课课程程只只有有一一人人选选修修,此此人人毕毕业业时时,将将删删除除其其所所有有选选课课程的信息。这时查询课程信息时将无法得到该课程。程的信息

10、。这时查询课程信息时将无法得到该课程。n修改异常:一个数据的修改,引起数据库中多处数据的更新。修改异常:一个数据的修改,引起数据库中多处数据的更新。将将“数数据据库库原原理理”课课程程的的名名称称改改为为“数数据据库库系系统统基基础础”时时,将将需需修改多个记录修改多个记录n这这些些异异常常现现象象在在有有四四个个表表时时不不会会发发生生,所所以以数数据据库库结结构构不不是是属属性越多越好。性越多越好。注意:n n插入异常:插入异常:n n 该插入的数据未插入该插入的数据未插入该插入的数据未插入该插入的数据未插入n n 不该插入的数据被插入不该插入的数据被插入不该插入的数据被插入不该插入的数据

11、被插入n n删除异常:删除异常:n n 该删除的数据未删除该删除的数据未删除该删除的数据未删除该删除的数据未删除n n 不该删除的数据被删除不该删除的数据被删除不该删除的数据被删除不该删除的数据被删除n4 4 举例举例2 2考虑为管理职工的工资信息而设计一个关系模式,考虑为管理职工的工资信息而设计一个关系模式,该模式有什么问题?该模式有什么问题?n n插入异常插入异常插入异常插入异常:如果没有职工具有如果没有职工具有如果没有职工具有如果没有职工具有8 8 8 8级工资,则级工资,则级工资,则级工资,则8 8 8 8级工资的工资数额就级工资的工资数额就级工资的工资数额就级工资的工资数额就难以插入

12、。难以插入。难以插入。难以插入。n n删除异常删除异常删除异常删除异常:如果仅有职工赵明具有如果仅有职工赵明具有如果仅有职工赵明具有如果仅有职工赵明具有4 4 4 4级工资,如果将赵明删除,级工资,如果将赵明删除,级工资,如果将赵明删除,级工资,如果将赵明删除,则有关则有关则有关则有关4 4 4 4级工资的工资数额信息也随之删除了。级工资的工资数额信息也随之删除了。级工资的工资数额信息也随之删除了。级工资的工资数额信息也随之删除了。n n数据冗余数据冗余数据冗余数据冗余:职工很多,工资级别有限,每一级别的工资数额反复职工很多,工资级别有限,每一级别的工资数额反复职工很多,工资级别有限,每一级别

13、的工资数额反复职工很多,工资级别有限,每一级别的工资数额反复存储多次。存储多次。存储多次。存储多次。n n更新异常更新异常更新异常更新异常:如果将如果将如果将如果将5 5 5 5级工资的工资数额调为级工资的工资数额调为级工资的工资数额调为级工资的工资数额调为620620620620,则需要找到每个,则需要找到每个,则需要找到每个,则需要找到每个具有具有具有具有5 5 5 5级工资的职工,逐一修改。级工资的职工,逐一修改。级工资的职工,逐一修改。级工资的职工,逐一修改。n n结论:结论:n n该关系模式不是一个好的模式。该关系模式不是一个好的模式。该关系模式不是一个好的模式。该关系模式不是一个好

14、的模式。n n“ “好好好好” ”的模式:的模式:的模式:的模式:n n不会发生插入异常、删除异常、更新异常,不会发生插入异常、删除异常、更新异常,不会发生插入异常、删除异常、更新异常,不会发生插入异常、删除异常、更新异常,n n数据冗余应尽可能少。数据冗余应尽可能少。数据冗余应尽可能少。数据冗余应尽可能少。n n原因:由存在于模式中的某些数据依赖引起的原因:由存在于模式中的某些数据依赖引起的: 工号工号姓名姓名 工号工号级别级别 级别级别工资工资MaxMax表存在问题原因表存在问题原因分析可知:这与数据库文件的结构中各属性间的关系分析可知:这与数据库文件的结构中各属性间的关系 有关。有关。s

15、no sno 决定决定 snamesname , sex, , sex, clnoclno, address, dept, major, address, dept, majorClnoClno 决定决定 dept,majordept,majorCno Cno 决定决定 cnamecname, score, , score, pcnopcnosnosno, ,cnocno 决定决定 p p1 1 p p2 2 p p3 3愿望愿望n体现客观世界的信息体现客观世界的信息 n一个好的关系模式应冗余尽可能少;一个好的关系模式应冗余尽可能少;n一个好的关系模式应避免插入、删除异常;一个好的关系模式应避

16、免插入、删除异常;n异异常常原原因因是是关关系系模模式式中中存存在在不不合合适适的的属属性性间间联联系;系;n解决策略是消去不合适联系解决策略是消去不合适联系 ;n方法采用模式分解消去不合适的属性间联系。方法采用模式分解消去不合适的属性间联系。负面影响负面影响 :需要通过表连接做相关信息查询,系统开销大!6.2 规范化n n规范化理论规范化理论正是用来改造关系模式,通过分正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,解关系模式来消除其中不合适的数据依赖,以解决以解决插入异常、删除异常、更新异常和数插入异常、删除异常、更新异常和数据冗余据冗余问题,把不好的关系模式变成好的关问

17、题,把不好的关系模式变成好的关系模式。系模式。数据依赖n n数据依赖数据依赖n n函数依赖函数依赖函数依赖函数依赖(Functional Dependency,FD)(Functional Dependency,FD)(Functional Dependency,FD)(Functional Dependency,FD)n n多值依赖多值依赖多值依赖多值依赖( ( ( (MultivaluedMultivaluedMultivaluedMultivalued Dependency,MVD) X Dependency,MVD) X Dependency,MVD) X Dependency,MVD

18、) Xn n数据依赖是针对数据模式,而不是特定的实数据依赖是针对数据模式,而不是特定的实例例n n是属性间的关联是属性间的关联n n是一种约束是一种约束n n假设给定假设给定假设给定假设给定 X X X X 属性的值,就知道属性的值,就知道属性的值,就知道属性的值,就知道 Y Y Y Y的值,那么的值,那么的值,那么的值,那么 X X X X 函函函函数决定数决定数决定数决定 Y Y Y Y,记作记作记作记作XYXYXYXY函数依赖函数依赖 函数依赖的定义:函数依赖的定义: 若对于若对于若对于若对于R(U)R(U)R(U)R(U)的任意一个可能的关系的任意一个可能的关系的任意一个可能的关系的任

19、意一个可能的关系r r r r,r r r r中不可能中不可能中不可能中不可能存在两个元组在存在两个元组在存在两个元组在存在两个元组在X X X X上的属性值相等,上的属性值相等,上的属性值相等,上的属性值相等, 而在而在而在而在Y Y Y Y上的属上的属上的属上的属性值不等,性值不等,性值不等,性值不等, 则称则称则称则称 “ “X X X X函数确定函数确定函数确定函数确定Y Y Y Y” ” 或或或或 “ “Y Y Y Y函数函数函数函数依赖于依赖于依赖于依赖于X X X X” ”,记作记作记作记作XYXYXYXY。 称称X X为决定因素。为决定因素。 若若若若Y Y Y Y不函数依赖于

20、不函数依赖于不函数依赖于不函数依赖于X, X, X, X, 则记为则记为则记为则记为XYXYXYXY。函数依赖例如:例如:SDCSDC(SNO(SNO(学学号号),),SnameSname( (姓姓名名),Sage(),Sage(年年龄龄),),SdeptSdept( (系系别别) ),Dean(Dean(系主任系主任) ),CNOCNO(课程号课程号),),GradeGrade(成绩)成绩)SDCSDC中的函数依赖:中的函数依赖:SNOSNO SnameSname SNOSNO Sage Sage SNOSNOSDEPTSDEPT,SDEPT SDEPT DEAN, DEAN,(SNO,CN

21、OSNO,CNO) GRADEGRADE说明说明n n函数依赖不是指关系模式函数依赖不是指关系模式R R的某个或某些关系的某个或某些关系实例满足的约束条件,而是指实例满足的约束条件,而是指R R的的所有关系实所有关系实例例均要满足的约束条件。均要满足的约束条件。n n函数依赖是语义范畴的概念。只能根据函数依赖是语义范畴的概念。只能根据数据的数据的语义语义来确定函数依赖。来确定函数依赖。 例如例如“姓名姓名年龄年龄”这个函数依赖只有在不允这个函数依赖只有在不允许有同名人的条件下成立许有同名人的条件下成立n n函数依赖反映了一种语义完整性约束函数依赖反映了一种语义完整性约束说明(续)说明(续)函数

22、依赖与属性间的联系类型有关函数依赖与属性间的联系类型有关关系内属性间的联系关系内属性间的联系关系内属性间的联系关系内属性间的联系n n1 1 1 11 1 1 1 (one to oneone to oneone to oneone to one)关系关系关系关系 一一对应关系:一一对应关系:一一对应关系:一一对应关系:y=f(x) y=f(x) y=f(x) y=f(x) 单值函数单值函数单值函数单值函数 例:例:例:例:snosnosnosno: : : : sname sname sname sname 1 1 1 1:1 1 1 1(StudentsStudentsStudentsSt

23、udents) 一个学号只对应一个学生一个学号只对应一个学生一个学号只对应一个学生一个学号只对应一个学生(S)(S)(S)(S)n n1 1 1 1:n n n n (one to manyone to manyone to manyone to many)一对多的关系一对多的关系一对多的关系一对多的关系 clnoclnoclnoclno: : : :sno sno sno sno 1 1 1 1:n n n n 一个班级内对应多个学生一个班级内对应多个学生一个班级内对应多个学生一个班级内对应多个学生(S)(S)(S)(S)n nm m m m:n n n n(many to manymany

24、 to manymany to manymany to many)多对多关系多对多关系多对多关系多对多关系 在在在在sc sc sc sc 中中中中 snosnosnosno: : : :cno cno cno cno m m m m:n n n n 多对多的关系多对多的关系多对多的关系多对多的关系 (SCSCSCSC)根据函数依赖的定义,可找出下面规律:根据函数依赖的定义,可找出下面规律:n 在一个关系模式中,如属性在一个关系模式中,如属性X X,Y Y有有1 1:1 1联系,联系, 则存在函数依赖则存在函数依赖XYXY、YXYX,可,可记作记作X XY Yn X X、Y Y是是1 1:m

25、m联系,则存在联系,则存在YXYX,但,但XYXYn X X、Y Y是是n:mn:m联系,则联系,则X X、Y Y之间不存在任何函数依赖之间不存在任何函数依赖说明(续)说明(续)函数依赖函数依赖函数依赖的导出函数依赖的导出 n n通过关系中各属性的实际意义直接定义通过关系中各属性的实际意义直接定义通过关系中各属性的实际意义直接定义通过关系中各属性的实际意义直接定义n n通过通过通过通过AmstrongAmstrongAmstrongAmstrong公理推导公理推导公理推导公理推导n n通过有代表性的关系值反推通过有代表性的关系值反推通过有代表性的关系值反推通过有代表性的关系值反推函数依赖函数依

26、赖举例举例n检验:检验:ACAC?CACA?ABDABD?n辨识:辨识:n模式上成立的依赖:依赖在模式的模式上成立的依赖:依赖在模式的所有关系实例所有关系实例上都上都成立成立A A A AB B B BC C C CD D D Da1a1a1a1b1b1b1b1c1c1c1c1d1d1d1d1a1a1a1a1b2b2b2b2c1c1c1c1d2d2d2d2a2a2a2a2b2b2b2b2c2c2c2c2d2d2d2d2a2a2a2a2b3b3b3b3c2c2c2c2d3d3d3d3a3a3a3a3b3b3b3b3c2c2c2c2d4d4d4d4A A A AB B B BC C C C1 1

27、1 12 2 2 23 3 3 34 4 4 42 2 2 23 3 3 35 5 5 53 3 3 33 3 3 3函数依赖函数依赖练习练习A AB B,A AC C,B BC CA A(B(B,C)C),(A(A,B)B)C C关系模式上的函数依赖是语义范畴的概念,我们只能根据语义关系模式上的函数依赖是语义范畴的概念,我们只能根据语义来确定函数依赖!来确定函数依赖!函数依赖的分类函数依赖的分类n平凡的平凡的函数依赖与函数依赖与非平凡的非平凡的函数依赖函数依赖n如果如果X XY Y,且,且Y Y X X,则称则称X XY Y为为平凡平凡的函数依赖。的函数依赖。即:如果对于函数依赖即:如果对于

28、函数依赖 A A1 1A A2 2AAn n A Ai i, A Ai i是是A A中的一个,中的一个,则该函数依赖就是平凡的函数依赖则该函数依赖就是平凡的函数依赖SNOSNOSNOSNO是平凡的函数依赖是平凡的函数依赖n如果如果X XY Y,且,且Y Y X X,则称则称X XY Y为为非平凡非平凡的函数依赖。的函数依赖。 如:如: snosnosnamesname,snosno snamesname 即:即:B B中中至少至少有一个属性不在有一个属性不在A A中中说明:对任何说明:对任何R R,一些平凡函数依赖总是成立的。一些平凡函数依赖总是成立的。 函数依赖的分类函数依赖的分类n n完全

29、函数依赖与部分函数依赖完全函数依赖与部分函数依赖n n在关系模式在关系模式在关系模式在关系模式R(U)R(U)R(U)R(U)中,如果中,如果中,如果中,如果XYXYXYXY,并且对于并且对于并且对于并且对于X X X X的任的任的任的任何一个真子集何一个真子集何一个真子集何一个真子集XXXX,都有都有都有都有 X Y, X Y, X Y, X Y, 则称则称则称则称Y Y Y Y完全函数依赖于完全函数依赖于完全函数依赖于完全函数依赖于X X X X,记作记作记作记作X X X X F F F F Y Y Y Y。n n若若若若XYXYXYXY,但,但,但,但Y Y Y Y不完全函数依赖于不完

30、全函数依赖于不完全函数依赖于不完全函数依赖于X X X X,则称则称则称则称Y Y Y Y部分函部分函部分函部分函数依赖于数依赖于数依赖于数依赖于X X X X,记作记作记作记作X X X X P P P P Y Y Y Y。 范例范例关系模式关系模式SDCSDC(SNO SNO ,SnameSname ,Sage,Sage,SDeptSDept,DEANDEAN,CNO,GRADECNO,GRADE)主码:主码:(SNoSNo,CNoCNo)函数依赖:函数依赖: ( (SNoSNo,CNoCNo) GradeGrade SnoSno SNameSName,( (SnoSno,CnoCno)

31、) SNameSName Sno Sno SDeptSDept,(SnoSno,CnoCno)SDeptSDept SDept SDept DEAN DEANn n注意:n n 只有当决定因素是组合属性时,讨论部分依赖才有意义n n传递传递函数依赖与函数依赖与直接直接函数依赖函数依赖 在在在在R(U)R(U)R(U)R(U)中中中中, , , ,如果如果如果如果X X X XY Y Y Y,(Y,(Y,(Y,(Y X),YX),YX),YX),YX,YX,YX,YX,YZ,Z,Z,Z,则称则称则称则称Z Z Z Z对对对对X X X X传传传传递函数依赖递函数依赖递函数依赖递函数依赖, , ,

32、 ,记做:记做:记做:记做: 提问:找出提问:找出SDCSDC(SNO,SNO,SnameSname,Sage,Sage,SDeptSDept,DEANDEAN,CNOCNO,GRADEGRADE)中的传递函数依赖。中的传递函数依赖。提问:找出关系模式提问:找出关系模式 ( (工号、姓名、级别、工资工号、姓名、级别、工资) )中的中的传递依赖。传递依赖。 说明:加上说明:加上说明:加上说明:加上yxyxyxyx,是避免是避免是避免是避免 x x x x y y y y,否则否则否则否则x zx zx zx z。直接直接x zx z函数依赖的分类函数依赖的分类传递传递n n设有关系模式设有关系模

33、式R R(职工名,项目名,工职工名,项目名,工资,部门名,部门经理),若规定每资,部门名,部门经理),若规定每位职工可参加多个项目,各领一份工位职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;资;每个项目只属于一个部门管理;每个部门只有一个经理。每个部门只有一个经理。思考:关系模式思考:关系模式R的基本函数依赖?的基本函数依赖?(项目,职工)(项目,职工)工资工资项目项目部门部门部门部门经理经理6.2.2 6.2.2 码码n n码码 ( (形式化定义形式化定义) )n n定义:设有关系模式定义:设有关系模式定义:设有关系模式定义:设有关系模式R(UR(UR(UR(U,F)F)F)

34、F),X X X X为为为为U U U U的子集,的子集,的子集,的子集,若若若若X X X X U U U U,则则则则X X X X为为为为R R R R的的的的一一一一个个个个候候候候选选选选码码码码(Candidate (Candidate (Candidate (Candidate Key)Key)Key)Key)。 n n最简单情况最简单情况最简单情况最简单情况单个属性为码;单个属性为码;单个属性为码;单个属性为码;n n最极端情况最极端情况最极端情况最极端情况全部属性为码,称为全码。全部属性为码,称为全码。全部属性为码,称为全码。全部属性为码,称为全码。f 码码n定义定义n主码主

35、码:若:若R(U , F)R(U , F)有多个候选码,则可以从中选有多个候选码,则可以从中选定一个作为定一个作为R R的主码。的主码。n主属性主属性:包含在每一个候选码中的属性,:包含在每一个候选码中的属性,称作主属性。称作主属性。n非主属性非主属性:不包含在每一个候选码中的属:不包含在每一个候选码中的属性,称作非主属性。性,称作非主属性。n全码全码:关系模式的码由整个属性组构成。:关系模式的码由整个属性组构成。SNO SNO SNAME SNAME,(,(SNOSNO,CNOCNO) SNAMESNAMEP P范例范例找出下面关系模式的主码:找出下面关系模式的主码: SDC(SNO , S

36、NAME , Sage,SDEPT , Dean , CNO , GRADE)SDC(SNO , SNAME , Sage,SDEPT , Dean , CNO , GRADE)函数依赖:函数依赖:(SNO(SNO,CNO)CNO) GRADE GRADEf f(SNO,CNO)(SNO,CNO) (SNO,SNAME,SDEPT, (SNO,SNAME,SDEPT, Dean Dean ,CNO,GRADE),CNO,GRADE)所以,(所以,(SNOSNO,CNOCNO)是该关系模式的码。是该关系模式的码。f fSNO SNO SDEPT SDEPT,(SNOSNO,CNOCNO) SDE

37、PTSDEPTp pp pSDEPTSDEPT Dean Dean ,SNOSNO Dean Dean ,(SNO(SNO,CNO) CNO) SDEPT SDEPTn n异常的原因异常的原因n n数据依赖的约束数据依赖的约束n n解决方法解决方法n n数据库设计的规范化数据库设计的规范化分解分解 n n范式是对关系的不同范式是对关系的不同数据依赖程度数据依赖程度的的要求,是规范化过程中为不同程度的要求,是规范化过程中为不同程度的规范化要求而设立的不同标准。规范化要求而设立的不同标准。6.2.3范式(Normal Forms)n n规范化规范化n n各种不同的范式都是以对关系模式的属性间各种不

38、同的范式都是以对关系模式的属性间各种不同的范式都是以对关系模式的属性间各种不同的范式都是以对关系模式的属性间允许的数据依赖加以限制的形式表示的。允许的数据依赖加以限制的形式表示的。允许的数据依赖加以限制的形式表示的。允许的数据依赖加以限制的形式表示的。n n一个关系满足某个范式所规定的一系列条件一个关系满足某个范式所规定的一系列条件一个关系满足某个范式所规定的一系列条件一个关系满足某个范式所规定的一系列条件时时时时, , , ,它就属于该范式。它就属于该范式。它就属于该范式。它就属于该范式。n n可以用规范化要求来设计数据库。可以用规范化要求来设计数据库。可以用规范化要求来设计数据库。可以用规

39、范化要求来设计数据库。n n也可以用来验证设计结果的合理性,用其指也可以用来验证设计结果的合理性,用其指也可以用来验证设计结果的合理性,用其指也可以用来验证设计结果的合理性,用其指导优化过程。导优化过程。导优化过程。导优化过程。n n1NF2NF3NFBCNF4NF1NF2NF3NFBCNF4NF范式范式(Normal Forms)(Normal Forms)n n当且仅当一个关系当且仅当一个关系R R(U U)中,每一个元中,每一个元组的每一个属性只含有一个值(不可再组的每一个属性只含有一个值(不可再分的基本数据元素,其原子值)时,该分的基本数据元素,其原子值)时,该关系属于第一范式。即不能

40、以集合、序关系属于第一范式。即不能以集合、序列等作为属性值。列等作为属性值。n n要求属性是要求属性是原子原子的。的。范式范式第一范式第一范式(1NF)(1NF)关系模型中的关系模式至少是关系模型中的关系模式至少是 1NF1NFXH XH XH XH KM KM KM KM CJ CJ CJ CJ testtesttesttest1 1 1 1 testtesttesttest2 2 2 2testtesttesttest3 3 3 3001001001001OS OS OS OS 80808080787878789090909000200200200285858585828282829595

41、9595003003003003DB DB DB DB 707070708080808090909090004004004004DS DS DS DS 606060607575757580808080下面下面R R为非为非1NF1NF(非规范关系模式)非规范关系模式)转换转换转换转换将非将非将非将非1NF1NF1NF1NF1NF1NF1NF1NF去掉嵌套属性上层去掉嵌套属性上层去掉嵌套属性上层去掉嵌套属性上层 R R R R 重写行交叉处的值重写行交叉处的值重写行交叉处的值重写行交叉处的值XH XH XH XH KM KM KM KM testestestest1 t1 t1 t1 teste

42、stestest2 t2 t2 t2 testestestest3t3t3t3001001001001OS OS OS OS 808080807878787890909090XH XH XH XH KMKMKMKMtesttesttesttest001 001 001 001 os os os os 80 80 80 80 001 001 001 001 os os os os 78 78 78 78 001 001 001 001 os os os os 80 80 80 80 002002002002os os os os 85 85 85 85 。1NF()1NF()分量是否需要再分,与

43、具体应用有关。如果用到分量是否需要再分,与具体应用有关。如果用到值的一部分,则需要进一步分割。值的一部分,则需要进一步分割。 如果只是查询出生日期,则它满足如果只是查询出生日期,则它满足1NF1NF。如果查询两人生日是否相同,则只比较月、日,如果查询两人生日是否相同,则只比较月、日,需要将生日分解,就不满足需要将生日分解,就不满足1NF1NF。姓名姓名姓名姓名生日生日生日生日王军王军王军王军68.7.1068.7.1068.7.1068.7.10张立张立张立张立69.7.1069.7.1069.7.1069.7.10李明李明李明李明80.3.2880.3.2880.3.2880.3.28姓名姓

44、名姓名姓名年年年年月日月日月日月日王军王军王军王军686868687.107.107.107.10张立张立张立张立696969697.107.107.107.10李明李明李明李明808080803.283.283.283.281NF1NF关系模式关系模式SDC(SNO , SNAME , SDEPT , Dean , CNO , GRADE)SDC(SNO , SNAME , SDEPT , Dean , CNO , GRADE)码:(码:(SNO,CNO)1NF1NF关系模式关系模式SDCSDC 1NF1NF,但它有如下但它有如下不良特性:不良特性:插入异常插入异常:若学生没有选课,则他的个

45、人信息及所:若学生没有选课,则他的个人信息及所在系的信息就无法插入。在系的信息就无法插入。删除异常删除异常:若删除学生的选课信息,则有关他的个:若删除学生的选课信息,则有关他的个人信息及所在系的信息也随之删除了。人信息及所在系的信息也随之删除了。更新异常更新异常:如果学生转系,若他选修了:如果学生转系,若他选修了k k门课,则需门课,则需要修改要修改k k条记录。条记录。数据冗余数据冗余:如果一个学生选修了:如果一个学生选修了k k门课,则有关门课,则有关他的所在系的信息重复。他的所在系的信息重复。n n对于关系对于关系R R,若,若R1NFR1NF,且且每一个非主属性每一个非主属性完全函数依

46、赖于码,则完全函数依赖于码,则R2NFR2NF。n n不能部分依赖于码不能部分依赖于码例:关系模式例:关系模式例:关系模式例:关系模式SDC(SNO , SNAME , SDEPT , Dean , CNO , SDC(SNO , SNAME , SDEPT , Dean , CNO , SDC(SNO , SNAME , SDEPT , Dean , CNO , SDC(SNO , SNAME , SDEPT , Dean , CNO , GRADE)GRADE)GRADE)GRADE) SDC SDC SDC SDC 2NF2NF2NF2NF? 步骤:先根据函数依赖确定候选码;步骤:先根据

47、函数依赖确定候选码;步骤:先根据函数依赖确定候选码;步骤:先根据函数依赖确定候选码; 再观察每个非主属性是否完全依赖于码。再观察每个非主属性是否完全依赖于码。再观察每个非主属性是否完全依赖于码。再观察每个非主属性是否完全依赖于码。 SNAMESNAMESNAMESNAME,SDEPTSDEPTSDEPTSDEPT,DEAN DEAN DEAN DEAN 部分依赖于码部分依赖于码部分依赖于码部分依赖于码(SNO(SNO(SNO(SNO,CNO) CNO) CNO) CNO) SDCSDCSDCSDC 2NF2NF2NF2NF6.2.46.2.4第二范式第二范式(2NF)(2NF)2NF2NFn改

48、造改造1.1.分解:非主属性有两种,一种完全依赖于码,一分解:非主属性有两种,一种完全依赖于码,一种部分依赖于码。将种部分依赖于码。将SDCSDC分解为:分解为:学生与课程的联系:学生与课程的联系:SC(SC(SNO , CNOSNO , CNO , Grade) , Grade) 学生实体:学生实体:SDM(SDM(SNOSNO , , SNAMESNAME , SDEPT , DEAN) SDEPT , DEAN) 2.2.分析分解后的函数依赖:分析分解后的函数依赖:SCSC: 2 2NFNFSDMSDM:SNOSNOSNAMESNAME,SNOSNOSDEPTSDEPT, SDEPT S

49、DEPT DEANDEAN,SNOSNODEAN DEAN (SNO(SNO,CNO)CNO) GRADE GRADEf f(SNO) (SNO) (SNAMESNAME,SDEPTSDEPT,DEANDEAN)f fn n冗余减少冗余减少冗余减少冗余减少n n如果一个学生选修了如果一个学生选修了如果一个学生选修了如果一个学生选修了k k k k门课,则有关他的所在系的门课,则有关他的所在系的门课,则有关他的所在系的门课,则有关他的所在系的信息不重复信息不重复信息不重复信息不重复n n避免了原修改麻烦避免了原修改麻烦避免了原修改麻烦避免了原修改麻烦n n如果某学生转系,若他选修了如果某学生转系

50、,若他选修了如果某学生转系,若他选修了如果某学生转系,若他选修了k k k k门课,则只需要修门课,则只需要修门课,则只需要修门课,则只需要修改改改改SDMSDMSDMSDM中一中一中一中一条记录。条记录。条记录。条记录。n n避免了原插入异常避免了原插入异常避免了原插入异常避免了原插入异常n n若学生没有选课,则他的个人信息及所在系的信息若学生没有选课,则他的个人信息及所在系的信息若学生没有选课,则他的个人信息及所在系的信息若学生没有选课,则他的个人信息及所在系的信息可插入到可插入到可插入到可插入到SDMSDMSDMSDMn n避免了原删除异常避免了原删除异常避免了原删除异常避免了原删除异常

51、n n删除学生的选课信息(删除学生的选课信息(删除学生的选课信息(删除学生的选课信息(SCSCSCSC),),),),则有关他的个人信息则有关他的个人信息则有关他的个人信息则有关他的个人信息及所在系的信息(及所在系的信息(及所在系的信息(及所在系的信息(SDMSDMSDMSDM)不随之删除不随之删除不随之删除不随之删除效果效果: :解决了部分插入异常和更新异常解决了部分插入异常和更新异常2NFn n快速热身n n关系模式关系模式R R(A A,B B,C C,DD),),码为码为ABAB,给出它给出它的一个函数依赖集,使得的一个函数依赖集,使得R R属于属于1NF1NF而不属于而不属于2NF2

52、NF。F=(A,B) C,B Df2NF2NFn nS_L_C(SNO,SDEPT,SLOC,CNO,Grade),S_L_C(SNO,SDEPT,SLOC,CNO,Grade),S_L_C(SNO,SDEPT,SLOC,CNO,Grade),S_L_C(SNO,SDEPT,SLOC,CNO,Grade),每个系的同学每个系的同学每个系的同学每个系的同学住在一处住在一处住在一处住在一处n n该模式属于该模式属于该模式属于该模式属于2NF2NF2NF2NF吗?吗?吗?吗?n依赖关系:依赖关系:(SNO,CNO) -Grade(SNO,CNO) -GradenSNO-SDEPT (SNO,CNO)

53、-SDEPTSNO-SDEPT (SNO,CNO)-SDEPTnSNO-SLOC (SNO,CNO)-SLOCSNO-SLOC (SNO,CNO)-SLOCf fp pp pSnoSnoCnoCnoGradeGradeSdeptSdeptSlocSlocSLCSLC不是一个好的关系模式不是一个好的关系模式n n插入异常插入异常n n假设假设假设假设SnoSnoSnoSno95102951029510295102,SdeptSdeptSdeptSdeptISISISIS,SlocSlocSlocSlocN N N N的学的学的学的学生还未选课,因课程号是主属性,因此该学生还未选课,因课程号是主属

54、性,因此该学生还未选课,因课程号是主属性,因此该学生还未选课,因课程号是主属性,因此该学生的信息无法插入生的信息无法插入生的信息无法插入生的信息无法插入SLCSLCSLCSLC。n n删除异常删除异常n n假定某个学生本来只选修了假定某个学生本来只选修了假定某个学生本来只选修了假定某个学生本来只选修了3 3 3 3号课程这一门号课程这一门号课程这一门号课程这一门课。现在因身体不适,他连课。现在因身体不适,他连课。现在因身体不适,他连课。现在因身体不适,他连3 3 3 3号课程也不选号课程也不选号课程也不选号课程也不选修了。因课程号是主属性,此操作将导致该修了。因课程号是主属性,此操作将导致该修

55、了。因课程号是主属性,此操作将导致该修了。因课程号是主属性,此操作将导致该学生信息的整个元组都要删除。学生信息的整个元组都要删除。学生信息的整个元组都要删除。学生信息的整个元组都要删除。 SLCSLC不是一个好的关系模式不是一个好的关系模式n n数据冗余度大数据冗余度大n n如果一个学生选修了如果一个学生选修了如果一个学生选修了如果一个学生选修了10101010门课程,那么他的门课程,那么他的门课程,那么他的门课程,那么他的SdeptSdeptSdeptSdept和和和和SlocSlocSlocSloc值就要重复存储了值就要重复存储了值就要重复存储了值就要重复存储了10101010次。次。次。

56、次。n n修改复杂修改复杂n n例如学生转系,在修改此学生元组的例如学生转系,在修改此学生元组的例如学生转系,在修改此学生元组的例如学生转系,在修改此学生元组的SdeptSdeptSdeptSdept值值值值的同时,还可能需要修改住处(的同时,还可能需要修改住处(的同时,还可能需要修改住处(的同时,还可能需要修改住处(SlocSlocSlocSloc)。)。)。)。如果如果如果如果这个学生选修了这个学生选修了这个学生选修了这个学生选修了K K K K门课,则必须无遗漏地修改门课,则必须无遗漏地修改门课,则必须无遗漏地修改门课,则必须无遗漏地修改K K K K个元组中全部个元组中全部个元组中全部

57、个元组中全部SdeptSdeptSdeptSdept、SlocSlocSlocSloc信息。信息。信息。信息。 n模式分解模式分解 SC(SNO,CNO,G)SC(SNO,CNO,G) S_L(SNO,SDEPT,SLOC)S_L(SNO,SDEPT,SLOC)n分解后的函数依赖图分解后的函数依赖图SnoSnoCnoCnoGradeGradeSCSCS_LS_LSnoSnoSdeptSdeptSlocSloc2NFn n结论:n n(1)从1NF关系中消除非主属性对码的部分函数依赖得到2NFn n(2)如果关系R的主码是单属性或全体属性均为主属性,则R属于2NFn nQ:任何二元关系,是否一定

58、属于2NF?2NF2NF分析分析SDM(SNO , SDM(SNO , SNAME ,SNAME , SDEPT , DEAN)SDEPT , DEAN)n不良特性不良特性n插入异常:如果系中没有学生,则有关插入异常:如果系中没有学生,则有关系的信息系的信息就无法插就无法插入入SDMSDMn删除异常:如果学生删除异常:如果学生全部全部毕业了,则在删除学生信息的同毕业了,则在删除学生信息的同时有关时有关系的信息系的信息也随之删除了也随之删除了n更新异常:如果学生转系,不但要修改更新异常:如果学生转系,不但要修改SDEPTSDEPT,还要修改还要修改DeanDean,如果换系主任,则该系每个学生元

59、组都要做相应修如果换系主任,则该系每个学生元组都要做相应修改改n数据冗余:每个学生都存储了所在系的系主任的信息数据冗余:每个学生都存储了所在系的系主任的信息n说明说明: :若若R R 2NF2NF,则,则R R仍然具有增、删、改的异常!仍然具有增、删、改的异常!n n对于关系对于关系R R,若,若R2NFR2NF,且且每个非主属每个非主属性性都不传递依赖于码,则都不传递依赖于码,则R3NFR3NF。n n关系模式关系模式RR中,若不存在这样的码中,若不存在这样的码X X,属性组属性组Y Y及非主属性及非主属性Z(Z Z(Z Y) Y),使得下式使得下式成立,成立,X X X XY , Y Y

60、, Y Y , Y Y , Y X X X X ,Y Y Y YZ Z Z Z 则称则称则称则称R R R R 3 3 3 3NFNFNFNF6.2.5第三范式(3NF)n n非主属性对候选码的传递非主属性对候选码的传递fdfd。 候选码:候选码:SNOSNO 非主属性:非主属性: SNAME , SNAME , SDEPT , DEANSDEPT , DEAN fdfd:SNOSNAMESNOSNAME,SNOSDEPTSNOSDEPT, SDEPT SDEPT DEANDEAN , SDEPT SNOSDEPT SNO; SNO SNO DEANDEANn n 传递传递SDM的异常原因及策

61、略SDM 3NFsnoSdeptDean3NF规范化投影分解n n1.消去非主属性对码的传递消去非主属性对码的传递fdfd策略是使策略是使中间中间“传递者传递者”不能传递不能传递2.2.将将SDM(SNO,SDM(SNO,SNAME,SAGESNAME,SAGE,SDEPT,DEAN)SDEPT,DEAN)分解为:分解为:学生实体:学生实体:STUDENT(STUDENT(SNOSNO ,SNAME,SAGE, ,SNAME,SAGE,SDeptSDept) ) 系的实体:系的实体:DEPT(DEPT(SDeptSDept , DEAN) , DEAN)3. 3. 3. 3. 分解后分解后 3

62、 3NFNF? STUDENTSTUDENT 3 3NF NF DEPT DEPT 3 3NFNF 效果效果n n冗余有条件地减少冗余有条件地减少冗余有条件地减少冗余有条件地减少n n系主任的信息只有一份。系主任的信息只有一份。系主任的信息只有一份。系主任的信息只有一份。n n避免了原修改麻烦避免了原修改麻烦避免了原修改麻烦避免了原修改麻烦n n同同同同学学学学转转转转系系系系只只只只要要要要修修修修改改改改SDEPTSDEPTSDEPTSDEPT,不不不不要要要要修修修修改改改改DeanDeanDeanDean,如如如如果果果果换换换换系系系系主主主主任任任任,则该系每个学生元组不要做相应修

63、改则该系每个学生元组不要做相应修改则该系每个学生元组不要做相应修改则该系每个学生元组不要做相应修改n n避免了原插入异常避免了原插入异常避免了原插入异常避免了原插入异常n n系的信息单独维护(系的信息单独维护(系的信息单独维护(系的信息单独维护(DEPTDEPTDEPTDEPT),),),),无论系中没有学生无论系中没有学生无论系中没有学生无论系中没有学生n n避免了原删除异常避免了原删除异常避免了原删除异常避免了原删除异常n n如果学生全部毕业了,则只需删除如果学生全部毕业了,则只需删除如果学生全部毕业了,则只需删除如果学生全部毕业了,则只需删除STUDENTSTUDENTSTUDENTST

64、UDENT学生信息,不学生信息,不学生信息,不学生信息,不影响系的信息影响系的信息影响系的信息影响系的信息1 1:若:若R1NFR1NF,且其候选码为单个属性,且其候选码为单个属性, 则则R2NFR2NF2 2:若:若R2NFR2NF,且至多存在一个非主属性,且至多存在一个非主属性, 则则R3NFR3NF3 3:任何二元关系模式必为任何二元关系模式必为3NF3NF。3NF的推论的推论快速热身快速热身关系模式R(A,B,C,D),码为AB,给出它的一个函数依赖集,使得R属于2NF而不属于3NFF=(A,B) C,C Dfn n课堂练习课堂练习 SupplyerSupplyer( (SpNoSpN

65、o,City,Area,Phone) ,City,Area,Phone) SpNoSpNo供应商编号供应商编号 AreaArea城市所在地区城市所在地区 其中,其中,SpNoSpNo是主码是主码 函数依赖有哪些?函数依赖有哪些? 属于属于2NF2NF吗?吗? 属于属于3NF3NF吗?吗? 分析评价分析评价n n部部分分fdfd和和传传递递fdfd是是冗冗余余及及操操作作异异常常的的重重要根源。要根源。n n3NF3NF不不存存在在非非主主属属性性对对候候选选码码的的部部分分fdfd和和传递传递fdfd。n n3NF3NF消去了消去了大部分大部分冗余及操作异常。冗余及操作异常。n n并并非非所所

66、有有的的3NF3NF都都能能完完全全消消除除冗冗余余及及操操作作异常。异常。 n示例示例 STC(S , T , C)STC(S , T , C),每位老师只教授一门课,每门课有每位老师只教授一门课,每门课有若干老师。某学生选定一门课,就对应一位老师。则若干老师。某学生选定一门课,就对应一位老师。则它的一组函数依赖为:它的一组函数依赖为: T T C C (S S,T T) C;C;(S S,C C) T T候选码为?候选码为? ( ( S S,T)T)和和 (S(S,C)C)n思考思考STC STC 3NF 3NF ? yes! yes! S SC CT TS ST TC CSTCSTC非主

67、属性:无非主属性:无SC T S1 OS 于得水于得水 S2 OS 马千里马千里 S4 DB 牛得草牛得草 S5 DB 牛得草牛得草 S5 OS 于得水于得水 nSTC(S , T , C)STC(S , T , C)的的不良特性不良特性( (并非所有并非所有3NF3NF都都存在不良特性存在不良特性) )n插入异常:如果没有学生选修某位老师的任课,则该插入异常:如果没有学生选修某位老师的任课,则该老师担任课程的信息就无法插入;学生未选修课程,老师担任课程的信息就无法插入;学生未选修课程,则无则无C C和和T T信息,学生信息进入不了信息,学生信息进入不了DBDB。n删除异常:删除学生选课信息,

68、会删除掉老师的任课删除异常:删除学生选课信息,会删除掉老师的任课信息信息n更新异常:如果老师所教授的课程有所改动,则所有更新异常:如果老师所教授的课程有所改动,则所有选修该老师课程的学生元组都要做改动选修该老师课程的学生元组都要做改动n数据冗余:每位学生都存储了有关老师所教授的课程数据冗余:每位学生都存储了有关老师所教授的课程的信息的信息原因原因n n存在主属性对候选码的部分存在主属性对候选码的部分fdfd。 TC (S,T) Cn n存在主属性对候选码的传递存在主属性对候选码的传递fdfd。 (S,C)T TC (S,C) Cptn n关系模式关系模式RR中,对于属性组中,对于属性组X X,

69、Y Y,若,若X XY Y且且Y Y X X时时X X必含有码必含有码,则,则R R BCNFBCNF范式范式Boyce/Boyce/CoddCodd范式范式(BCNF)(BCNF)s sc ct ts st tc csct3NFsct3NF,sctsctBCNFBCNF范式范式Boyce/Boyce/CoddCodd范式范式(BCNF)(BCNF)stcstc(s,t,c)(s,t,c)/学生,教师,课程学生,教师,课程tctc/每位教师只上一门课每位教师只上一门课s,cs,ct t s,ts,tcc/每门课有若干位教师每门课有若干位教师T T C C,而,而T T不含有码不含有码n n改造

70、改造改造改造: : : :消去主属性对候选码的部分消去主属性对候选码的部分消去主属性对候选码的部分消去主属性对候选码的部分fdfdfdfd将将将将STC (S , T , C)STC (S , T , C)STC (S , T , C)STC (S , T , C)分解为分解为分解为分解为 STSTSTST(S S S S,T T T T) BCNFBCNFBCNFBCNF TC TC TC TC(T T T T,C C C C) BCNFBCNFBCNFBCNFS S S ST T T T T T T T C C C C S1 S1 S1 S1 于得于得于得于得水水水水 于得于得于得于得水水

71、水水 OS OS OS OS S2S2S2S2马千马千马千马千里里里里 马千马千马千马千里里里里 OS OS OS OS 牛得牛得牛得牛得草草草草 DB DB DB DB n n冗余得到了较好控制冗余得到了较好控制冗余得到了较好控制冗余得到了较好控制n n很多学生选同一教师的一门课程时,课程信息只很多学生选同一教师的一门课程时,课程信息只很多学生选同一教师的一门课程时,课程信息只很多学生选同一教师的一门课程时,课程信息只存一次。存一次。存一次。存一次。n n修改麻烦避免了修改麻烦避免了修改麻烦避免了修改麻烦避免了n n课程改名后,只在课程改名后,只在课程改名后,只在课程改名后,只在TCTCTC

72、TC中改一元组(对同一教师)。中改一元组(对同一教师)。中改一元组(对同一教师)。中改一元组(对同一教师)。n n插入异常避免了插入异常避免了插入异常避免了插入异常避免了n nSTSTSTST中可以插入未选修课程的学生信息。中可以插入未选修课程的学生信息。中可以插入未选修课程的学生信息。中可以插入未选修课程的学生信息。n nTCTCTCTC中可以插入无学生选修的课程和教师信息。中可以插入无学生选修的课程和教师信息。中可以插入无学生选修的课程和教师信息。中可以插入无学生选修的课程和教师信息。n n删除异常避免了删除异常避免了删除异常避免了删除异常避免了n n删去学生信息在删去学生信息在删去学生信

73、息在删去学生信息在STSTSTST中进行,教师及课程信息在中进行,教师及课程信息在中进行,教师及课程信息在中进行,教师及课程信息在TCTCTCTC中不受影响。中不受影响。中不受影响。中不受影响。效果n n最高范式最高范式n nBCNFBCNF是基于函数依赖的最高范式是基于函数依赖的最高范式n n但不是数据库模式设计的最高范式但不是数据库模式设计的最高范式属于属于BCNFBCNF的关系中必定满足:的关系中必定满足:n n所有的非主属性对每一个码都是完全依赖的;所有的非主属性对每一个码都是完全依赖的;所有的非主属性对每一个码都是完全依赖的;所有的非主属性对每一个码都是完全依赖的;n n所有的主属性

74、对每一个不包含它自己的码都是完所有的主属性对每一个不包含它自己的码都是完所有的主属性对每一个不包含它自己的码都是完所有的主属性对每一个不包含它自己的码都是完全依赖的;全依赖的;全依赖的;全依赖的;n n没有任何属性完全依赖于非码的任何一组属性没有任何属性完全依赖于非码的任何一组属性没有任何属性完全依赖于非码的任何一组属性没有任何属性完全依赖于非码的任何一组属性n n排除了任何属性对码的传递依赖与部分依赖排除了任何属性对码的传递依赖与部分依赖排除了任何属性对码的传递依赖与部分依赖排除了任何属性对码的传递依赖与部分依赖范式范式Boyce/Boyce/CoddCodd范式范式(BCNF)(BCNF)

75、BCNFBCNFn思考思考nSCOSCO(S , C , ORDER)(S , C , ORDER),表示学生选修课程的名次,表示学生选修课程的名次,同一门课程的各个学生的名次没有并列。同一门课程的各个学生的名次没有并列。其函数依赖有:其函数依赖有: (S(S,C)C) ORDER ORDER, (C(C,ORDER) ORDER) S S。 SCOSCO属于属于BCNFBCNF吗?吗?S SC CO OC CO OS SBCNFn n例:关系模式SNC(SNO,SNAME,CNO,SCORE),SNAME无重复n n分析:SNC的候选码 (SNO,CNO)和(SNAME,CNO)n n非主属

76、性:SCORESCOREn n1NF?n n2NF?n n3NF?YES!YES!YES!此关系有此关系有什么问题什么问题?冗余!n n函数依赖:n n(SNO,CNO)SCOREn n(SNAME,CNO) SCOREn n(SNAMESNO)BCNFn nBCNF?n n定义判断法:n n(SNAMESNAMESNOSNO)决定因素不含有码决定因素不含有码n n BCNFBCNFn n性质判断法:n nSNAMESNAMESNOSNOn n(SNOSNO,CNOCNO) SNAME SNAME n n (SNAME (SNAME ,CNOCNO) SNOSNOn n存在主属性对码的部分依赖

77、存在主属性对码的部分依赖 BCNFBCNFPP定理定理:如果如果RBCNFRBCNF,则,则R3NFR3NF 证证明明:(反反证证法法)设设RBCNFRBCNF,但但R3NF,R3NF,则则总总可可找找到到属属性性集集X X,Y Y,Z Z,其其中中X X为为候候选选玛玛,Y Y,Z Z为为非非主主属属性性(R3NFR3NF,则则存存在在多多个个非非主主属属性性,它它们们存存在在传传递递fdfd),使使得得XZXZ成成立立,即即XYXY,而而Y Y不不包包含含R R的的候候选选码码X X,但但YZYZ成成立立(Y Y是非主属性,这样决定因素不含候选码)。是非主属性,这样决定因素不含候选码)。

78、根据根据BCNFBCNF定义,定义,RBCNFRBCNF,与假设矛盾。与假设矛盾。 定理得证。定理得证。t1 1 1 1、关系规范化过程关系规范化过程关系规范化过程关系规范化过程 非规范关系非规范关系非规范关系非规范关系 去掉嵌套属性或重复组去掉嵌套属性或重复组去掉嵌套属性或重复组去掉嵌套属性或重复组( ( ( (使每个属性及其值都成为使每个属性及其值都成为使每个属性及其值都成为使每个属性及其值都成为 1NF 1NF 1NF 1NF 不可再分的数据项不可再分的数据项不可再分的数据项不可再分的数据项) ) ) ) 消去非主属性对候选消去非主属性对候选消去非主属性对候选消去非主属性对候选KEYKE

79、YKEYKEY的部分的部分的部分的部分fdfdfdfd 2NF2NF2NF2NF 消去非主属性对候选消去非主属性对候选消去非主属性对候选消去非主属性对候选KEYKEYKEYKEY的传递的传递的传递的传递fdfdfdfd 3NF3NF3NF3NF 消去主属性对候选消去主属性对候选消去主属性对候选消去主属性对候选KEYKEYKEYKEY的部分和传递的部分和传递的部分和传递的部分和传递fdfdfdfd BCNFBCNFBCNFBCNF规规规规范范范范化化化化规规规规程程程程主主主主要要要要为为为为克克克克服服服服数数数数据据据据库库库库逻逻逻逻辑辑辑辑结结结结构构构构中中中中的的的的插插插插入入入入

80、异异异异常常常常、删删删删除除除除异常以及冗余过大的缺陷异常以及冗余过大的缺陷异常以及冗余过大的缺陷异常以及冗余过大的缺陷关系规范化小结关系规范化小结 2.2.结论结论n3NF3NF必定为必定为2NF2NF和和1NF1NF,反之不一定;反之不一定;nBCNFBCNF必为必为3NF3NF,反之不一定;反之不一定;n3NF3NF已在很大程度上控制了数据冗余;已在很大程度上控制了数据冗余;n3NF3NF已在很大程度上消去了插入和删除操作异常;已在很大程度上消去了插入和删除操作异常;n3NF3NF分分解解仍仍不不够够彻彻底底(可可能能存存在在主主属属性性对对候候选选码码的的部部分分fdfd和和传递传递

81、fdfd););n在在fdfd范围内,范围内,BCNFBCNF下已完全消去了插入删除异常;下已完全消去了插入删除异常;n范范式式并并非非越越高高越越好好;范范式式越越高高,异异常常越越少少,但但查查询询操操作作越越麻烦;麻烦;n适可而止:适可而止:n理论上:一般到理论上:一般到3NF3NFn分解不唯一。分解不唯一。示例示例n nC(City,Street,Zip)C(City,Street,Zip)是是3NF3NF吗?是吗?是BCNFBCNF吗?吗?n其中码是其中码是City,StreetCity,StreetCityCity主属性,主属性,StreetStreet主属性,主属性,ZipZip非主属性非主属性nCity,StreetZipCity,StreetZipZip CityZip CitynZipZip不是候选码不是候选码所以关系所以关系C C是是3NF3NF,但不是但不是BCNFBCNF示例示例n n关系关系W(W(工号工号, ,姓名姓名, ,工种工种, ,定额定额) )属于第几范属于第几范式式? ?n n规范化到第三范式规范化到第三范式示例示例n n部门部门( (部门号部门号, ,部门名部门名, ,部门成员部门成员, ,部门总经部门总经理理) ) 属于第几范式属于第几范式

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号