数据库第六章总结!

    关系名1.关系模式由五部分组成,是一个五元组: R(U, D, DOM, F)R是符号化的元组语义

       U为一组属性

       D为属性组U中的属性所来自的域

       DOM为属性到域的映射

       F为属性组U上的一组数据依赖

2.数据依赖

      是一个关系内部属性与属性之间的一种约束关系通过属性间值的相等与否体现出来的数据间相互联系)

      是现实世界属性间相互联系的抽象

      是数据内在的性质

      是语义的体现

3.数据依赖的主要类型

      函数依赖

      多值依赖

4.关系模式Student<U, F>中存在的问题:

       (1)数据冗余浪费大量的存储空间

       (2)更新异常:数据冗余 ,更新数据时,维护数据完整性代价大。

       (3)插入异常

       (4)删除异常

    解决之道:模式分解!

5.主属性与非主属性

      包含在任何一个候选码中的属性 ,称为主属性       

      不包含在任何码中的属性称为非主属性或非码属性

      全码:整个属性组是码,称为全码

6.范式的种类:   

      第一范式(1NF)

      第二范式(2NF)

      第三范式(3NF)

      BC范式(BCNF)

      第四范式(4NF)

      第五范式(5NF)

7.   第二范式(2NF):若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF

      第三范式(3NF):设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性ZZ Y), 使得XYYZ成立,Y X不成立,则称R<U,F> ∈ 3NF。

      BC范式(BCNF):设关系模式R<U,F>∈1NF,若XYY XX必含有码,则R<U,F>∈BCNF。

     第四范式(4NF):关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→YY X),X都含有码,则R<U,F>∈4NF。

       不允许有非平凡且非函数依赖的多值依赖。

      允许的非平凡多值依赖实际上是函数依赖。

8. BCNF的关系模式所具有的性质:

      ⒈ 所有非主属性都完全函数依赖于每个候选码

      ⒉ 所有主属性都完全函数依赖于每个不包含它的候选码

     ⒊ 没有任何属性完全函数依赖于非码的任何一组属性

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

6.1 问题的提出
(1)关系数据库逻辑设计
针对具体问题,如何构造一个适合于它的数据模式
数据库逻辑设计的工具──关系数据库的规范化理论
(2)关系模式由五部分组成,是一个五元组:            R(U, D, DOM, F)
6.1.1 问题的提出

关系名R是符号化的元组语义
U为一组属性
D为属性组U中的属性所来自的域
DOM为属性到域的映射
F为属性组U上的一组数据依赖
由于D、DOM与模式设计关系不大,因此在本章中把关系模式看作一个三元组:R<U,F>
当且仅当U上的一个关系r满足F时,r称为关系模式R<U,F>的一个关系

作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。满足了这个条件的关系模式就属于第一范式(1NF)
6.1.2 属性间的联系
 (1)一对一联系
设X,Y为关系中的属性或属性组,它们的所有可能取值组成两个集合。如果对于X中的任一具体值Y中至多有一个值与之对应,称X,Y这两个属性之间是一对一联系。
例:在读者关系中,借书证号是唯一的,如果读者没有重名的,姓名与借书证号两个属性之间是1:1联系。姓名可以确定借书证号,借书证号也可以确定姓名。
(2)如果属性值集合X中的任一个具体值,至多与Y中的一个值相对应,而Y中的任一个具体值却可以和X中的多个值相对应,则称两个属性间从X到Y为m:1的联系或从Y到X是1:m的联系。
注意:这里指的是属性值个数的多少,而不是具有相同属性值的有多少个元组,二者正好相反。
例:在图书关系中,一本书有若干副本,它们有相同的书名、作者、分类号等,但每本书有唯一的总编号。书名与总编号之间是1:m,即同一个书名,有多个总编号与之对应。()
(3)多对多联系
在X,Y两个属性值集中,如果任一个值都可以至多和另一个属性值集中多个值对应,反之亦然,则称属性X和Y是m:n关系。
例:在借阅关系中,一个读者可以借多本书,即同一个借书证号有若干个图书总编号与之对应。由总编号标识的一本书在不同日期可以被不同的读者借阅。
(4)数据依赖
是一个关系内部属性与属性之间的一种约束关系
通过属性间值的相等与否体现出来的数据间相互联系
是现实世界属性间相互联系的抽象
是数据内在的性质
是语义的体现
(5)数据依赖的主要类型
函数依赖(Functional Dependency,简记为FD)
多值依赖(Multi-Valued Dependency,简记为MVD)
6.2  规范化
规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
6.2.1 函数依赖
1.  函数依赖

1.定义6.1  设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。
2.函数依赖与属性间的联系类型有关
(1) 一对一联系:X←→Y
(2) 多对一联系:
X→Y
(3) 多对多联系:不存在依赖关系

(4) 可从属性间的联系类型来分析属性间的函数依赖 
说明:
 
1. 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。

2. 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。
    例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立
3. 数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。


2. 平凡函数依赖与非平凡函数依赖
X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。
例:在关系SC(Sno, Cno, Grade)中,
            非平凡函数依赖: (Sno, Cno) → Grade
            平凡函数依赖:
    (Sno, Cno) → Sno 
                                          (Sno, Cno) → Cno
若X→Y,则X称为这个函数依赖的决定因素(Determinant)。

若X→Y,Y→X,则记作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部分函数依赖,记作X → Y
[例] 在关系SC(Sno, Cno, Grade)中,有:

 由于:Sno ↛Grade,Cno ↛ Grade 
         因此:
(Sno, Cno)  →   Grade
 (Sno,Cno)→Sdept是部分函数依赖

              因为Sno →Sdept成立,且Sno是(Sno,Cno)的真子集
4. 传递函数依赖
定义6.3  在R(U)中,如果X→Y(Y⊈X),Y↛X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖(transitive functional dependency)。记为:X → Z。
注: 如果Y→X, 即X←→Y,则Z直接依赖于X,而不是传递函数依赖。
[例] 在关系Std(Sno, Sdept, Mname)中,有:
Sno → Sdept,Sdept → Mname,
Mname传递函数依赖于Sno
找出职工工资表中的传递函数依赖

6.2.2  
(1)定义6.4  设K为R<U,F>中的属性或属性组合。若K → U,则K称为R的一个候选码(Candidate Key)。
如果U部分函数依赖于K,即K → U,则K称为超码      (Surpkey)。候选码是最小的超码,即K的任意一个真子集都不是候选码。
(2)若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。
(3)主属性与非主属性
包含在任何一个候选码中的属性 ,称为主属性          (Prime attribute) 
不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute)
 
(4)全码:整个属性组是码,称为全码(All-key)
 
[例6.2]S(Sno, Sdept, Sage),单个属性Sno是码

             SC(Sno, Cno, Grade)中,(Sno, Cno)是码
[例6.3] R(P,W,A) P:演奏者     W:作品    A:听众
        一个演奏者可以演奏多个作品
        某一作品可被多个演奏者演奏
        听众可以欣赏不同演奏者的不同作品 
        码为(P,W,A),即
All-Key 
(5)定义6.5  关系模式 R中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码。

SC(Sno,Cno,Grade)中,Sno不是码
Sno是 S(Sno,Sdept,Sage)的码,则Sno是SC的外码 
(6)主码与外部码一起提供了表示关系间联系的手段

6.2.3  范式
(1)各种范式之间存在联系:
(2)某一关系模式R为第n范式,可简记为R∈nNF。
一个低一级范式的关系模式,通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(normalization)。

6.2.4  2NF
(1)定义6.6  若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF
[例6.4]  S-L-C(Sno,Sdept,Sloc,Cno,Grade), Sloc为学生的住处,并且每个系的学生住在同一个地方。S-L-C的码为(Sno,Cno)。

    函数依赖有
(Sno,Cno)→Grade
Sno→Sdept, (Sno,Cno)→Sdept
Sno→Sloc, (Sno,Cno)→Sloc
Sdept→Sloc

S-L-C的码为(Sno, Cno)
S-L-C满足第一范式。

非主属性Sdept、Sloc并不完全依赖于码
关系模式S-L-C不属于2NF
(2)一个关系模式不属于2NF,会产生以下问题:

插入异常
如果插入一个新学生,但该生未选课,即该生无Cno,由于插入元组时,必须给定码值,因此插入失败。
删除异常
如果S4只选了一门课C3,现在他不再选这门课,则删除C3后,整个元组的其他信息也被删除了。
修改复杂
如果一个学生选了多门课,则Sdept,Sloc被存储了多次。如果该生转系,则需要修改所有相关的Sdept和Sloc,造成修改的复杂化
(3)出现这种问题的原因
例子中有两类非主属性:
一类如Grade,它对码完全函数依赖
另一类如Sdept、Sloc,它们对码不是完全函数依赖
(4)解决方法:
用投影分解把关系模式S-L-C分解成两个关系模式
SC(Sno,Cno,Grade)
S-L(Sno,Sdept,Sloc)

SC的码为(Sno,Cno),SL的码为Sno,这样使得非主属性对码都是完全函数依赖了

6.2.5 3NF
(1)定义6.7  设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z ⊇ Y), 使得X→Y,Y→Z成立,Y ↛ X
不成立,则称R<U,F> ∈ 3NF。
SC没有传递依赖,因此SC ∈ 3NF
例:2NF关系模式S-L(Sno, Sdept, Sloc)中

函数依赖:
          Sno→Sdept
          Sdept → Sno
          Sdept→Sloc
         
可得:          
         Sno→Sloc,即S-L中存在非主属性对码的传递函数依

         赖,S-L ∈ 3NF
函数依赖图:

(2)不良特性
插入异常:如果系中没有学生,则有关系的信息就无法插入。
删除异常:如果学生全部毕业了,则在删除学生信息的同时有关系的信息也随之删除了。
更新异常:如果学生转系,不但要修改SDept,还要修改Sloc,如果换Sloc,则该系每个学生元组都要做相应修改。
数据冗余:每个学生都存储了所在系的Sloc的信息。
(3)解决方法
   采用投影分解法,把S-L分解为两个关系模式,以消除传递函数依赖:
            S-D(Sno, Sdept)
                D-L(Sdept,Sloc)
S-D的码为Sno, D-L的码为Sdept。
分解后的关系模式S-D与D-L中不再存在传递依赖 
(4)说明

    (1) 每个非主属性既不部分依赖,也不传递依赖于R的任何码。
    (2) 从1NF→2NF:消除非主属性对码的部分函数依赖
    (3) 从2NF→3NF:消除非主属性对码的传递函数依赖
    (4) 从一个表中删去不依赖于主码的数据列。
6.2.6  BCNF
(1)BCNF(Boyce Codd Normal Form)由Boyce和Codd提出,比3NF更进了一步。通常认为BCNF是修正的第三范式,有时也称为扩充的第三范式。
(2)定义6.8  设关系模式R<U,F>∈1NF,若X →Y且Y ⊆ X时X必含有码,则R<U,F>∈BCNF。
(3)换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。
(4)[例6.5]考察关系模式C(Cno,Cname,Pcno)
它只有一个码Cno,没有任何属性对Cno部分依赖或传递依赖,所以C∈3NF。

同时C中Cno是唯一的决定因素,所以C∈BCNF。
对于关系模式SC(Sno,Cno,Grade)可作同样分析。
(5)不良特性
插入异常:如果没有学生选修某位老师的任课,则该老师担任课程的信息就无法插入。
删除异常:删除学生选课信息,会删除掉老师的任课信息。
更新异常:如果老师所教授的课程有所改动,则所有选修该老师课程的学生元组都要做改动。
数据冗余:每位学生都存储了有关老师所教授的课程的信息。
(6)症由:
    主属性对码的不良依赖。
(7)非BCNF的关系模式也可以通过分解成为BCNF。例如STJ可分解为ST(S,T)与TJ(T,J),它们都是BCNF。

没有任何属性对码的部分函数依赖和传递函数依赖

BCNF的关系模式所具有的性质
所有非主属性都完全函数依赖于每个候选码
所有主属性都完全函数依赖于每个不包含它的候选码
没有任何属性完全函数依赖于非码的任何一组属性
6.2.7 多值依赖
例[6.9]设学校中某一门课程由多个教师讲授,他们
使用相同的一套参考书。每个教员可以讲授多门课
程,每种参考书可以供多门课程使用

用关系模式Teaching(C,T,B)来表示课程C、教师T和参
考书B之间的关系。

(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)例  Teaching(C, T, B)
   对于C的每一个值,T有一组值与之对应,而不论
B取何值。因此T多值依赖于C,即C→→T。 
(3)平凡多值依赖和非平凡的多值依赖

    若X→→Y,而Z=Ф,即Z为空,则称X→→Y为平凡的多值依赖。
    否则称X→→Y为非平凡的多值依赖
(4)找出关系上所满足的多值依赖。

A→→C
C→→A

[例6.10]关系模式WSC(W,S,C)中,W表示仓库,S 表示保管
员,C 表示商品。假设每个仓库有若干个保管员,有若干种
商品。每个保管员保管所在仓库的所有商品,每种商品被所
有保管员保管。

(5)按照语义对于W的每一个值Wi,S有一个完整的集合与之对应而不问C取何值。所以W→→S。
(6)对应W的某一个值Wi的全部S值记作{S}Wi(表示此仓库工作的全部保管员)
全部C值记作{C}Wi(表示在此仓库中存放的所有商品)
应当有{S}Wi中的每一个值和{C}Wi中的每一个C值对应
于是{S}Wi与{C}Wi之间正好形成一个完全二分图,因而W→→S。
(7)由于C与S的完全对称性,必然有W→→C成立。

(8)多值依赖的性质
(1)多值依赖具有对称性。
即若X→→Y,则X→→Z,其中Z=U-X-Y
多值依赖的对称性可以用完全二分图直观地表示出来。

从[例6.10] 容易看出,因为每个保管员保管所有商品,同时每种商品被所有保管员保管,显然若W→→S,必然有W→→C。
(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。
(9)多值依赖与函数依赖的区别
(1)多值依赖的有效性与属性集的范围有关
若X→→Y在U上成立,则在W(XYÍ W Í U)上一定成立;反之则不然,即X→→Y在W(W Ì  U)上成立,在U上并不一定成立。
原因:多值依赖的定义中不仅涉及属性组X和Y,而且涉及U中其余属性Z。
多值依赖的有效性与属性集的范围有关(续)
一般地,在R(U)上若有X→→Y在W(W Ì U)上成立,则称X→→Y为R(U)的嵌入型多值依赖。
函数依赖X→Y的有效性仅决定于X、Y这两个属性集的值
只要在R(U)的任何一个关系r中,元组在X和Y上的值满足定义6.l,则函数依赖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
(1)定义6.10  关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF。
(2)不允许有非平凡且非函数依赖的多值依赖。
(3)允许的非平凡多值依赖实际上是函数依赖。
例: Teaching(C,T,B) ∈ 4NF
     存在非平凡的多值依赖C→→T,且C不是码

     如果一门课Ci有m个教员,n本参考书,则关系中分量为Ci的元组共有m×n个,数据冗余非常大。
用投影分解法把Teaching分解为如下两个关系模式:
                       CT(C, T) ∈ 4NF
                     CB(C, B) ∈ 4NF
     C→→T
, C→→B是平凡多值依赖
在分解后的关系中分量为Ci的元组共有m + n个。  

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值