关系规范化样例
第五章 关系的规范化(数据库原理与应用)
t
学号 姓名 系名称 系地址
魏英 tutor_wei@
7952616
DataBase
关系模式的范式
衡量关系模式好坏的标准就是模式的范式 (Normal Forms) 范式的种类与数据依赖有着直接联系
基于FD的范式:1NF,2NF,3NF,BCNF 基于多值依赖的范式:4NF
魏英 tutor_wei@
7952616
DataBase
函数依赖图
如果A是关系模式R中候选码的属性,则称A是R的主 属性,否则,称A是R的非主属性之间的函数依赖 主码与非主属性之间的函数依赖
学号 姓名 性别 系名称 系地址
其它属性之间的函数依赖
魏英 tutor_wei@
工程号 工程名称 职工号 姓名 职务 小时工资率 工时
魏英 tutor_wei@
7952616
DataBase
第一范式
分析
满足1NF的关系中可能存在大量数据冗余,将导致数 据异常(修改、插入、删除)和数据不一致性 产生上述问题的原因为关系中存在部分函数依赖
魏英 tutor_wei@
2945
975 935
小计 A3 临江饭店 1002
1004
1910 1080
840 1920 6775
7952616
李思岐 技术员
葛宇洪 律师6060源自1814 小计 总计
魏英 tutor_wei@
DataBase
关系规范化
姓名 职务 小时工资率 工时 实发工资
65 60 60 13 16 19 845 960 1140
6.第六章关系的规范化
第六章关系的规范化设计第六章关系的规范化设计第一节问题的提出第二节函数依赖第三节范式第四节数据依赖的公理系统第一节关系模式设计问题的提出如何设计一个合理的关系数据库模式?c3c2c1c3c1cno 77OS丁惠s283DS 丁惠s290DB 丁惠s287OS 李立s178DB 李立s1gradecname sname sno 泛关系模式泛关系:泛关系模式中存在的问题c3c2c1c3c1cno 77OS丁惠s283DS 丁惠s290DB 丁惠s287OS 李立s178DB 李立s1gradecname sname sno反映现实世界操作性能例:设计教学管理关系数据库模型sc问题分析Sno Cno Tno Sname Grade Cname Tname S1C1T1赵民90OS彭S1C2T2赵民90DS杨S1C3T3赵民85C++刘S1C4T4赵民87DB张S2C1T4李军90OS张S3C1T4陈江75OS张S3C2T2陈江70DS杨S3C4T4陈江56DB张S4C1T1魏致90OS彭S4C2T2魏致85DS杨S5C1T1乔远95OS彭S5C4T4乔远80DB张关系SCT产生问题的原因?解:sct(sno, cno, tno, sname, grade, cname, tname)属性间约束关系(即数据间的依赖关系)太强解一:(sno,(cno,tno,(tno,cno, tname (sno,cno,解二:(sno,(cno,(tno, tname (sno,cno,(tno,cno)分解关系解决问题的方法:例sc解(sno, cno, tno, sname, grade, cname, tnameS n o S n a m e S 1赵民S 2李军S 3陈江S 4魏致S 5乔远StudentsCno Cname C1OS C2DS C3C++C4DBCoursesSnoCno Grade S1C190S1C290S1C385S1C487S2C190S3C175S3C270S3C456S4C190S4C285S5C195S5C480scTno Tname T1 彭 T2 杨 T3 刘 T4 张TeachersTeachCno Tno C1T1C1T4C2T2C3T3C4T4本章要解决的主要问题理想第二节:函数依赖数据依赖函数依赖(1)、函数依赖定义X 函数决定Y Y函数依赖于XX Y例:只能根据语义来确定函数依赖性的存在与否。
关系规范化步骤
成绩 英语 89 80 76 电工 87 90 77 物理 67 75 80
学号 99001 99002 99003
姓名 张三 李四 王五
关系规范化步骤演示(续 关系规范化步骤演示 续)
关系规范化步骤演示(续 关系规范化步骤演示 续)
(3)第三范式 如果关系模式R∈2NF,且每个非主属性都不传递依赖于R的每 个关系键,则R属于第三范式(Third Normal Form).
学号 99001 99002 99003 99004
姓名 李薇 肖文文 宋华 王枫
院系 计算机 计算机 计算机 数学
院系 计算机 数学
�
成绩 英语 89 80 76 英语 89 80 76 电工 87 90 77 电工 87 90 77 物理 67 75 80 物理 67 75 80
学号 99001 99002 99003 学号 99001 99002 99003
姓名 张三 李四 王五 姓名 张三 李四 王五
关系规范化步骤演示(续 关系规范化步骤演示 续)
分数 86 78 98 67
关系规范化步骤演示(续 关系规范化步骤演示 续)
学号 99001 99001 99001 99002 学号 99001 99002 姓名 李薇 王枫 姓名 李薇 李薇 李薇 王枫 院系 计算机 数学 院系 计算机 计算机 计算机 数学 学号 99001 99001 99001 99002 课程编号 C01001 C01002 G02003 S05002 课程编号 C01001 C01002 G02003 S05002 分数 86 78 98 67 分数 86 78 98 67
关系的规范化
关系的规范化⼀、函数依赖设R(U)是属性集U上的关系模式,X,Y是U的⼦集,若对于R(U)上的任何⼀个可能的关系r,r中不肯呢过存在两个元组在X上的属性值相等,⽽在Y上的属性值不等,则称Y依赖于X,即X->Y.其中X成为决定属性组或决定因素。
平凡/⾮平凡的函数依赖:X->Y 但Y不是X的⼦集,则X->Y是⾮平凡的函数依赖。
否则是平凡的函数依赖。
对于任意关系模式,平凡的函数依赖是⼀定成⽴的。
如果X->Y且Y->X则记作 X <-->Y部分依赖/完全依赖:X->Y,且任何X的真⼦集X'都不能决定Y,则成为Y完全依赖于X(F),否则是部分依赖(P)。
传递依赖:如果X->Y,Y不是X的⼦集(X与Y是⾮平凡的函数依赖),且Y不决定X,如果Y->Z,Z不是Y的⼦集(Y与Z是⾮平凡函数依赖),则Z对X传递函数依赖。
利⽤函数依赖定义候选码:设K为R<U,F>中的属性或属性组,若K完全决定U,则K为R的候选码,若候选码多于⼀个,则选定其中⼀个作为主码。
包含在任何⼀个候选码中的属性称为主属性,不包含在任何码中的属性是⾮主属性。
⼆、范式通常,有1NF,2NF,3NF,BCNF,4NF,5NF.1NF:满⾜最低要求的关系是第⼀范式。
即,元组可区分,属性不可分。
2NF:如果R属于1NF,且每⼀个⾮主属性完全依赖于码,则R属于第⼆范式。
也就是说,第⼆范式消除了⾮主属性对码的部分依赖。
如果关系模式不满⾜2NF,则会出现更新异常(插⼊异常,删除异常,修改复杂)3NF:关系模式中如果不存在这样的码X,属性组Y及⾮主属性Z(Z不包含于Y),使得X->Y,Y->Z成⽴,则称R<U,F>属于第三范式。
如果R 属于第3范式,则每个⾮主属性既不部分依赖于码,也不传递依赖于码。
(有例子)关系数据模式的规范化理论
在某些情况下,为了保持数据的完整性,可能会导致数据冗余。
维护困难
当需要添加、删除或修改数据时,可能需要修改多个相关表,增 加了维护的复杂性。
第二范式(2NF)
点击此处添加正文,文字是您思想的提炼,为了演示发布的良好效果,请言简意赅的 阐述您的观点。
定义与特性
特性
必须消除非主属性对候选键的部分 函数依赖。
设计和实施难度
4NF需要仔细设计和实施,以避免出现不必要的复杂性和问题。在实践中,完 全符合4NF的设计并不总是可行的,有时需要进行适当的反规范化以提高性能。
07
关系数据模式规范化的实践建议
选择合适的规范化级别
第一范式 (1NF): 确保属性值 是原子的,消除重复的组。
第二范式 (2NF): 在1NF基础 上,消除部分依赖。
第四范式(4NF)通过消除多值依赖,确保了数据的 无冗余性,从而提高了数据的一致性和完整性。
简化数据模型
4NF将数据模型简化为更简单的形式,使得数据的处 理和查询更加高效。
减少数据冗余
通过消除多值依赖,4NF有效地减少了数据冗余,避 免了数据不一致的问题。
4NF的缺点与问题
性能影响
由于4NF对数据模型进行了高度的规范化,可能会导致查询性能下降。因为为 了获取所需的数据,可能需要连接更多的表,导致查询效率降低。
重要性
随着数据库技术的不断发展,规范化理论在关系型数据库的设 计和管理中扮演着至关重要的作用。它有助于减少数据冗余、 避免数据异常和数据不一致性,提高数据的可维护性和可扩展 性,降低数据库的维护成本。
规范化过程简介
原始关系数据模式的识别
明确需要规范化的原始关系数据模式,包括 各个关系模式的属性和实体。
《关系模式的规范化》课件
THANKS
THANK YOU FOR YOUR WATCHING
关系模式的规范化主要基于函数依赖和范式的理论,通过逐 步消除冗余属性、处理数据依赖冲突,最终达到一定的规范 化程度,如第三范式(3NF)或更高范式。
关系模式规范化的重要性
减少数据冗余
规范化可以消除数据冗余,减少存储 空间的浪费,并降低数据维护成本。
保证数据一致性
通过规范化,可以确保数据的一致性 和完整性,避免因数据更新、删除操 作而产生的错误和异常。
从3NF到BCNF的转化
将关系模式分解为多个关系模式,使得每个 关系模式都满足3NF和BCNF。
07
关系模式规范化的应用场景
数据库设计
数据结构合理化
通过规范化,确保数据库中的关 系模式满足一定的范式要求,从 而使数据结构更加合理、清晰, 降低数据冗余和操作异常的风险 。
提高数据一致性
规范化有助于保证数据的一致性 ,避免数据在不同表中重复存储 ,从而降低数据不一致的问题。
BCNF范式消除了传递依赖,从而减 少了数据冗余和更新异常的可能性。
VS
BCNF范式是相对较弱的范式,它允 许有部分函数依赖,但不允许有完全 函数依赖。
如何达到BCNF
识别关系模式中的函数依赖, 并确定哪些是传递依赖。
通过分解关系模式或引入新 的候选键来消除传递依赖,
从而满足BCNF的要求。
在分解过程中,需要确保分解 后的关系模式仍然满足BCNF 的要求,并且能够保持数据的
03
通过规范化,可以降低因修改操作导致的数据完整性破坏的风
险,确保数据的准确性和一致性。
数据冗余消除
(参考资料)关系规范化
例
有一个关系如表所示。关系模式为:学生(学号,姓名, 性别,出生年月,班级编号,系编号,系名称,课程编号,课程名称, 成绩)
学号
姓名 性别 出生年月
班级 系编号 系名称 课程编号 课程名称 成绩
A101100102 赵盘 男 1988/2/4 A1011001 A101 软件工程 A101-01 软件制作 84
数据库技术及应用
1.2.4 关系规范化
在关系数据库设计的理论中很重要的就是关系规范化 理论。
关系规范化为具体问题,如何构造一个适合于它的数 据模式,即应该构造几个关系模式,每个关系由哪些属性 构成等内容,提供方法。
关系规范化理论的内容
数据依赖:研究数据之间的联系。 范式:关系模式的标准。 模式分解:模式设计的方法。
A101100102
赵盘
76
89
84
A101100109
江鑫
97
95
97
A101100113
……
……
……
满足第一范式的关系模式不一定就是一个好的关系模 式。例如,对于前面的关系“学生”存在数据冗余、插入 异常、删除异常等问题。
2.第二范式(2NF)
若R(U)∈1NF,且每一个非主属性完全函数依赖于某 个候选键,称R(U)为第二范式,即R(U)∈2NF。
1.第一范式(1NF)
如果一个关系模式R(U)的所有属性都是不可再分的基 本数据项,则称R(U)为第一范式,即R(U)∈1NF。
第一范式是对关系模式的最起码的要求。不满足第一 范式的数据库模式不能称为关系数据库。
例
已知关系模式学生(学号,姓名,性别,出生年月,班级编 号,系编号,系名称,课程编号,课程名称,成绩)
关系数据库的规范化理论.ppt
4、Boyce-Codd范式(BCNF) 定义:设有关系模式R及其函数依赖集F,X和A是R的 属性集会,且 。如果只要R满足X A,X就必 包含R的一个候选关键字,则称R满足BCNF。 或:若一个关系为R(U),它是满足1NF的,当R中 不存在任何属性对候选码的传递函数依赖时,则称R 是符合BCNF的。 或:若R中的所有属性都完全直接依赖于候选码,或 说R的所有函数依赖的决定因素都是候选码。 没有任何属性完全函数依赖于非码的任何一组属性。
3、第三范式(3NF) 定义:如果一个关系模式R属于1NF,且每一个非主 属性不传递依赖于任一候选关键字,则称R满足第三 范式。
消除关系的传递函数依赖也是通过关系分解的方法来实现的。 设一个关系R(U),假定X、Y、Z 、W是U的互不相交的属性 子集,其中 X是主码,YZ是直接函数依赖(也可能包含部分函 数依赖), XZ 是传递函数依赖,则把 R(U)分解为两个关 系R1(Y,Z)和R2(X,Y,W),其中Y是R1的主码,R2的 外码,这样就消除了Z对X的传递依赖。
定义:所有被一个已知函数依赖集(F) 逻辑蕴涵的那些函数依赖的集合称为F的 闭包。 P109 如何由一个已知函数依赖集找出它的闭 包呢?1974年,Armstrong提出了用 推理方法计算闭包的一套规则,具体包 括三个推理规则和三条推论,及一定的 算法。
函数依赖的一些常用规则: 自反性: 增广性 传递性 合并规则 分解规则 伪传递性
P109—p110
实际上计算推导出函数依赖集的闭包是 一件非常繁琐复杂的事情,所以引入的 属性集闭包的概念。
关系模式规范化实例析解
关系模式规范化实例析解第一篇:关系模式规范化实例析解关系模式规范化实例析解摘要:关系模式是关系数据库的重要组成部份,其规范化理论在整个模式设计中占有主导地位。
下面我们试图采用接近课堂教学的方式给出一个完整实例,希望对初学者有所帮助。
关键词:关系模式;规范化;函数依赖;范式众所周知,关系模式是关系数据库的重要组成部份,其好坏直接影响关系数据库的性能。
而关系模式的设计必须满足一定的规范化要求,从而满足不同的范式级别。
[1](P.46-52,57)在指导关系模式的设计中,规范化理论占有着主导地位,其基本思想是:消除数据依赖中不合理的部份,使各关系模式达到某种程度的分离,使一个关系仅描述一个实体或者实体间的一种联系。
[2]关系模式及其规范化的理论是我们设计和优化关系模式的指南。
作为一种优秀而成熟的理论,学习和实践会有一定的难度,但在因特网和相关书籍中难得有比较全面的实例,给我们学习和实践造成不便。
下面,我们试图采用接近课堂教学的方式给出一个完整的析解实例,以期对初学者有所帮助。
一、实例假设某商业集团数据库中有一关系模式R(商店编号,商品编号,数量,部门编号,负责人),如果规定:(1)每个商店的每种商品只在一个部门销售;(2)每个商店的每个部门只有一个负责人;(3)每个商店的每种商品只有一个库存数量。
试回答下列问题:(1)根据上述规定,写出关系模式R的基本函数依赖;(2)找出关系模式R的候选关键字;(3)试问关系模式R最高已经达到第几范式为什么(4)如果R已达3NF,是否已达BCNF 若不是BCNF,将其分解为BCNF模式集。
二、预处理为了方便,我们用代号代表每个属性:A—商店编号B—商品编号 C—部门编号D—数量 E—负责人这样,有关系模式:R(U,F)U={A,B,C,D,E}三、根据上述规定,写出关系模式R的基本函数依赖为了消除关系模式在操作上的异常问题,优化数据模式,我们需要对关系模式进行规范化处理。
关系规范化(数据库)
关系规范化(数据库)由于⽹络上关于关系规范化的内容⼀般都是关于范式的,函数依赖和码的概念提及的⽐较少,所以就写了这篇⽂章前提:学习完第⼆章关系数据库前提⾸先举个栗⼦例⼦[例1]建⽴⼀个描述是学校教务的数据库,该数据库涉及的对象包括学⽣的学号(Sno)、所在系(Sdept)、系主任名称(Mname)、课程号(Cno)和成绩(Grade)。
假设⽤⼀个单⼀的关系模式Student来表⽰,则该关系模式的属性集合为U={Sno,Sdept,Mname,Cno,Grade}现实世界的已知事实(语义)告诉我们:①⼀个系有若⼲个学⽣,但⼀个学⽣只属于⼀个系。
②⼀个系只有⼀名负责⼈。
③⼀个学⽣可以选修多门课程,每门课程有若⼲学⽣选修。
④每个学⽣学习每⼀门课程有⼀个成绩。
谈论函数依赖之前先提⼀下数据依赖的概念,数据依赖是⼀个关系内部属性与属性之间的⼀种约束关系。
这种约束关系是通过属性间值的相等与否体现数据间相关联系。
它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现数据依赖中最重要的是函数依赖和多值依赖函数依赖定义:设R(U)是属性集U上的关系模式,X,Y是U的⼦集。
若对于R(U)的任意⼀个可能的关系r,r中不可能存在两个元组在X上的属性值相等,⽽在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X->Y。
⽤例1来解释这段定义:在学校教务数据库中,⼀个学⽣的学号只对应⼀个系。
故当“学号”值确定时,学⽣所在系的属性值也就确定了。
属性之间的这种关系类似于数学中的 y = f (x) ⾃变量x确定了,对应的函数值y也就唯⼀的确定了Sno = f(Sdept),即Sdept函数决定Sno或者说Sdept函数依赖于Sno,记作Sno->Sdept下⾯介绍⼀些术语和记号X->Y,但y不属于X,则称X->Y是⾮平凡的函数依赖X->Y,但y属于X,则称X->Y是平凡的函数依赖若X->Y,则称X为这个函数依赖的决定属性组,也称为决定因素若X->Y,Y->X,则记作X<-->Y。
关系数据库规范化理论模板
第4章关系数据库规范化理论数据库设计的一个最基本的问题是怎样建立一个合理的数据库模式, 使数据库系统无论是在数据存储方面, 还是在数据操作方面都具有较好的性能。
什么样的模型是合理的模型, 什么样的模型是不合理的模型, 应该经过什么标准去鉴别和采取什么方法来改进, 这是在进行数据库设计之前必须明确的问题。
为使数据库设计合理可靠、简单实用, 长期以来, 形成了关系数据库设计理论, 即规范化理论。
它是根据现实世界存在的数据依赖而进行的关系模式的规范化处理, 从而得到一个合理的数据库设计效果。
本章首先说明关系规范化的作用, 接着引入函数依赖和范式等基本概念, 然后介绍关系模式等价性判定和模式分解的方法, 最后简要介绍两种数据依赖的概念。
4.1 关系规范化的作用4.1.1问题的提出从前面的有关章节可知, 关系是一张二维表, 它是涉及属性的笛卡尔积的一个子集。
从笛卡尔积中选取哪些元组构成该关系, 一般是由现实世界赋予该关系的元组语义来确定的。
元组语义实质上是一个n目谓词( n是属性集中属性的个数) 。
使该n目谓词为真的笛卡尔积中的元素( 或者说凡符合元组语义的元素) 的全体就构成了该关系。
但由上述关系所组成的数据库还存在某些问题。
为了说明的方便, 我们先看一个实例。
【例4.1】设有一个关于教学管理的关系模式R(U), 其中U由属性Sno、Sname、Ssex、Dname、Cname、Tname、Grade 组成的属性集合, 其中Sno的含义为学生学号, Sname为学生姓名, Ssex为学生性别, Dname为学生所在系别, Cname为学生所选的课程名称, Tname为任课教师姓名, Grade为学生选修该门课程的成绩。
若将这些信息设计成一个关系, 则关系模式为:教学( Sno, Sname, Ssex, Dname, Cname, Tname, Grade) 选定此关系的主键为( Sno,Cname) 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章关系规范化理论关系的规范是关系数据模型设计中的一个非常重要的问题,它可以指导我们设计出好的关系。
设计和构造合理的关系,使之能准确地反映现实世界并有利于应用和具体操作,是关系的规范和探讨的问题。
所以有人把关系的规范化理论称为设计数据库的理论。
第一节关系中的键一、候选键(candidate key)凡在一个关系中具有主键特性的属性或属性组,均称为候选键。
因为它们都具有被选为主键的条件,所以一个关系可能有多个候选键,但只能选其中的一个为主键。
候选键中包含的属性,期于的属性称为非主属性。
例:在职工关系ZG (姓名,性别,年龄)中,增加一个属性:职工号,即得到一个新关系:ZG (职工号,姓名,性别,年龄)又假定职工号与职工姓名是一一对应的,即没有两个职工的姓名相同,则“职工号”和“姓名”两个都是候选键。
二、替代键(alternate key)对于某一指定的关系可能存在多个候选键,但只能选其中的一个为主键。
在确定主键后,其余的候选键都是替代键,替代键在需要时可代替主键。
二、外来键(foreign key)但关系中的某些属性系由另一个关系的主键构成时,则该属性(或属性组)称为外来键。
第二节函数依赖一、函数依赖定义1:设R是一个关系,X和Y是R中的两个属性。
若R中X的任何一个值,仅有一个Y的值与之对应,则称为R的属性Y函数依赖(FD)于属性X,记作X Y。
例如:在描述船员的关系CREW(NO,NAME,AGE,JOB,PAY)它表示由任一船员号NO,仅能找到一个姓名、一个年龄、一个。
定义中的属性X可以是复合属性,例如SP(S#,P#,QTY-USED)中的(S#,P#)二、完全函数依赖和部分函数依赖定义2:如果属性Y函数依赖于复合属性X,而且不与X的任一子集X‘函数依赖(X’→Y ),则称属性Y完全函数依赖(FFD)于复合函数X,记作X→Y。
若X→Y但不是完全函数依赖,则称Y部分函数依赖于X。
例:在关系SP(S#,P#,QTY-USED)中QTY-USED表示部件P#在S#船上使用的数量,只有同时指定S#和P#,才能说明某部件在某船上的用量,缺一不可,因此QTY-USED完全函数依赖于(S#,P#)。
三、传递函数依赖定义3:如果X,Y,Z是R中的三个属性(或属性复合)若X→Y, Y→X, Y→Z,则称Z对X 传递函数依赖。
例如:S(S#,SNAME,CITY,POSTCODE)中S#→CITY,CITY→ S#,若CITY→ POSTCODE,则称POSTCODE传递依赖于S#。
例:设有下列关系GPD(零件号,零件名,设计人,设计人等级)因为零件号→零件名零件号→设计人设计人→设计人等级故零件号→设计人等级第三节规范化和范式一、规范化问题的提出关系模型的特点是使用二维表来表示现实世界的实体集合和属性关系,这样容易历届和被用户所接受,然而并不是所有二维表都能构成关系模型,见表以上两张二维表就不能构成关系,因为出现了子项,那么具备那些条件的二维表才能称为关系呢?在关系模式中,要求二维表具有以下性质:(1)二维表中的每一列都是不能分割的基本数据项,且无重复组。
(2)同一关系中,没有相同的列出现。
描述一个实体,不需要重复出现相同的属性名(3)同一关系中,各行的内容不能完全相同 完全相同的行,实无意义满足上述条件的关系,称为规范化的关系,否则叫非规范化形式,这种“形式”即不能被定义成关系模型,又不能被关系型的DBMS 所接受,因此要对非规范化的表格(关系)进行规范化处理。
所谓规范化处理,就是逐步用更单纯、更规则的关系来取代原有关系的过程。
二、规范化的意义规范化处理的目的不仅将关系的“概念”单一化,使每一个数据项使一个简单的基本项,又无重复组。
还有以下意义:(1)解决冗余度问题所谓“冗余”问题是指表格中的数据重复。
] 例:船与船员之间的1:N 联系见表SHIP NSP SC这样重复太多,一条船有多个船员,船号与船名就要重复存储多次,如果将船的有关数据分开存储,分为SHIP 和SC 两个表,在SC 中存放船号与船名数据,则重复的仅仅是船号,其余的重复都消除了。
为了减少甚至消除重复,将关系进行分离,正是逐步规范化的重要一步。
(2)消除多义性问题多义性是指关系中某些属性含义不清或有多种可能的含义。
例:船部件这个关系 SP(S#,P#,QTY)其中数量QTY到底是说明S与P之间的联系,即某船需要某个部件多少个,还是仅仅说明P 为仓库中现存某个部件多少个呢?在这个关系中是确定不了的,如果QTY仅仅表示部件的库存量,则将关系SP分离,使用关系PQ(P#,QTY)来描述就不再含糊不清了。
(3)解决操作可行性及提高操作方便性指对数据的插入、删除与修改是否可行,是否方便例:职工编号,姓名,工资等级,工资假如要插入新的工资等级和工资额,例如9-110元,由于没有对应的职工编号、姓名,无法插入。
引起上述问题的原因,是非主属性之间的依赖关系所致。
这个关系中各个属性之间的对应关系可用下图表示,NO为关键字,即主属性,其余属性为非主属性。
EMP(NO,NAME,)箭头表示属性间的对应关系,即任意一个职工号,仅能在表中找到一个姓名NAME与之对应,任何一个非主属性SAL函数依赖于非主属性STATUS。
如果要从这个关系中消除非主属性之间的依赖关系,可将表改为两个关系EMP() SS()这样插入数据9级、110元就可在SS中进行。
由上例可见,通过适当“分离”可以消除非主属性之间的依赖性,如何进行分离或合并,使得新的一组关系模式既能反映现实世界,又能排除多义性,控制冗余度,并方便实现数据操作,正是我们研究规范化问题的目的所在。
三、系规范化的表述所谓关系的规范化,是指满足某些条件后的关系,通常按属性间依赖情况来区分关系规范化的程度,并义范式来表述(NORMAL FORMS)范式又分为n级,有1NF,2NF,3NF等等,为了判断一个关系属于哪一级范式,引入函数依赖这一概念。
所有规范化的关系起码是第一范式,在第一范式中进一步满足一些要求的关系为第二范式,依次类推。
各种形式的范式在关系数据哭系统中都允许存在,但为了更方便于数据处理,通常要把低级范式分解为若干个3NF或BCNF,下面给出各范式的概念。
1)第一范式(1NF)关系R中,每个分量都是不可分割的。
2)第二范式(2NF)若关系R满足1NF,且每个非主属性完全函数依赖于关键字。
3)第三范式(3NF)若关系R满足2NF,且每个非主属性非传递依赖于关键字。
4)加强第三范式(BCNF)若关系R满足3NF,且所有主属性和非主属性既非部分依赖关键字,也非传递依赖于关键字。
下面举例说明逐步规范化的方法与过程。
例:已知一张购物登记表,要求规范到BCNF范式的程度,以便被关系型DBMS所接受。
(1)分析已知表,来决定是否需要进行规范化处理通过观察可知,表不能直接被关系型DBMS所接受,因为它存在许多问题。
1)在关系模型中对关系的最起码要求,应该满足第一范式,表显然不满足这个条件。
2)在数据操作上将会出现下列问题:①删除异常假如顾客A不购买彩电,那么表中的记录A删除时就会将商品名称、单价等同时删除,此时彩电价格也无从查找。
②插入异常如顾客A想要购买洗衣机,不但要填上洗衣机的名称与价格,还要填上有关顾客A的信息(工作单位、地址、电话)显然是重复的。
③数据的冗余量大在有多个顾客购买同一商品的情况下,就使这一商品的名称和单价多次重复出现在数据库中,造成数据的大量冗余。
3)非独立数据存在付款项目是由数量*单价得来的,在此可以去掉,基于上述情况,必须对表进行规范化处理。
(2)利用规范化工具逐步解决表中的数据结构所存在的问题首先,去掉表中的非独立项,变成满足第一范式的要求的关系命名为R显然R是1NF,从而解决了第1)个问题进一步规范化过程如下步骤进行:第一步语义分析①每一名顾客有一个工作单位、住址、电话;②每种商品有一种价格③每个顾客所购物品有一定数量;④付款=单价*数量(非独立项可去掉)为了讨论方便,将表种属性用字母简记顾客姓名 A 单价 D商品名称 B 顾客工作单位 E数量 C 顾客地址 F 顾客电话 G第二步 找出函数依赖集 FD有语义分析,根据函数依赖的含义,可以的出下面一组函数依赖关系。
①A →E ,A →F,A →G ②B →D ③AB →C故FD={A →E ,A →F ,A →G ,B →D ,AB →C}第三步 画出函数依赖图首先从函数依赖集中,选出一组属性作为关键字,这里选关键字AB ,分析非主属性对关键字依赖的情况。
(A ,B )-f->C 表明属性C 对关键字(A ,B )为函数依赖 (A,B)-P->E 表明属性E 对关键字(A ,B )为部分函数依赖 (A,B)-P->F (A,B)-P->G(A,B)-P->D (理由同上) 画出关系R 的函数依赖图哪些是部分函数依赖,根据范式的定义,下面可以逐步再进行规范化。
第四步 去掉非主属性对关键字的部分依赖关系,得到一组新的关系函数依赖图。
于是R得到一组新的关系R1R2R3的集合三个关系表R1的关键字为顾客姓名R2的关键字为商品姓名R3的关键字为顾客姓名商品姓名的组合关系R1R2和R3均属于BCNF,这是因为所有主属性和非主属性既非部分依赖关键字,也非传递依赖关键字。
至此,规范化处理完毕上述的规范化处理结果,事实上已消除了前面提到的删除异常、插入异常和数据冗余的问题。
.假如顾客不购买彩电,只是合理地删除R3中一个记录,不会影响R1中的顾客信息,也不会影响R2中的商品信息。
.假如顾客A购买洗衣机时,在R3中填写数量,而价格在R2中填写,与顾客信息无关。
.在多个顾客购买同一种商品的情况下,因商品名称与价格R2在中,不会重复出现多次,消除了冗余第四节关系模式的分解分解是提高关系范式等级的重要方法,以下通过一个事例说明模式分解的一般方法和对分解的要求。
例:已知关系S(学号,班级,班主任)∈2NFS分解为3NF的新关系①S S-C(学号,班级)C-M(班级,班主任)②S S-C(学号,班级)S-M(学号,班主任)③S S-M(学号,班主任)C-M(班级,班主任)三种方案得出的新关系全是3NF。
但分解的质量却大有差异。
以下结合对分解质量的要求,对这三种方案作一比较。
1.分解必须是无损的,即不应在分解丢失信息在上例中,第③种方案就不能保证无损分解,下图显示了这一方案得出的两个关系。
由于财9241班和管9335班的班主任是同一个人,分解后将无法分辨5,10,15,20号各属于哪一个班。
2.分解后的新关系应相互独立,对一个关系的更改,不会影响另一关系试比较一上的①、②两种方案,设15好同学从管9235转入财9241,按第①翻案,仅修改关系S-C就可以了;而按第②方案,要同时修改关系S-C和关系S=M,显然是不好的。