数据库系统概论第五版(王珊)-设计与应用开发(六)

提示:本章节着实有很多定义、定理。晦涩难懂,笔记不很详细,参考原文。
书籍获取:https://blog.csdn.net/qq_37965402/article/details/116258722


第6章 关系数据理论

6.1 问题的提出

解决的问题:针对一个具体问题,应该如何构造一个适合于它的数据库模式。即构造几个关系模式,每个关系应该由哪些属性组成。
这些是数据库设计的问题,确切的讲是关系数据库逻辑设计的问题。

  1. 第二章中介绍的一个关系模型应当是一个五元组:R(U,D,DOM,F)
    (1)R:关系名
    (2)U:一组属性
    (3)D:属性组U中的属性所来自的域。
    (4)DOM:属性到域的映射。
    (5)F:属性组U上的一组数据依赖。
    其中D、DOM与模式设计关系不大,因此在本章中把关系模式看作是一个三元组:R<U,F>
    当且仅当U上的一个关系r满足F时,r称为模式R<U,F>的一个关系。
  2. 数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值的相等与否体现出来的数据间相关联系。人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖(Functional Dependency, FD)和多值依赖(Multi- Valued Dependency, MVD)。
  3. 第一范式:作为一个二维表,关系要符合一个最基本的条件:
    每一个分量必须是不可分的数据项。
  4. 实例
    [例6.1] 建立一个描述学校教务的数据库,该数据库涉及的对象包括学生的学号(Sno)、所在系(Sdept)、 系主任姓名(Mname)、课程号(Cno)和成绩(Grade)。 假设用一个单一的关系模式Student来表示,则该关系模式的属性集合为:
    U= {Sno, Sdept, Mname, Cno, Grade }
    可以有如下的表:
    在这里插入图片描述
    但是这个关系模式存在如下几个问题:
    (1)数据冗余:Sdept和Mname重复出现。
    (2)更新异常:由数据冗余带来的更新数据库代价大。
    (3)插入异常:一个系刚成立没有学生,则无法插入这个系以及其系主任的信息。
    (4)删除异常:删除学生时,系主任也删掉了。

6.2 规范化

一个低一级范式的关系模式通过模式分解可以转换成若干个高一级的范式的关系模式的集合,这种过程叫做规范化

6.2.1 函数依赖

  1. 定义6.1 设R(U)是属性集U上的关系模式,X, Y是U的子集(就是说X,Y分别都包含了若干个属性呗)。若对于R(U)的任意一个可能的关系 r,r 中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等(就是r在X上相等,在Y上一定相等呗),则称X函数确定Y或Y函数依赖于X,记作X→Y
    “任意一个”说明:函数依赖是指R的所有关系都要满足约束条件,而不是某个或某些。
  2. 一些术语和记号
    (1)X→Y,但Y∉X,则称X→Y是非平凡的函数依赖
    (2)X→y,但Y∈X,则称X-Y是平凡的函数依赖。对于任一 关系模式,平凡函数依赖都是必然成立的,默认总是讨论非平凡的函数依赖。
    (3)若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(determinant)。
    (4)若X→Y, Y→X,则记作X← →Y。
  3. 定义6.2 在R(U)中,如果X→Y,并且对于X的任何一个真子集X,都有X不依赖Y,则称Y对X 完全函数依赖,记作:X完全依赖于Y;若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖(partial functional dependency),记作:X不完全依赖于Y。
  4. 在R(U)中,如果X→Y(Y∉X),Y不依赖于X,Y→Z,(Z∉Y),则称Z对X传递函数依赖。记作:X传递依赖于Z。

6.2.2 码

  1. 定义6.4 设K为R<U, F>中的属性或属性组合,若U完全依赖于K(K→U,但K的任何一个子集X不依赖Y),则K为R的候选码( candidate key)。
    (1)注意U是完全函数依赖于K,而不是部分函数依赖于K。如果U部分函数依赖于K,即K→U,则K称为超码( Surpkey)。候选码是最小的超码,即K的任意一个真 子集都不是候选码。
    (2)若候选码多于-一个, 则选定其中的一个为主码(primary key)。包含在任何一个候选码中的属性称为主属性(primeattribute);不包含在任何候选码中的属性称为非主属性(nonprime attribute)或非码属性( non-key attribute)。最简单的情况,单个属性是码,最极端的情况,整个属性组是码,称为全码( ll-key)。
  2. 定义6.5 关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码( foreign key),也称外码

6.2.3 范式

关系数据库中的关系是要满足一定要求的,满足 不同程度要求的为不同范式。
各种范式之间的关系有:5NF⊂ 4NF⊂ BCNF⊂ 3NF⊂ 2NF⊂ 1NF
在这里插入图片描述
一个低一级范式的关系模式通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(normalization)。

6.2.4 2NF

  1. 定义6.6 若R∈1NF,且每个非主属性完全函数依赖与任何一个候选码,则R∈2NF.
  2. 一个关系模式R不属于2NF,就会产生以下几个问题:插入异常、删除异常、修改复杂。

6.2.5

  1. 定义6.7 设关系模式 R<U, F>∈1NF,若R中不存在这样的码X,属性组Y及非主属性Z (Y!∈Z)使得X→Y,Y→Z成立,Y!→X,则称R<U,F>∈3NF。
  2. 由定义6.7可以证明,若R∈3NF,则每个非主属性既不传递依赖于码,也不部分依赖于码。也就是说,可以证明如果R属于3NF,则必有R属于2NF。

6.2.6 BCNF

修正的第三范式,也称为扩充的第三范式。
定义6.8 关系模式R<U, F>∈1NF,若X→Y且Y!∈X时,X必含有码,则R<U, F>∈BCNF。
也就是说,关系模式R<U,F>中,若每一个决定因素都包含码,则R<U, F>∈BCNF。

6.2.7 多值依赖

  1. 定义6.9 设R(U)是属性集U上的一个关系模式。X, Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
  2. 多值依赖存在以下性质:
    (1)对称性:X→→Y,则Y→→X。
    (2)传递性:X→→Y,Y→→Z,则X→→Z.
    (3)函数依赖可以看做是多值依赖的特殊情况
    (4)若X→→Y, X→→Z,则X→→YZ。
    (5)若X→→Y, X→→Z,则X→→Y∩Z。
    (6)若X→→Y,X→→Z,则X→→Y-Z, X-→→Z- Y。
  3. 多值依赖与函数依赖的关系
    (1)多值依赖的有效性与属性集的范围有关。
    (2)若函数依赖X→Y在R(U)上成立,则对于任何Y’⊂ Y均有X→Y"成立。而多值依赖X→→Y若在R(U)上成立,却不能断言对于任何Y’⊂Y有X→→Y成立。

6.2.8 4NF

  1. 定义6.10 关系模式R<U, F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y!∈Z),X都含有码,则称R<U. F>∈4NF。
  2. 4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。因为根
  3. 显然,如果一个关系模式是4NF,则必为BCNF。

6.2.9 规范化小结

规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离”,即**“一事一地”的模式设计原则**。让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去。因此所谓规范化实质上是概念的单一化
在这里插入图片描述
关系模式的规范化过程是通过对关系模式的分解来实现的,即把低一级的关系模式分解为若干个高一级的关系模式。这种分解不是唯一的。下面将进一步讨论分解后的关系模式与原关系模式“等价”的问题以及分解的算法。

6.3 数据依赖的公理系统

  1. 定义6.11 对于满足一组函数依赖F的关系模式R<U, F>,其任何一个关系r,若函数依赖X→Y都成立(即r中任意两元组1、s,若t[X]=s[X],则t[Y]=s[Y),则称F逻辑蕴涵X→Y。
  2. Armstrong公理系统( Armstrong’s axiom)设U为属性集总体,F是U上的一组函数依赖,于是有关系模式R<U,F>,对R<U, F>来说有以下的推理规则:
    (1)A1自反律 (reflexivity rule):若Y⊆X⊆U,则X→Y为F所蕴涵。
    (2)A2增广 律(augmentation rule):若X→Y为F所蕴涵,且Z∈U,则XZ→YZ"为F所蕴涵。
    (3)A3传递律(transitivityrule): 若X→Y及Y→Z为F所蕴涵,则X→Z为F所蕴涵。
  3. A1、A2、A3的推理规则
    (1)合并规则(union rule):由X→Y, X→Z,有X→YZ。
    (2)伪传递规则(pseudo transitivity rule):由X→Y, WY→Z,有XW→Z。
    (3)分解规则(decomposition rule):由X→Y及Z∈Y,有X→Z。
  4. 根据合并规则和分解规则,可以得到
    引理6.1 X→A1A2……Ak成立的充分必要条件是X→A1;成立(i=1,2, … k).
  5. 定理6.1 Armstrong推理规则是正确的。
  6. 定义6.12 在关系模式 R<U, F>中为F所逻辑蕴涵的函数依赖的全体叫作F的闭包(closure),记为F+
    人们把自反律、传递律和增广律称为Armstrong公理系统。Armstrong公理系统是有效的、完备的
    有效性指的是:由F出发根据Armstrong公理推导出来的每一个函数依赖一定在F+
    完备性指的是:F中的每-一个函数依赖,必定可以由F出发根据Armstrong公理推导出来
    引理6.2 设F为属性集U上的一组函数依赖,X、Y⊆U, X→Y能由F根据Armstrong公理导出的充分必要条件是Y⊆ X+F
  7. 算法 6.1 求属性集X(X⊆U)关于U上的函数依赖集F的闭包X+F
    输入:X、F;输出:X+F
    (1)令X(0) =X,i=0;
    (2)求B,这里B={A|(∃V)(∃W)(V→W∈F∧V⊆X(i)∧A∈W)}。
    (3)X(i+1)=B U X(i)
    (4)判断X(i+1)=X(i)
    (5)若X(i+1)与X(i)相等或X(i)=U, 则X(i)就是X+F,算法终止。
    (6)若否,则=i+1,返回第(2)步。
  8. 定理6.2 Armstrong公理系统是有效的,完备的。
    (1)若V→W成立,则V⊆X+F
    (2)构造一张二维表r,它由下列两个单元构成,可以证明r必是R(U,F)的一个关系,即F中的全部函数依赖在r上成立。
    在这里插入图片描述
    (3)若X→Y不能由F从Armstrong公理导出,则Y不是X+F的子集,因此必有Y的子集Y’ 满足 Y’⊆U-X+F,则X→Y在r 中不成立,即X→Y必不为R<U, F>蕴涵。
  9. 定义6.14 如果G+=F+,就说函数依赖集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价。
    引理6.3 G+=F+的充分必要条件是G+⊆F+和F+⊆G+
  10. 定义6.15 如果函数依赖集F 满足下列条件,则称F为一个极小函数依赖集,亦称为最小依赖集或最小覆盖( minimal cover)。
    (1) F中任一函数依赖的右部仅含有一个属性。
    (2) F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。
    (3) F中不存在这样的函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价。
  11. 定理6.3 每一个函数依赖集 F均等价于一个极小函数依赖集Fm。此Fm称为F的最小依赖集。

6.4 模式的分解

定义6.17 函数依赖集合 {X→YX→Y∈F" AXYCU}的一个覆盖F,叫作F在属性U上的投影。

6.4.1 模式分解的三个定义

对于一个模式的分解是多种多样的,但是分解后的模式应该与原模式等价,
(1)分解具有无损连接性(lossless join)。
(2)分解要保持函数依赖( preserve functional dependency)。
(3)分解既要保持函数依赖,又要具有无损连接性。
这三个定义是实行分解的三条不同的准则。按照不同的分解准则,模式所能达到的分离程度各不相同,各种范式就是对分离程度的测度。
本节要讨论的问题:
(1)无损连接性和保持函数依赖的含义是什么?如何判断?
(2)对于不同的分解等价定义究竟能达到何种程度的分离,即分离后的关系模式是第几范式。
(3)如何实现分离,即给出分解的算法。
一个关系分解为多个关系,相应的原来存储在一张二维表中的数据就要分散存储在多张二维表中,要使这个分解有意义,起码要求是后者不能丢失前者的信息。

6.4.2 分解的无损连接性和保持函数依赖性

引理6.4 设R<U, F>是一个关系模式,p={R.<U. F>. Ri<Uk. F>}是R的一个分解,r是R的一个关系,r=πp(r) ,则
(1) r⊆mp(r)
(2)若s=mp(r),则πRi(s)=ri
(3) mp(mp (r ))=mp(r)

  1. 定义6.18 p={Rr<U,Fi>, … Rk<Uk, F>}是R<U, F>的一个分解,若对R<U, F>的任何一个关系r均有r= mp(r)成立,则称分解ρ具有无损连接性。简称ρ为无损分解
  2. 算法6.2 判别一个分解的无损连接性
    (1)建立一张n列k行的表,每一列对应一个属性,每一行对应分解中的一个关系模式。若属性A属于Ui,则在j列i行交叉处填上aj,否则填上bij
    (2)对每一个FDi,做下列操作:找到X所对应的列中具有相同符号的那些行,考察这些行中li列的元素。若其中有ali;则全部改为ali;否则全部改为bmli ,其中m是这些行的行号最小值。
  3. 定理6.4 如果算法6.2终止时表中有一行为a1 ,a2 ,…,an ,则ρ为无损连接分解。
  4. 定理6.5 对于 R<U,F>的一个分解p={R1<U1,F1>, R2<U2,F2>},如果U1∩ U2,→U1-U2∈F+或U1∩U2→U2-U1∈F+,则ρ具有无损连接性。

6.4.3 模式分解的算法

P198-201

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东风难破

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值