第6章节关系数据库规范化理论.docx
《第6章节关系数据库规范化理论.docx》由会员分享,可在线阅读,更多相关《第6章节关系数据库规范化理论.docx(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章节关系数据库规范化理论第 第 6 章关系数据库规范化理论一个关系数据库模式由一组关系模式组成,一个关系模式由一组属性名组成。关系数据库设计,就是如何把已给定的相互关联的一组属性名分组,并把每一组属性名组成关系的问题。然而,属性的分组不是唯一的,不同的分组对应着不同的数据库应用系统,它们的效率往往相差很远。为了使数据库设计合理牢靠,简洁好用,长期以来,形成了关系数据库设计的理论 规范化理论。 6.1关系规范化的作用 规范化,就是用形式更为简洁,结构更加规范的关系模式取代原有关系模式的过程。假如将两个或两个以上实体的数据存放在一个表里,就会出现下列三个问题: 数据冗余度大 插入异样 删除异样
2、所谓数据冗余,就是相同数据在数据库中多次重复存放的现象。数据冗余不仅会奢侈存储空间,而且可能造成数据的不一样性。插入异样是指,当在不规范的数据表中插入数据时,由于实体完整性约束要求主码不能为空的限制,而使有用数据无法插入的状况。删除异样是指,当不规范的数据表中某条须要删除的元组中包含有一部分有用数据时,就会出现删除困难。(以 P98 工资表为例)解决上述三个问题的方法,就是将不规范的关系分解成为多个关系,使得每个关系中只包含一个实体的数据。(讲例子解)当然,改进后的关系模式也存在另一问题,当查询职工工资时须要将两个关系连接后方能查询,而关系连接的代价也是很大的。那么,什么样的关系须要分解?分解
3、关系模式的理论依据又是什么?分解完后能否完全消退上述三个问题?回答这些问题须要理论指导。下面,将加以探讨: 6.2函数依靠 6.2.1 属性间关系实体间的联系有两类:一类是实体与实体之间联系;另一类是实体内部各属性间的联系。数据库建模一章中探讨的是前一类,在这里我们将学习其次类。和第一类一样,实体内部各属性间的联系也分为 1:1、1:n 和 m:n 三类:例:职工(职工号,姓名,身份证号码,职称,部门)1、 一对一关系(1:1)设 X、Y 是关系 R 的两个属性(集)。假如对于 X 中的任一详细值,Y 中至多有一个值与之对应,反之,对于 Y 中的任一详细值,X 中也至多有一个值与之对应,则称
4、X、Y 两属性间是一对一关系。如本例职工关系中职工号与身份证号码之间就是一对一关系。2、一对多关系(1:n)设 X、Y 是关系 R 的两个属性(集)。假如对于 X 中的任一详细值,Y 中可以找到多个值与之对应,而对于 Y 中的任一详细值,X 中至多只有一个值与之对应,则称属性 X 对 Y 是一对多关系。如职工关系中职工号与职称之间就是一对多的关系。3、多对多关系(m:n)设 X、Y 是关系 R 的两个属性(集)。假如对于 X 中的任一详细值,Y 中有 n 个值与之对应,而对于 Y 中的任一详细值,X 中也有 m 个值与之对应,则称属性 X 对 Y 是一对多(m:n)关系。例如,职工关系中,职称
5、与部门之间就是多对多的关系。上述属性间的三种关系,事实上是属性值之间相互依靠与相互制约的反映,因而称之为属性间的数据依靠。数据依靠共有三种: 函数依靠(Functional Dependency,FD) 多值依靠(Multivalued Dependency,MVD) 连接依靠(Join Dependency,JD)其中最重要的是函数依靠和多值依靠。6.2.2函数依靠函数依靠,是属性之间的一种联系。在关系 R 中,X、Y 为 R 的两个属性或属性组,假如对于 R的全部关系 r 都存在:对于 X 的每一个详细值,Y 都只有一个详细值与之对应,则称属性 Y 函数依靠于属性 X。或者说,属性 X 函
6、数确定属性 Y,记作 X→Y。其中 X 叫作确定因素,Y 叫作被确定因素。上述定义,可简言之:假如属性 X 的值确定属性 Y 的值,那么属性 Y 函数依靠于属性 X。换一种说法:假如知道 X 的值,就可以获得 Y 的值,则可以说 X 确定 Y。若 Y 函数不依靠于 X,记作:X→Y。若 X→Y,Y→X,记作: 前面学习的属性间的三种关系,并不是每种关系中都存在着函数依靠。 假如 X、Y 间是 1:1 关系,则存在函数依靠 X←→Y 假如 X、Y 间是 1:n 关系,则存在函数依靠:X→Y 或 Y→X(多方为确定因素
7、) 假如 X、Y 间是 m:n 关系,则不存在函数依靠。留意,属性间的函数依靠不是指 R 的某个或某些关系子集满意上述限定条件,而是指 R 的一切关系子集都要满意定义中的限定。只要有一个详细的关系 r(R的一个关系子集)不满意定义中的条件,就破坏了函数依靠,使函数依靠不成立。这里的关系子集,指的是 R 的某一部分元组的集合,例如:地测学院的学生关系中只包含了地测学院学生的数据,所以它是长安高校学生关系的一个子集。6.2.3码的定义前面,我们对码进行了直观化的定义,下面用函数依靠的概念对码作出较为精确的形式化的定义:设 K 是关系模式 R(U,F)中的属性或属性组,K’是 K 的任一
8、子集。若K→U,而不存在 K→,则 K 为 R的 候选码(Candidate Key) 若候选码多于一个,则选其中的一个为 主码(Primary Key); 包含在任一候选码中的属性,叫做 主属性(Primary Attribute); 不包含在任何码中的属性称为 非主属性(Nonprime Attribute)或非码属性(Nonkey Attribute) 关系模式中,最简洁的状况是单个属性是码,称为 单码(Single Key);最极端的状况是整个属性组是码,称为 全码(AllKey)。前面已多次遇到单码的状况,下面是一个全码的例子:签约(演员名,制片公司,电影名)外码
9、:设有两个关系 R和 S,X 是 R 的属性或属性组,并且 X不是 R的码,但 X 是 S 的码(或与 S 的码意义相同),则称 X 是 R 的码 外部码(Foreign Key),简称 外码或 外键。如:职工(职工号,姓名,性别,职称,部门号)部门(部门号,部门名,电话,负责人)其中职工关系中的部门号就是职工关系的一个外码。在此须要留意,在定义中说 X 不是 R 的码,并不是说 X 不是 R 的主属性,X 不是码,但可以是码的组成属性,或者是任一候选码中的一个主属性。如:学生(学生号,姓名,性别,年龄„)课程(课程号,课程名,任课老师„)选课(学生号,课程号,成果)在
10、选课关系中,(学生号,课程号)是该关系的码,学生号、课程号又分别是组成主码的属性(但单独不是码),它们分别是学生关系和课程关系的主码,所以是选课关系的两个外码。关系间的联系,可以通过同时存在于两个或多个关系中的主码和外码的取值来建立。如要查询某个职工所在部门的状况,只需查询部门表中的部门号与该职工部门号相同的记录即可。所以,主码和外码供应了一个表示关系间联系的途径。6.2.4函数依靠和码的唯一性由上述码的形式化定义,我们可以说:码是由一个或多个属性组成的,可唯一标识元组的最小属性组。码在关系中总是唯一的,即一个码函数唯一地确定一行。假如码的值重复,则整个元组都会重复。否则,违反了实体完整性规则
11、。而元组的重复则表示存在两个完全相同的实体,这明显是不行能的,所以码是不允许重复取值的。所以,只有当某个属性或属性组能够函数确定关系中的每一个其它的属性,且该属性组的任何一个真子集都做不到这一点时,该属性或属性组才是该关系的码。函数依靠是一个与数据有关的事物规则的概念。假如属性 B 函数依靠于属性 A,那么若知道了 A 的值,则完全可以找到 B的值。这并非是可以由 A 的值计算出 B 的值,而是逻辑上只能存在一个 B 的值。 6.3关系模式的 规范化 一、非规范化的关系当一个表中存在还可以再分的数据项时,这个表就是非规范化的表。非规范化表存在两种状况: 表中具有组合数据项(P102表 6-4)
12、 表中具有多值数据项(P103表 6-5)例: 那么什么是规范化关系呢?当一个关系中的全部重量都是不行再分的数据项时,该关系是规范化的。即当表中不存在组合数据项和多值数据项,只存在不行分的数据项时,这个表是规范化的。二维表按其规范化程度从低到高可分为 5 级范式(Normal Form),分别称为 1NF、2NF、3NF(BCNF)、4NF、5NF。规范化程度较高者必是较低者的子集,即:1NF 2NF 3NF BCNF 4NF 5NF二、第一范式(1NF)定义 1:假如关系模式 R 中不包含多值属性,则 R 满意第一范式(First Normal Form),记作:R∈1NF1NF
13、是对关系的最低要求,不满意 1NF 的关系是非规范化的关系。非规范化关系转化为规范化关系 1NF 方法很简洁,只要上表分别从横向、纵向绽开即可。如下表:上表虽然符合 1NF,但仍是有问题的关系,表中存在大量的数据冗余和潜在的数据更新异样。缘由是(职工号,学历)是右表的码,但姓名、职称、系名、系办地址却与学历无关,只与码的一部分有关。所以上表还需进一步地规范化。三、其次范式(2NF)定义 1:设 X、Y 是关系 R 的两个不同的属性或属性组,且 X → Y。假如存在 X 的某一个真子集 X’,使 X’→ Y 成立,则称 Y 部分函数依靠于 X,记作:X
14、P → Y(Partial)。反之,则称 Y 完全函数依靠于 X,记作:XF → Y (Full)义 定义 2:假如一个关系 R∈1NF,且它的全部非主属性都完全函数依靠于R的任一候选码,则 R属于其次范式,记作:R ∈2NF。说明:上述定义中所谓的候选码也包括主码,因为 码首先应是候选码,才可以被指定为 码。例如关系模式:职工( 职工号 ,姓名,职称, 项目号 ,项目名称,项目角色)中(职工号,项目号)是该关系的码,而职工号→姓名、职工号→职称、项目号→项目名称„所以(职工号,项目号)P → 职称、(
15、职工号,项目号)P → 项目名称故上述职工关系不符合其次范式要求。它存在三个问题:插入异样、删除异样和修改异样。其中 修改异样是这样的,当职工关系中项目名称发生改变时,由于参加该项目的人员许多,每人一条记录,要修改项目信息,就得对每一个参与该项目的人员信息进行修改,加大了工作量,还有可能发生遗漏,存在着数据一样性被破坏的可能。可把上述职工关系分解成如下三个关系:职工(职工号,姓名,职称)参加项目(职工号,项目号,项目角色)项目(项目号,项目名称)上述三个关系都符合定义 2 的要求,所以都符合 2NF推论:式 假如关系模式 R ∈1NF, ,且它的每一个候选码都是单码,则 则
16、 R ∈2NF符合其次范式的关系模式仍可能存在数据冗余、更新异样等问题。如关系职工信息(职工号,姓名,职称,系名,系办地址)虽然也符合 2NF,但当某个系中有 100 名职工时,元组中的 系办地址就要重复 100 次,存在着较高的数据冗余。缘由是关系中, 系办地址不是干脆函数依靠于职工号,而是因为职工号函数确定系名,而系名函数决定系办地址,才使得系办地址函数依靠于职工号,这种依靠是一个传递依靠的过程。所以,上述职工信息的关系模式还须要进一步的规范化。四、第三范式(3NF)义 定义 1:在关系 R 中,X、Y、Z 是 R的三个不同的属性或属性组,假如X→Y,Y→Z,
17、但 Y→X,且 Y 不是 X 的子集,则称 Z 传递函数依靠于X。义 定义 2:假如关系模式 R∈2NF,且它的每一个非主属性都不传递依靠于任何候选码,则称 R是第三范式,记作:R ∈3NF论 推论 1:假如关系模式 R∈1NF,且它的每一个非主属性既不部分依靠、也不传递依靠于任何候选码,则 R∈3NF论 推论 2:不存非主属性的关系模式肯定为 3NF 的 五、改进的 3NF BCNF (Boyee Codd Normal Form)定义:设关系模式 R(U,F)∈1NF,若 F 的任一函数依靠 X→Y(Y X)中 X 都包
18、含了 R 的一个码,则称 R∈BCNF。换言之,在关系模式 R 中,假如每一个函数依靠的确定因素都包含码,则 R∈BCNF推论:假如 R∈BCNF,则: R中全部非主属性对每一个码都是完全函数依靠; R 中全部主属性对每一个不包含它的码,都是完全函数依靠; R中没有任何属性完全函数依靠于非码的任何一组属性。定理:假如 R∈BCNF,则 R∈3NF 肯定成立。证明:(结合传递依靠的定义,用反证法)留意:当 R∈3NF 时,R 未必属于 BCNF。因为 3NF 比 BCNF 放宽了一个限制,它允许确定因素不包含码。例如:通讯(城市名,街道
19、名,邮政编码)中:F(城市名,街道名)→邮政编码,邮政编码→城市名非主属性邮政编码完全函数依靠于码,且无传递依靠,故属于 3NF,但邮政编码也是一个确定因素,而且它没有包含码,所以该关系不属于BCNF。又如:Teaching (Student ,Teacher ,Course )简记为 Teaching (S ,T ,C)规定:一个老师只能教一门课,每门课程可由多个老师讲授;学生一旦选定某门课程,老师就相应地固定。FT→C,(S,C)→T,(S,T) →C该关系的候选码是(S,C)和(S,T),因此,三个属性都是主属性,由于不存在非主属性,该关
20、系肯定是 3NF。但由于确定因素 T 没包含码,故它不是 BCNF。关系模式 Teaching 仍旧存在着数据冗余问题,因为存在着主属性对码的部分函数依靠问题。准确地表示:FT→C,(S,C)P →T,(S,T) P →C所以 Teaching 关系可以分解为以下两个 BCNF 关系模式:Teacher(Teacher,Course)Student(Student,Teacher)3NF 的不彻底性,表现在可能存在 主属性对码的部分依靠和传递依靠。一个关系模式假如达到了 BCNF,那么,在函数依靠范围内,它就已经实现了彻底的分别,消退了数据冗余、插入和删除异样。
21、6.4 多值依靠和第四范式 一、多值依靠(Multivalued Dependency)例:学校中某一门课程由多个教员讲授,他们运用相同的一套参考书,每个教员可以讲授多门课程,每种参考书可以供多门课程运用。下列是用一个非规范化的表来表示教员 T,课程 C 和参考书 B 之间的关系。把上表变换成一张规范化的二维表 Teaching,如右表关系模式 Teaching(C,T,B)的码是(C,T,B),即 AllKey。因而Teaching∈BCNF。根据上述语义规定,当某门课程增加一名讲课教员时,就要向 Teaching 表中增加与相应参考书等数目的元组。同样,某门课程要去掉一本参考书时
22、,则必需删除相应数目的元组。对数据的增、删、改很不便利,数据的冗余也非常明显。假如细致考察这类关系模式,会发觉它具有一种称之为多值依靠的数据依靠关系。定义:设 R(U)是属性集 U 上的一个关系模式,X,Y,Z 是 U 的子集,且 ZU-X-Y。假如对 R(U)的任一关系 r,给定一对(x,z)值,都有一组 y 值与之对应,这组 y 值仅仅确定于 x 值而与 z 值无关。则称 Y 多值依靠于 X,或 X 多值确定 Y,记作:X →→Y。例如,在关系模式 Teaching 中,对于一个(C,B)值(物理,一般物理学),有一组 T 值李勇,王军,而这组值仅仅确定于课程 C上的值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 章节 关系 数据库 规范化 理论
限制150内