《教学课件第5讲数据库设计规范化理论》由会员分享,可在线阅读,更多相关《教学课件第5讲数据库设计规范化理论(22页珍藏版)》请在金锄头文库上搜索。
1、第第 5 讲讲 数据库设计数据库设计-规范化理论规范化理论数据库技术数据库技术关系数据库设计中存在的问题关系数据库设计中存在的问题关系数据库设计中存在的问题关系数据库设计中存在的问题l示例:示例:考虑为管理职工的工资信息而设计一个关系模式。考虑为管理职工的工资信息而设计一个关系模式。l问题:问题: 插入异常插入异常:如果没有职工具有如果没有职工具有8 级工资,则级工资,则8 级工级工 资的工资数额就难以插入。资的工资数额就难以插入。 删除异常删除异常:如果仅有职工赵明具有如果仅有职工赵明具有4级工资,如果级工资,如果将赵明删除,则有关将赵明删除,则有关4级工资的工资数额信息也随级工资的工资数额
2、信息也随之删除了。之删除了。 数据冗余数据冗余:职工很多,工资级别有限,每一级别职工很多,工资级别有限,每一级别的工资数额反复存储多次。的工资数额反复存储多次。 更新异常更新异常:如果将如果将5级工资的工资数额调为级工资的工资数额调为620,则需要找到每个具有则需要找到每个具有5级工资的职工,逐一修改。级工资的职工,逐一修改。l解决之道:解决之道:分解分解! 分解分解! 再分解再分解!有关学生的关系模式有关学生的关系模式S(学号学号 , 姓名姓名 , 系号系号 , 主任主任 , 课程编号课程编号 , 成绩成绩 )它有哪些数据冗余?它有哪些数据冗余? 规范化理论规范化理论问题的提出问题的提出 针
3、对一个具体问题,如何构造一个合适的数据模针对一个具体问题,如何构造一个合适的数据模式。即应该构造几个关系模式(表),每个关系有那式。即应该构造几个关系模式(表),每个关系有那些属性组成?些属性组成?函数依赖函数依赖 函数依赖是语义范畴的概念,只能根据语义来确函数依赖是语义范畴的概念,只能根据语义来确定一个函数依赖。记号定一个函数依赖。记号 xy 称称x函数确定函数确定y,或,或y函数函数依赖于依赖于x。称称X X为决定因素。为决定因素。如如S# S# SN SN, (S#S#,C#C#) G G平凡函数依赖:平凡函数依赖:如果如果X X Y Y,但,但Y Y不是不是X X的子集,则称的子集,则
4、称其为非平凡的函数依赖,否则称为平凡的函数依赖。其为非平凡的函数依赖,否则称为平凡的函数依赖。如(如(S#S#,SNSN) SNSN是平凡的函数依赖是平凡的函数依赖例例 1 :某单位有一资料室,它管理的数据有:某单位有一资料室,它管理的数据有读者信息、读者信息、图书信息、借阅信息图书信息、借阅信息。读者信息读者信息:借书证号,读者姓名,性别,部门,学历,:借书证号,读者姓名,性别,部门,学历,部门电话,个人电话,电子信箱等;部门电话,个人电话,电子信箱等;图书信息图书信息:图书编号,分类号,书名,作者,出版社,:图书编号,分类号,书名,作者,出版社,单价等;单价等;借阅信息借阅信息:借书证号,
5、图书编号,书名,借出日期,:借书证号,图书编号,书名,借出日期,应还日期等应还日期等函数依赖关系函数依赖关系(读者信息)(读者信息): 借书证号借书证号读者姓名读者姓名 借书证号借书证号性别性别 借书证号借书证号部门部门 借书证号借书证号学历学历 部门部门部门电话部门电话 借书证号借书证号个人电话个人电话 借书证号借书证号电子信箱电子信箱函数依赖关系函数依赖关系(图书信息)(图书信息): 图书编号图书编号分类号分类号 图书编号图书编号书名书名 图书编号图书编号作者作者 图书编号图书编号出版社出版社 图书编号图书编号单价单价函数依赖关系函数依赖关系(借阅信息)(借阅信息): 图书编号图书编号书名
6、书名 借书证号、图书编号,借出日期借书证号、图书编号,借出日期应还日期应还日期范式理论范式理论1NF:任一属性不能同时具有多个值(:任一属性不能同时具有多个值(关系中每一分关系中每一分量不可再分。即不能以集合、序列等作为属性值量不可再分。即不能以集合、序列等作为属性值)。)。2NF:属性必须完全依赖唯一标识符。:属性必须完全依赖唯一标识符。3NF:属性间不存在传递依赖。:属性间不存在传递依赖。BCNF:每一个决定因素都包含码。:每一个决定因素都包含码。例例 2 :R(学号,姓名,课程编号,课程名称,学分,成绩学号,姓名,课程编号,课程名称,学分,成绩)唯一标识符唯一标识符(Key): (学号,
7、课程编号学号,课程编号) 学号学号姓名,课程编号姓名,课程编号 课程名称,课程编号课程名称,课程编号学分学分, (学号,课程编号学号,课程编号) 成绩成绩不符合不符合2NF例例 3 :S(学号,姓名,性别,学院,院长学号,姓名,性别,学院,院长)。唯一标识符唯一标识符(Key): 学号学号 学号学号姓名,学号姓名,学号性别,学号性别,学号学院,学院学院,学院院长院长不符合不符合3NF问题的解决办法问题的解决办法:拆分关系(表)拆分关系(表)关于例关于例 2R(学号学号,姓名,姓名,课程编号课程编号,课程名称,学分,成绩,课程名称,学分,成绩)R1 (学号学号,姓名,姓名)R2(课程编号课程编号
8、,课程名称,学分,课程名称,学分)R3(学号,课程编号,成绩学号,课程编号,成绩)学号学号姓名,课程编号姓名,课程编号 课程名称,课程编号课程名称,课程编号学分学分, (学号,课程编号学号,课程编号) 成绩成绩关于例关于例 3S(学号学号,姓名,性别,学院,院长,姓名,性别,学院,院长)S1(学号学号,姓名,性别,学院,姓名,性别,学院)S2(学院学院,院长,院长)学号学号姓名,学号姓名,学号性别,学号性别,学号学院,学院学院,学院院长院长部门部门电话电话 借书证号借书证号读者姓名读者姓名性别性别部门部门学历学历个人电话个人电话电子信箱电子信箱图书编号图书编号分类号分类号书名书名作者作者出版社
9、出版社单价单价借书证号借书证号图书编号图书编号借书日期借书日期还书日期还书日期关于例关于例 1 的关系图的关系图规范化步骤规范化步骤2NF 3NF BCNF 4NF规范化的目的就是构造合适的关系模式。规范化的目的就是构造合适的关系模式。范式之间的关系范式之间的关系范式之间的关系范式之间的关系l3NF 2NF反证:若反证:若R 3NF, 但但R 2NF,则按,则按2NF定义,定义,一定有非主属性部分依赖于码,一定有非主属性部分依赖于码,设设X为为R的码,则存在的码,则存在X的真子集的真子集X,以及非主属,以及非主属性性Z(Z X),使得),使得XZ。于是在于是在R中存在码中存在码X,属性组,属性
10、组X,以及非主属性,以及非主属性Z(Z X) ,使得,使得XX, XZ,XX成立,成立,这与这与R 3NF矛盾。矛盾。 所以所以R 2NF。模式分解中的问题模式分解中的问题模式分解中的问题模式分解中的问题l实例实例表(职工,级别,工资)可以有两种分解途径,表(职工,级别,工资)可以有两种分解途径,分解一:(职工,工资),(工资,级别)分解一:(职工,工资),(工资,级别)分解二:(职工,级别),(工资,级别)分解二:(职工,级别),(工资,级别) 不同行业机构的不同工资级别会有相同工资数额,因此按分解一,有可能导致不同行业机构的不同工资级别会有相同工资数额,因此按分解一,有可能导致同一职工对应
11、不同的工资级别,从而丢失了有关职工工资级别的信息(丢失了函数同一职工对应不同的工资级别,从而丢失了有关职工工资级别的信息(丢失了函数依赖:职工依赖:职工级别)级别)。姓名级别工资ZHAO4500QIAN5600SUN6700LI7600姓名工资ZHAO500QIAN600SUN700LI600级别工资4500560067007600丢失函失函数依数依赖R(A, B, C)ABC112221AB1122BC1221ABC112221AB(R)BC(R)AB(R)BC(R)R(A, B, C)ABC111212AB1121BC1112ABC111112211212AB(R)BC(R)AB(R)BC
12、(R)有有损分解分解无无损分解分解 将将R分解为分解为R1和和R2的分解是无损连接分解的条件的分解是无损连接分解的条件是,是,R1R2 R1,或,或R1R2 R2。 如果有如果有R上的函数依赖上的函数依赖X Y成立,且成立,且X Y是空是空集,则分解集,则分解R Y和和XY是无损连接分解。是无损连接分解。 判定一个分解是否为依赖保持分解的算法比较复判定一个分解是否为依赖保持分解的算法比较复杂。请看参考文献。杂。请看参考文献。 设计目标设计目标:无损连接、保持依赖、:无损连接、保持依赖、xNF 无损连接是分解的一个必要条件。无损连接是分解的一个必要条件。BCNF不一定能不一定能保持依赖,但保持依赖,但3NF可以保证分解是保持依赖的。可以保证分解是保持依赖的。 因此,在工程中一般分解到因此,在工程中一般分解到3NF。 此外,有时需要对表进行水平分解。此外,有时需要对表进行水平分解。