数据库第六章——关系数据理论

重要结论:

1.在关系DB中,二元关系模式的最高范式为4NF。

2.关系模式 R 中的属性全部是主属性,则 R 的最高范式必定是(3NF )

6.1 问题的提出

Ⅰ 关系模式看作一个三元组:R<U,F>

  • 关系名R是符号化的元组语义
  • U为一组属性
  • F为属性组U上的一组数据依赖
  • 当且仅当U上的一个关系r满足F时,r称为关系模式R<U,F>的一个关系
  • 作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。满足了这个条件的关系模式就属于第一范式(1NF)

Ⅱ 属性间的联系:一对一联系、多对一联系、多对多联系

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

(1)数据依赖的主要类型

  • 函数依赖
  • 多值依赖

6.2 规范化

6.2.1  函数依赖

1.函数依赖

一、定义: R(U)是一个属性集U上的关系模式,XYU的子集。若对于R(U)的任意一个可能的关系rr 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y或“Y函数依赖于X,记作XY

        二、函数依赖与属性间的联系类型有关

(1) 一对一联系:X←→Y

(2) 多对一联系:X→Y

(3) 多对多联系:不存在依赖关系

(4) 可从属性间的联系类型来分析属性间的函数依赖

  • X→Y,并且Y→X, 则记为X←→Y
  • Y不函数依赖于X, 则记为XY。

2.平凡函数依赖与非平凡函数依赖

XY,但YX则称XY是非平凡的函数依赖。

XY,但YX 则称XY是平凡的函数依赖。

例:在关系SC(Sno, Cno, Grade)中,

            非平凡函数依赖: (Sno, Cno) → Grade

            平凡函数依赖:     (Sno, Cno) → Sno

                                          (Sno, Cno) → Cno

3.完全函数依赖与部分函数依赖

 ①在R(U)中,如果XY,并且对于X的任何一个真子集X’, 都有 X’ Y, 则称YX完全函数依赖,记作X Y

         ②XY,但x的真子集不决定y,则称YX部分函数依赖,记作XY

4.传递函数依赖

定义:  在R(U)中,如果XY(YX),YXYZZY, 则称ZX传递函数依赖(transitive functional dependency)。记为:XZ

: 如果YX, X←→Y,则Z直接依赖于X,而不是传递函数依赖。

[] 在关系Std(Sno, Sdept, Mname)中,有:SnoSdeptSdeptMnameMname传递函数依赖于Sno

6.2.2 

定义:  KR<U,F>中的属性或属性组合。若KU,则K称为R的一个候选码(Candidate Key)

 

  • 如果U部分函数依赖于KK称为超码  (Surpkey)。候选码是最小的超码,即K的任意一个真子集都不是候选码。
  • 若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)

(1)主属性与非主属性

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

n不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute

(2)全码:整个属性组是码,称为全码(All-key

(3) 外码:关系模式 R中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X R 外部码Foreign key)也称外码

6.2.3  范式

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

6.2.4  2NF:不存在非主属性对码的部分函数依赖

6.2.5  3NF:在第二范式的基础上,不存在非主属性对码的传递函数依赖

例:2NF关系模式S-L(Sno, Sdept, Sloc)

函数依赖:

          Sno→Sdept

          Sdept → Sno

          Sdept→Sloc

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

6.2.6  BCNF:在第三范式的基础上,不存在主属性对码的部分函数依赖和传递函数依赖,每一个决定属性集包含候选码

[例6.8] 关系模式STJ(S,T,J)中,S表示学生,T示教师,J表示课程。每一教师只教一门课。每门课有若干教师,某一学生选定某门课,就对应一个固定的教师。

  • 由语义可得到函数依赖:(S,J)→T(S,T)→JT→J
  • 因为没有任何非主属性对码传递依赖或部分依赖, STJ ∈ 3NF
  • 因为T是决定因素,而T不包含码,所以STJ  BCNF。

6.2.7  多值依赖

定义: R(U)是属性集U上的一个关系模式。X,Y,ZU的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。

例:  TeachingC, T, B

    对于C的每一个值,T有一组值与之对应,而不论B取何值。因此T多值依赖于C,即C→→T

(一)平凡多值依赖和非平凡的多值依赖

X→→Y,而ZФ,即Z为空,则称X→→Y平凡的多值依赖否则称X→→Y非平凡的多值依赖(即Z不为空集)

(二)多值依赖的性质

1)多值依赖具有对称性。即若X→→Y,则X→→Z,其中ZUXY

2)多值依赖具有传递性。即若X→→YY→→Z, 则         X→→Z -Y

3)函数依赖是多值依赖的特殊情况。即若XY,则       X→→Y

4)若X→→YX→→Z,则X→→YZ

5)若X→→YX→→Z,则X→→YZ

6)若X→→YX→→Z,则X→→Y-ZX→→Z -Y

 (三)多值依赖与函数依赖的区别

1)多值依赖的有效性与属性集的范围有关

X→→YU上成立,则在W上一定成立;反之则不然,即X→→YW上成立,在U上并不一定成立。

2)若函数依赖XYR (U)上成立,则对于任何Y‘均有XY’ 成立。多值依赖X→→Y若在R(U)上成立,不能断言对于任何Y’ X→→Y’ 成立。

6.2.8  4NF

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

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

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

6.2.9  规范化小结

注意:不能说规范化程度越高的关系模式就越好。

6.3 数据依赖的公理系统

 (1)定义6.11  对于满足一组函数依赖F的关系模式   R <U,F>,其任何一个关系r,若函数依赖XY都成立(即r中任意两元组ts,若t[X]=s[X],则 t[Y]=s[Y]),则称F逻辑蕴涵XY

(2)Armstrong公理系统 

U为属性集总体,FU上的一组函数依赖, 于是有关系模式R <U,F >。对R <U,F> 来说有以下的推理规则:

A1 自反律reflexivity rule):若Y X U,则XY F所蕴涵。

A2 增广律augmentation rule):若XYF所蕴涵,且Z U,则XZYZ F所蕴涵。

A3 传递律transitivity rule):若XYYZF所蕴涵,则XZ F所蕴涵。

注意:由自反律所得到的函数依赖均是平凡的函数依赖,  自反律的使用并不依赖于F

 ※根据A1A2A3这三条推理规则可以得到下面三条推理规则:

n 合并规则union rule):XYXZ,有XYZ

n 伪传递规则pseudo transitivity rule): XYWYZ,有XWZ

n 分解规则decomposition rule):  XYZY,有XZ

根据合并规则和分解规则,可得引理6.1

引理6.1  XA1 A2…Ak成立的充分必要条件是XAi成立(i=1,2k)。

(3)定义6.1在关系模式R<U,F>中为F所逻辑蕴涵的函数依赖的全体叫作F的闭包,记为

(4)定义6.13  设F为属性集U上的一组函数依赖,X、YU={ A|XA能由F根据Armstrong公理导出},称为属性集X关于函数依赖集F的闭包

  • 引理6.2  F为属性集U上的一组函数依赖,XY UXY能由F根据Armstrong公理导出的充分必要条件是Y
  • 引理6.2的用途判定XY是否能由F根据Armstrong公理导出的问题,就转化为求出,判定Y是否为的子集的问题。

求闭包:

    

(5)定义6.14  如果,就说函数依赖集F覆盖GFG的覆盖,或GF的覆盖),或FG等价。

注意:两个函数依赖集等价是指它们的闭包等价

  • 引理6.3 的充分必要条件是 
  • 要判定,只须逐一对F中的函数依赖XY,考察 Y 否属于  就行了。
  • 因此引理6.3 给出了判断两个函数依赖集等价的可行算法。 

(6)定义6.15  如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集,亦称为最小依赖集或最小覆盖。

1单属性化: F中任一函数依赖的右部仅含有一个属性。

2无冗余化: F中不存在这样的函数依赖XA 使得FF-{XA}等价。即F中的函数依赖均不能由F中其他函数依赖导出

 (3既约化: F中不存在这样的函数依赖X→AX有真子集Z使得F-{XA}∪{ZA}F等价。即F中各函数依赖左部均为最小属性集(不存在冗余属性)

  • 无冗余化实例: 

注意:F的最小依赖集Fm不一定是唯一的,它与对各函数依赖FDi XAX各属性的处置顺序有关。

  • 既约化实例:

6.4 模式的分解

 (1)三种模式分解等价的定义:
          ⒈ 分解具有无损连接性

  ⒉ 分解要保持函数依赖

  ⒊ 分解既要保持函数依赖,又要具有无损连接性

 

(2)关系模式R<U,F>的一个分解 ρ={ R1<U1,F1>R2<U2,F2>Rn<Un,Fn>},RR1R2Rn自然连接的结果相等,则称关系模式R的这个分解ρ具有无损连接性(Lossless join

(3)

v如果一个分解具有无损连接性,则它能够保证不丢失信息

v如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况

v分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖;同样,保持函数依赖的分解也不一定具有无损连接性。

(4)分解算法

v算法6.2  判别一个分解的无损连接性

v算法6.3(合成法)转换为3NF的保持函数依赖的分解。

v算法6.4 转换为3NF既有无损连接性又保持函数依赖的分解

v算法6.5 (分解法)转换为BCNF的无损连接分解

v算法6.6  达到4NF的具有无损连接性的分解 

6.5 小结

  • 若要求分解具有无损连接性,那么模式分解一定能够达到4NF
  • 若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能够达到BCNF
  • 若要求分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到3NF,但不一定能够达到BCNF
  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值