【数据库系统】数据库系统概论====第六章 关系数据库理论

【数据库系统】数据库系统概论====第六章 关系数据库理论

6.1问题的提出

  1. 关系模式的表示
    关系模式由五部分组成,是一个五元组:R(U,D,DOM,F)。
    (1)关系名R是符号化的元组语义。
    (2)U为一组属性。
    (3)D为属性U中的属性所来自的域。
    (4)DOM为属性到域的映射。
    (5)F为属性组U上的一组数据依赖。
    说明:
    (1)由于D、DOM与模式设计关系不大,因此在本章中把关系模式看作一个三元组:R<U,F>。
    (2)当且仅当U上的一个关系r满足F时,r称为关系模式R<U,F>的一个关系。
    (3)作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。满足了这个条件的关系模式就属于第一范式(1NF)。
  2. 数据依赖
    数据依赖是一个关系内部属性与属性之间的一种约束关系,是通过属性间值的相等与否体现出来的数据间相互联系。
    数据依赖的主要类型:
    函数依赖(简记为FD)。
    多值依赖(简记为MVD)。
  3. 函数依赖在现实生活中的体现
    例:建立一个描述学校教务的数据库。设计的对象包括:学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、课程号(Cno)、成绩(Grade)。
    假设学校教务的数据库模式用一个单一的关系模式Student来表示,则该关系模式的属性集合为:U={Sno,Sdept,Mname,Cno,Grade}
    现实世界的已知事实(语义):
    一个系有若干学生,但一个学生只属于一个系;
    一个系只有一名(正职)负责人;
    一个学生可以选修多门课程,每门课程有若干学生选修;
    每个学生学习每一门课程有一个成绩。
    由此可得到属性组U上的一组函数依赖F:
    F={Sno->Sdept,Sdept->Mname,(Sno,Cno)->Grade}
    【数据库系统】数据库系统概论====第六章 关系数据库理论
  4. 函数依赖存在的问题
    (1)数据冗余
    浪费大量的储存空间,每一个系主任的姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。
    (2)更新异常
    数据冗余,更新数据时,维护数据完整性代价太大。某系更换系主任后,必须修改与该系学生有关的每一个元组,否则会出现数据不一致的异常。
    (3)插入异常
    如果一个系刚成立,尚无学生,则无法把这个系及其系主任的信息存入数据库。
    (4)删除异常
    如果某个系的学生毕业了,则在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。
    说明:
    ①Student关系模式不是一个好的模式。一个“好”的模式应当不会发生插入异常、删除异常和更新异常,数据冗余应尽量少。
    ②存在以上问题的原因是由于存在于模式中的某些数据依赖引起的。
    ③解决方法是用规范化理论改造关系模式来消除其中不合适的数据依赖。
  5. 函数依赖的解决方式
    吧这个单一的模式分成三个关系模式:
    S(Sno,Sdept,Sno->Sdept);
    SC(Sno,Cno,Grade,(Sno,Cno)->Grade);
    DEPT(Sdept,Mname,Sdept->Mname);
    这三个模式都不会发生插入异常、删除异常的问题,数据的冗余也得到了控制。

6.2规范化

6.2.1函数依赖

定义1:设R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或”Y函数依赖于X“,记作X → Y。
一些属于和记号:
(1)X → Y,但Y⊊X则称X → Y是非平凡的函数依赖。
(2)X → Y,但Y⊆X则称X → Y是平凡的函数依赖。
对于任一关系模式,平凡函数依赖都是必然成立的,若不特别声明,我们总是讨论非平凡函数依赖。
(3)若X → Y,则X称为这个函数依赖的决定属性组,也称为决定因素。
(4)若X → Y,并且Y->X,则记为X ← → Y。
(5)若Y不函数依赖于X,则记为X-/->Y。
定义2:在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X‘-/->Y,则称Y对X完全函数依赖,记作
【数据库系统】数据库系统概论====第六章 关系数据库理论
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作
【数据库系统】数据库系统概论====第六章 关系数据库理论
定义3:在R(U)中,如果X → Y(Y⊊X),Y-/->X,Y→ Z,Z⊊Y,则称Z对X传递函数依赖。
记为
【数据库系统】数据库系统概论====第六章 关系数据库理论
注意:如果Y→X,即X ← → Y,则Z直接依赖于X,而不是传递函数依赖。

6.2.2码

定义4:设K为R<U,F>中的属性或属性组合,若
【数据库系统】数据库系统概论====第六章 关系数据库理论
则K称为R的一个候选码。
如果U部分函数依赖于K,即
【数据库系统】数据库系统概论====第六章 关系数据库理论
则K称为超码。候选码是最小的超码,即K的任意一个真子集都不是候选码。
若关系模式R有多个候选码,则选定其中的一个做为主码。
主属性与非主属性
主属性:包含在任何一个候选码中的属性。
非主属性:不包含在任何码中的属性。
全码:整个属性组是码,称为全码。
定义5:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码也称外码。

6.2.3范式

范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。
【数据库系统】数据库系统概论====第六章 关系数据库理论
各种范式之间存在联系:
5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF
【数据库系统】数据库系统概论====第六章 关系数据库理论
某一关系模式R为第n范式,可简记为R∈nNF。
规范化:是指一个低一级范式的关系模式,通过模式分解转换为若干个高一级范式的关系模式集合的过程。

6.2.42NF

定义6:若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF。
一个关系模式不属于2NF,会产生以下问题:
(1)插入异常
(2)删除异常
(3)修改复杂
出现这种问题的原因:
出现非主属性对码完全函数依赖和不是完全函数依赖两种情况。
解决方法:
用投影分解把关系模式分解成两个关系模式。

6.2.5 3NF

定义7:设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Y⊊Z),使得X → Y,Y→ Z成立,Y-/->X不成立,则称R<U,F>∈3NF。

6.2.6 BCNF

BCNF由Boyce和Codd提出,比3NF更进了一步。通常认为BCNF是修正的第三范式,有时也称为扩充的第三范式。
定义8:设关系模式R<U,F>∈1NF,若X → Y且Y⊊X时X必含有码,则R<U,F>∈BCNF。
换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。
BCNF的关系模式所具有的性质:
(1)所有非主属性都完全依赖于每个候选码。
(2)所有主属性都完全函数依赖于每个不包含它的候选码。
(3)没有任何属性完全函数依赖于非码的任何一组属性。
如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。
说明:
①对于不是BCNF的关系模式,仍然存在不合适的地方。非BCNF的关系模式也可以通过分解成为BCNF。
②3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测度。
一个模式中的关系如果都属于BCNF,那么在函数依赖范畴内,它已经实现了彻底的分离,已消除了插入和删除的异常。
3NF的“不彻底”性表现在可能存在主属性对码的部分依赖和传递依赖。

6.2.7多值依赖

定义9:设R(U)是属性集U上的一个关系模式。X、Y、Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X →→ Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
多值依赖的另一个等价的定义:在R(U)的任一关系r中,如果存在元组t,s使得t[[X]=s[X],那么就必然存在元组w、v∈r(w、v可以与s、t相同),使得w[X]=v[X]=t[X],而w[Y]=t[Y],w[Z]=s[Z],v[Y]=s[Y],v[Z]=t[Z](即交换s,t元组的Y值所得的两个新元组必在r中,则Y多值依赖于X,记为X →→ Y。这里X、Y是U的子集,Z=U-X-Y。
平凡多值依赖:若X →→ Y,而Z=∅,即Z为空,则称X →→ Y为平凡的多值依赖,否则称X →→ Y为非平凡的多值依赖。
多值依赖的性质:
(1)多值依赖具有对称性:若X →→ Y,则X →→ Z,其中Z=U-X-Y。
(2)多值依赖具有传递性:若X →→ Y,Y →→ Z,则X →→ Z-Y。
(3)函数依赖是多值依赖的特殊情况:若X →Y,则X →→ Y。
(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。
多值依赖与函数依赖的区别:
(1)多值依赖的有效性与属性集的范围有关。
若X →→ Y在U上成立,则在W(XY⊆W⊆U)上一定成立;反之则不然,即X →→ Y在W(W⊂C)上成立,在U上并不一定成立。
原因:多值依赖的定义中不仅涉及属性组X和Y,而且涉及U中其余属性Z。
一般地,在R(U)上若有X →→ Y在W(W⊂C)上成立,则称X →→ Y为R(U)的嵌入型多值依赖。
函数依赖X → Y的有效性仅决定于X、Y这两个属性集的值。
只要在R(U)的任何一个关系r中,元组在X和Y上的值满足定义1,则函数依赖X → Y在任何属性集W(XY⊆W⊆U)上成立。
(2)若函数依赖X → Y在R(U)上成立,则对于任何Y’⊂Y均有X → Y‘成立。多值依赖X→→Y若在R(U)上成立,不能断言对于任何Y’⊂Y有X →→ Y‘成立。

6.2.8 4NF

定义10:关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X →→ Y(X⊊ Y),X都含有码,则R<U,F>∈4NF。
说明:
①4NF是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。44NF所允许的非平凡多值依赖实际是函数依赖。
②如果一个关系模式是4NF,则必为BCNF。
③在关系WSC中,W →→ S,W →→ C,他们都是非平凡多值依赖。而W不是码,关系模式WSC的码是(W,S,C),即All-key,因此WSC∉4NF。可以把WSC分解成WS(W,S),WC(W,C),WS∈4NF,WC属于4NF。

6.2.9规范化小结
  1. 在关系数据库中,对关系模式的基本要求是满足第一范式。
  2. 规范化程度过低的关系不一定能够很好地描述现实世界。可能存在插入异常、删除异常、、修改复杂、数据冗余等问题,解决方法就是对其进行规范化,转换成高级范式。
  3. 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化。
  4. 关系数据库的规范化理论是数据库逻辑设计的工具。
  5. 规范化的基本思想
    (1)逐步消除数据依赖中不合适的部分,使模式中的各关系模式达到某种程度的“分离”。
    (2)采用“一事一地”的模式设计原则。
    让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去。因此规范化实质上是概念的单一化。
  6. 不能说规范化程度越高的关系模式就越好。
    必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式。
    规范化的过程
    【数据库系统】数据库系统概论====第六章 关系数据库理论

6.3数据依赖的公理系统

定义11:对于满足一组函数依赖F的关系模式R<U,F>,其任何一个关系r,若函数依赖X → Y都成立(即r中任意两元组t、s,若t[X]=s[X],则t[Y]=s[Y]),则称F逻辑蕴涵X → Y。
Armstrong公理系统:是一套推理规则,是模式分解算法的理论基础。主要用于求给定关系模式的码,从一组函数依赖求得蕴涵的函数依赖。
Armstrong公理系统设U为属性集总体,F是U上的一组函数依赖,于是有关系模式R<U,F>,对R<U,F>来说有以下的推理规则:
A1自反律:若Y⊆X⊆U,则X → Y为F所蕴涵。
A2增广律:若X → Y为F所蕴涵,且Z⊆U,则XZ → YZ为F所蕴涵。
A3传递律:若X → Y及Y → Z为F所蕴涵,则X → Z为F所蕴涵。
注意:由自反律所得到的函数依赖均是平凡的函数依赖,自反律的使用并不依赖于F。
定理1:Armstrong推理规则是正确的。
下面从定义触发证明推理规则的正确性。
证明:(1)设Y⊆X⊆U。
对R<U,F>的任一关系r中的任意两个元祖t、s:若t[X]=s[X],由于Y⊆X,有t[Y]=s[Y],所以X → Y成立,自反律得证。
(2)设X → Y为F所蕴涵,且Z⊆U。
设R<U,F>的任一关系r中任意的两个元组t、s:若t[XZ]=s[XZ],则有t[X]=s[X]和t[Z]=s[Z];由X → Y,于是有t[Y]=s[Y],所以t[YZ]=s[YZ],XZ → YZ为F所蕴涵,增广律得证。
(3)设X → Y,及Y → Z为F所蕴涵。
对R<U,F>的任一关系r中的任意两个元组t、s:若t[X]=s[X],由于X → Y,t[Y]=s[Y];再由Y → Z,有t[Z]=s[Z],所以X → Z为F所蕴涵,传递律得证。
根据A1,A2,A3这三条推理规则得到下面三条推理规则:
(1)合并规则:由X → Y,X → Z,有X → YZ。
(2)伪传递规则:由X → Y,WY → Z,有XW → Z。
(3)分解规则:由X → Y及Z⊆Y,有X⊆Z。
根据合并规则和分解规则,可得:
引理1:X → A1A2…Ak成立的充分必要条件是X → Ai成立(i=1,2,…,k)。
定义12:在关系模式R<U,F>中为F所逻辑蕴涵的函数依赖的全体叫作F的闭包,记为F+。
说明:
①自反律、传递律和增广律称为Armstrong公理系统。
②Armstrong公理系统具有有效性和完备性。
有效性是指由F出发根据Armstrong公理系统推导出的每一个函数依赖一定在F+中。
完备性是指F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理系统推导出来。
【数据库系统】数据库系统概论====第六章 关系数据库理论
【数据库系统】数据库系统概论====第六章 关系数据库理论
【数据库系统】数据库系统概论====第六章 关系数据库理论
【数据库系统】数据库系统概论====第六章 关系数据库理论
【数据库系统】数据库系统概论====第六章 关系数据库理论
【数据库系统】数据库系统概论====第六章 关系数据库理论
定义15:如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。
(1)F中任一函数的右部仅含有一个属性。
(2)F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。
(3)F中不存在这样的函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价。
【数据库系统】数据库系统概论====第六章 关系数据库理论

6.4模式的分解

【数据库系统】数据库系统概论====第六章 关系数据库理论
【数据库系统】数据库系统概论====第六章 关系数据库理论

6.4.1模式分解的三个定义

对于一个模式的分解是多种多样的,但是分解后产生的模式应与原模式等价。对“等价”的概念形成了三种不同的定义:

  1. 分解具有无损连接性。
  2. 分解要保持函数依赖。
  3. 分解既要保持函数依赖,又要具有无损连接性。
    说明:
    这三个定义实际是实行分解的三条不同的准则。按照不同的分解准则,模式所能达到的分离程度各不同,各种范式就是对分离程度的测度。
6.4.2分解的无损连接性和保持函数依赖性

【数据库系统】数据库系统概论====第六章 关系数据库理论
说明:
【数据库系统】数据库系统概论====第六章 关系数据库理论
(1)如果两个关系中有相同的属性列,则按第二章中的自然连接的定义进行;
(2)如果两个关系中没有相同的属性列,则按笛卡尔积运算进行;
将运算后得到的结果与其他关系进行重复1、2步的计算,直到完成全部的连接运算。
【数据库系统】数据库系统概论====第六章 关系数据库理论
说明:
【数据库系统】数据库系统概论====第六章 关系数据库理论
【数据库系统】数据库系统概论====第六章 关系数据库理论
【数据库系统】数据库系统概论====第六章 关系数据库理论
【数据库系统】数据库系统概论====第六章 关系数据库理论
定理4:如果算法2终止时表中有一行为a1,a2,…,an,则 ρ 为无损连接分解。
【数据库系统】数据库系统概论====第六章 关系数据库理论

6.4.3模式分解的算法

关于模式分解的几个重要事实:
若要求分解保持函数依赖,那么模式分解总可以达到3NF,但不一定能达到BCNF;
若要求分解既保持函数依赖,又具有无损连接性,可以达到3NF,但不一定能达到BCNF;
若要求分解具有无损连接性,那一定可达到4NF。
算法3(合成法):转换为3NF的保持函数依赖的分解。
(1)对R<U,F>中的F进行极小化处理。
(2)找出不在F中出现的属性(记作U0),把这样的属性构成一个关系模式R0<U0,F0>,把这些属性从U中去掉,剩余的属性仍记为U。
(3)若有X→A∈F,且XA=U,则ρ ={R},算法终止。
(4)否则,对F按具有相同左部的原则分组(假定分为K组),每一组函数依赖所涉及的全部属性形成一个属性集Ui。若Ui⊆Uj(i≠j)就去掉Ui,于是ρ={R1<U1,F1>,…,Rk<Uk,Uk>}∪R0<U0,F0>构成R<U,F>的一个保持函数依赖的分解,并且每个Ri<Ui,Fi>均属于3NF。
【数据库系统】数据库系统概论====第六章 关系数据库理论
【数据库系统】数据库系统概论====第六章 关系数据库理论
【数据库系统】数据库系统概论====第六章 关系数据库理论
算法6:达到4NF的具有无损连接性的分解。
首先使用算法5得到R的一个达到BCNF的无损连接分解ρ,然后对某一个Ri<Ui,Fi>,若不属于4NF,则可按定理6进行分解,直到每一个关系模式均属于4NF为止。
包含函数依赖和多值依赖的有效且完备的公理系统:
A1:若Y⊆X⊆U,则X→Y。
A2:若X→Y,且Z⊆U,则XZ→YZ。
A3:若X→Y,Y→Z,则X→Z。
A4:若X→→Y,V⊆W⊆U,则XW→YV。
A5:若X→→Y,则X→→U-X-Y。
A6:若X→→Y,Y→→Z,则X→→Z-Y。
A7:若X→Y,则X→→Y。
A8:若X→→Y,W→Z,W∩Y=∅,Z⊆Y,则X→Z。
由以上8条公理得知如下4条有用的推理规则:
(1)合并规则:X→→Y,Y→→Z,则X→→YZ。
(2)伪传递规则:X→→Y,WY→→Z,则WX→→Z-WY。
(3)混合伪传递规则:X→→Y,XY→→Z,则X→→Z-Y。
(4)分解规则:X→→Y,X→Z,则X→→Y∩Z,X→→Y-Z,X→→Z-Y。

6.5小结

  1. 关系模式的规范化,其基本思想如下:
    【数据库系统】数据库系统概论====第六章 关系数据库理论
  2. 规范化理论为数据库设计提供理论的指南和工具,仅仅是指南和工具。
  3. 并不是规范化程度越高,模式就越好,必须结合应用环境和现实世界的具体情况合理地选择数据库模式。