《第三章规范化.ppt》由会员分享,可在线阅读,更多相关《第三章规范化.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章 关系模式的规关系模式的规范化范化 第三章 关系模式的规范化规范化的定义规范化的定义规范化是一种科学的方法,通过使用某些规则把复杂的表格结构分解为简单的表格结构你可以使你降低表中的冗余和消除不一致和磁盘空间利用的问题规范化导致于满足某些特定规则和表示某些规范形式的表的建立第三章 关系模式的规范化关系规范化的目的:设计合理减少冗余提高查询效率1NF2NF3NFBCNF4NF5NF第三章 关系模式的规范化关系规范化分为若干个等级,每个等级称为一个范式随着范式级别的提高,关系的冗余度减低,但数据的分解就越细,查询数据时花在连接数据上的时间就增加,应用程序的编写难度增大.3.1 模式规范化
2、的必要性3.1.1关系数据库设计理论的内容:数据依赖范式模式设计方法3.1.2为什么要规范化?如果关系模式设计不合理,会造成以下异常情况的出现:关系数据库设计中存在的问题()示例:考虑为管理职工的工资信息而设计一个关系模式。关系数据库设计中存在的问题()问题:麻烦!麻烦!好麻烦!唉,剪不断,理还乱插入异常插入异常:如果没有职工具有8级工资,则8级工资的工资数额就难以插入。删除异常删除异常:如果仅有职工赵明具有4级工资,如果将赵明删除,则有关4级工资的工资数额信息也随之删除了。数据冗余数据冗余:职工很多,工资级别有限,每一级别的工资数额反复存储多次。更新异常更新异常:如果将5级工资的工资数额调为
3、620,则需要找到每个具有5级工资的职工,逐一修改。关系数据库设计中存在的问题()解决之道:分解!分解!再分解!哇,原来生活可以如此简单!3.1.2 存储异常问题(例1)TNOTNAMETITLEADDRDNODNAMELOCCNOCNAMELEVELCREDITT1MAPRFA1D1DE1L1C1T1MAPRFA1D1DE1L1C2T1MAPRFA1D1DE1L1C3T2LIAPA2D1DE1L1C3T2LIAPA2D1DE1L1C4T3CHENPRFA3D1DE1L1C4T3CHENPRFA3D1DE1L1C1T3CHENPRFA3D1DE1L1C5T4CHENAPA4D2DE2L2C63
4、.1.2 存储异常问题1、数据冗余2、更新异常某个 系改变地址,该系的所有教师的记录全部需要修改。修改量大,数据不一致的潜在危险大3.1.2 存储异常问题3、插入异常由于TNO,DNO,CNO是主键。如果某些新来的教师没有来的及认课,就无法加入这些教师的记录,只有讲课的教师才能加入进去。要解决这个问题,必须在建立一个新表,存放没有讲课的教师的信息3.1.2 存储异常问题4、删除异常由于TNO,DNO,CNO是主键,如果由于健康、外出、科研等原因,教师无法上课。由于主键不全,无法删除教师信息。或者由于教师课程结束,删除课程信息时,把教师的基本信息也删除了 3.1.2 存储异常问题解决以上问题:T
5、(TNO,TNAME,TITLE,ADDR,DNO)D(DNO,DNAME,LOC)C(CNO,CNAME,CREDIT)TC(TNO,CNO,LEVEL)为什么要规范化?(例2)举例:学生选课(第一种方案)学生-课程-选课关系(学号,姓名,性别,出生日期,入学时间,系,课程号,课程名,学时数,成绩)问题:数据冗余,修改异常,插入异常,删除异常为什么要规范化?(例2)举例:学生选课(第二种方案)学生关系(学号,姓名,性别,出生日期,入学时间,系)课程关系:课程(课程号,课程名,学时数)选课关系:选课(学号,课程号,成绩)3.2 模式的规范化1NF2NF3NFBCNF4NF5NF定义:在关系模式
6、R中的每一个具体关系r中,如果每个属性值都是不可再分割的最小数据单位,则称R是第1范式的关系,记为R 1NF3.2.1 模式的规范化-第一范式3.2.1 模式的规范化-第一范式举例1(原表)职工号举例1(原表)姓名电话号码1001黎明7012633(O)1001黎明7146688(H)3.2.1 模式的规范化-第一范式举例1(规范化之后的表)职工号姓名电话号码(O)电话号码(H)1001黎明 701263371466881002张敏50012873.2.1 模式的规范化-第一范式举例2(原表)单位名称地址负 责 人主任副主任计算机系2号楼张力陈一平马为民林新3.2.1 模式的规范化-第一范式举
7、例2(规范化之后的表)单位名称地址主任副主任1副主任2副主任2计算机系2号楼张力陈一平马为民林新3.2.1 模式的规范化-第一范式使一个不规范的关系符合第一范式的方法:包含多个值的字段分解成多个字段使得每个字段只包含一个不可再分的最小数据单位.3.2.2 模式的规范化-第二范式定义1:函数依赖:已知一关系 R,属性X是函数依赖于属性 Y,如果每一个在R中的 X值总有一个Y值与之精确地关联.记为:X-Y3.2.2 模式的规范化-第二范式定义2:函数部分依赖:一个关系R中的非主属性函数依赖于键的一部份而不是整个键.记为:X(p)Y例如:SC(SNO,CNO,GRADE,CREDIT)中CREDIT
8、 只函数依赖于CNO,而不是整个键(SNO,CNO)3.2.2 模式的规范化-第二范式第二范式定义第二范式定义:若若R 1NF,且每一个非主,且每一个非主属性完全函数依赖于键,属性完全函数依赖于键,则则R 2NF。3.2.2 模式的规范化-第二范式使得表符合2 NF的方法:找 出并抹去函数依赖于键的一部份而不是整个键的属性,将它们放到不同的表中日期工号姓名工种定额超额车间车间主任03.5101丁一车工8022%金工李明03.5102王二车工8017%金工李明03.5103张三钳工7014%工具赵亮03.5104李四铣工6020%金工李明03.5105刘五焊工9018%工具赵亮03.6101丁一
9、车工8020%金工李明03.6102王二车工8022%金工李明03.6103张三钳工7021%工具赵亮03.6104李四铣工6019%金工李明03.6105刘五焊工9016%工具赵亮解决之道:分解!分解!再分解!在上例中把表分解为:W1(日期,工号,超额)W2(工号,姓名,工种,定额,车间,车间主任)3.2.2 模式的规范化-第二范式(举例)snocnogradecreditS1C1544S1C2965S1C3334S2C2984S3C39853.2.2 模式的规范化-第二范式例子问题(符合1NF,但还有问题)数据冗余:CREDIT 重复多次更新异常:调整CREDIT,相应元组也要更新.会产生
10、数据不一致插入异常:下学期的新课,学生没有选修,由于主关键字SNO为空,所以无法插入.删除异常:学期结束后,课程结束,删除课程,同时删除了学生的成绩等3.2.2 模式的规范化-第二范式例子中问题的关键:关系SC1(SNO,CNO,GRADE,CREDIT)中,CREDIT 部分函数依赖于主键(SNO,CNO)3.2.2 模式的规范化-第二范式解决方法解决方法:分解分解!分解分解!再分解再分解!把把SC1(SNO,CNO,GRADE,CREDIT)分解为:分解为:SC1(SNO,CNO,GRADE)C2(CNO,CREDIT)3.2.3 模式的规范化-第三范式定义1:传递函数依赖:关系R中有X-
11、Y,Y-Z,X-Z3.2.3 模式的规范化-第三范式定义定义2:关系模式关系模式R中,若不存在这样的中,若不存在这样的码码X,属性组,属性组 Y及非主属性及非主属性Z(Z Y)使得)使得X Y,Y Z,Y X成成立,则称立,则称R 3NF。3.2.3 模式的规范化-第三范式为保证表是 3 NF,你应:发现和抹去功能依赖于不是主键属性的非关键属性。把它们放入不同的表格组合剩余的属性日期工号姓名工种定额超额车间车间主任03.5101丁一车工8022%金工李明03.5102王二车工8017%金工李明03.5103张三钳工7014%工具赵亮03.5104李四铣工6020%金工李明03.5105刘五焊工
12、9018%工具赵亮03.6101丁一车工8020%金工李明03.6102王二车工8022%金工李明03.6103张三钳工7021%工具赵亮03.6104李四铣工6019%金工李明03.6105刘五焊工9016%工具赵亮3.2.3 模式的规范化-第三范式举例:W1(日期,工号,超额)W2(工号,姓名,工种,定额,车间,车间主任)日期工号 超额工号姓名工种定额 车间车间主任3.2.3 模式的规范化-第三范式问题:工号姓名 姓名-车间工号-车间3.2.3 模式的规范化-第三范式解决方法:分解!分解!再分解!上例中W2关系继续分解为:W21(工号,姓名,工种,车间)W22(工种,定额)W23(车间,车
13、间主任3.2.4 模式的规范化-BC范式符合第3范式,都是对非主属性的函数依赖,没有消除主属性对侯选关键字的传递依赖.3.2.4 模式的规范化-BC范式定义定义:一个关系处于一个关系处于 Boyce-Codd 范式范式(BCNF),当且仅当每一当且仅当每一个决定因子都是候选键个决定因子都是候选键3.2.4 模式的规范化-BC范式为保证表是BCNF,应:发现和抹去覆盖的候选键把部份的候选键和功能依赖的属性放入不同的表中组合剩余的项为一个表格小结小结在本课中,你学习了:用规范化来简化表格结构。规范化导致于满足特定约束和代表某种范式的表格的形成。用范式来保证各种类型的不规则性和不一致性不会引入到数据库。表结构总是以某种范式形式出现。已鉴定了一些范式。小结小结(续续)最重要的和最广泛被使用的是:第一范式(1NF)第二范式(2 NF)第三范式(3 NF)Boyce Codd范式(BCNF)为了改善效率而在表格中有意地引入冗余被称为反规范化。反规范化的决定导致效率和数据冗余的折中。反规范化提高了磁盘空间的利用率。
限制150内