数据库---关系数据理论

引入

  • 数据库逻辑设计的工具:关系数据库的规范化理论。

  • 关系模式R(U,D,DOM,F)
    R关系名
    U:组成该关系的属性名集合
    D:属性组U中属性所来自的域
    DOM:属性向域的映象集合
    F:属性间数据的依赖关系集合

    将关系模式简化为一个三元组:R(U, F)。当且仅当U上的一个关系r满足F时,r称为关系模式 R(U, F)的一个关系。

  • 关系要符合的一个最基本的条件:关系R的所有属性均为简单属性,即每个属性都是不可再分的,则称R满足第一范式(1NF)。不满足第一范式的数据库模式不能称为关系数据库,但是满足第一范式的关系模式并不一定是一个好的关系模式。

  • 数据依赖:一个关系内部属性与属性之间的约束关系。这种约束关系是通过属性间值的相等与否体现出来的数据间相关联系。是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。

    函数依赖(Functional Dependency,简记为FD)
    多值依赖(Multivalued Dependency,简记为MVD)

  • “好”的模式不会发生插入异常(Insertion Anomalies)、删除异常(Deletion Anomalies)、更新异常(Update Anomalies),数据冗余应尽可能少。由存在于模式中的某些数据依赖引起的问题,可以通过分解关系模式来消除其中不合适的数据依赖。

规范化

  • 规范化理论是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。

函数依赖

  • 函数依赖是语义范畴的概念,只能够根据一个语义来确定函数依赖。

    函数依赖是R一切关系均要满足的约束条件。

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

  • X→Y是平凡函数依赖。对于任意的关系模式,平凡函数依赖都是必然成立的,不反应新的语义。
    在这里插入图片描述
    X→Y是非平凡函数依赖
    在这里插入图片描述

  • 若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。

    若X→Y,Y→X,则记作X←→Y。

    若Y不函数依赖于X,则记作
    X→Y。

  • 在R(U)中,如果Y函数依赖X,并且对于X的任何一个真子集X’,都有Y不函数依赖X’, 则称Y对X完全函数依赖
    在这里插入图片描述
    若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖
    在这里插入图片描述

  • 传递函数依赖
    在这里插入图片描述
    如果Y→X, 即X←→Y,则Z直接依赖于X。

  • 设K为R<U,F>中的属性或属性组合。若U完全函数依赖于K,则K称为R的侯选码(Candidate Key)。若U部分函数依赖于K,则K称为超码。候选码是最小的超码。若候选码多于一个,则选定其中的一个做为主码(Primary Key)。

    包含在任何一个候选码中的属性 ,称为主属性(Prime attribute)。不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute)

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

    关系模式 R 中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R 的外部码(Foreign key)也称外码。主码与外部码一起提供了表示关系间联系的手段。

范式

  • 范式(1NF-5NF)是符合某一种级别的关系模式的集合。

    某一关系模式R为第n范式,可简记为R∈nNF。

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

    关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。

2NF

  • 若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。

    将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。

3NF

  • 如果关系R满足第二范式,且每一个非主属性既不部分函数依赖于主键,也不传递函数依赖于主键,则称R满足第三范式。

    采用投影分解法将一个2NF关系分解为多个3NF的关系后,仍然不能完全消除关系模式中的各种异常情况和数据冗余。

BCNF

  • 如果一个关系模式R中的所有属性包括主属性和非主属性都不传递依赖于任意候选关键字,则称R满足BCNF范式,记作R∈BCNF。即每一个决定属性因素都包含码。

    若R∈BCNF:所有非主属性对每一个码都是完全函数依赖,所有的主属性对每一个不包含它的码,也是完全函数依赖,没有任何属性完全函数依赖于非码的任何一组属性。

    3NF和BCNF是在函数依赖的条件下对模式分解所能达到的分离程度的测试 。一个模式中的关系模式若都属于BCNF,那么在函数依赖范畴内他已经实现了彻底的分离,已经消除了插入和传输的异常。

多值依赖

  • 设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为空集,则称X→→Y为平凡的多值依赖,否则称X→→Y为非平凡的多值依赖。

  • 多值依赖具有对称性:若X→→Y,则X→→Z,其中Z=U-X-Y。

    多值依赖具有传递性:若X→→Y,Y→→Z, 则X→→Z –Y。

    函数依赖是多值依赖的特殊情况:若X→Y,则X→→Y。

    若X→→Y,X→→Z,则X→→YZ。

    若X→→Y,X→→Z,则X→→Y∩Z。

    若X→→Y,X→→Z,则X→→Y-Z,X→→Z -Y。

  • 多值依赖的有效性与属性集的范围有关。若X→→Y在U上成立,则在W(XY属于W属于U)上一定成立,反之不然。一般的,在R(U)上若有X→→Y在W上成立,则称X→→Y为R(U)的嵌入型多值依赖。这是因为多值依赖还涉及剩余属性组。

    函数依赖的有效性仅取决于X、Y这两个属性集的值,只要X、Y满足函数依赖,则函数依赖在任何属性集上都成立。

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

4NF

  • 关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y不属于X),X都含有码,则R∈4NF。不允许有非平凡且非函数依赖的多值依赖,允许的非平凡多值依赖是函数依赖。
  • 若考虑多值依赖,属于4NF的关系模式规范化程度最高。

规范化

  • 基本思想:逐步消除数据依赖中不合适的部分。
    目的:尽量消除插入、删除一场,修改复杂,数据冗余
    实质:概念的单一化
  • 关系模式规范化的基本步骤
    1NF
    ↓ 消除非主属性对码的部分函数依赖
    2NF
    ↓ 消除非主属性对码的传递函数依赖
    3NF
    ↓ 消除主属性对码的部分和传递函数依赖
    BCNF
    ↓ 消除非平凡且非函数依赖的多值依赖
    4NF
  • 不能说规范化程度越高的关系模式就越好。在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式,规范化步骤可以在其中任何一步终止。

数据依赖的公理系统

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

  • Armstrong公理系统:对于关系模式R <U,F >来说有以下的推理规则:

    自反律(Reflexivity):若Y包含于X包含于U,则X →Y为F所蕴含。
    设Y包含于X包含于U,对R <U,F> 的任一关系r中的任意两个元组t,s:
    若t[X]=s[X],由于Y包含于X,有t[y]=s[y],
    所以X→Y成立,自反律得证

    增广律(Augmentation):若X→Y为F所蕴含,且Z包含于U,则XZ→YZ为F所蕴含。
    设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所蕴含,增广律得证。

    传递律(Transitivity):若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。
    设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所蕴含,得证。

    合并规则:由X→Y,X→Z,有X→YZ。(A2, A3)

    伪传递规则:由X→Y,WY→Z,有XW→Z。(A2, A3)

    分解规则:由X→Y及 Z属于Y,有X→Z。(A1, A3)

  • X→A1 A2…Ak成立的充分必要条件是X→Ai成立(i=l,2,…,k)。

  • 在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作 F的闭包,记为F+。闭包F+计算是一个NP完全问题。

  • 人们把自反律、传递率和增广率称为Armstrong公理系统。Armstrong公理系统是有效的(由F出发根据Armstrong公理推导出来的每一个函数依赖一定在F+中)、完备的(F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来)。

  • 设F为属性集U上的一组函数依赖,X、Y包含于U, XF+ ={ A|X→A能由F根据Armstrong公理导出}, XF+称为属性集X关于函数依赖集F的闭包

  • 设F为属性集U上的一组函数依赖,X,Y包含于U,X→Y能由F根据Armstrong公理导出的充分必要条件是Y包含于XF+

    将判定X→Y是否能由F根据Armstrong公理导出的问题,转化为求出XF+ 、判定Y是否为XF+的子集的问题。

  • 求属性集X(X包含于U)关于U上的函数依赖集F的闭包XF+

    输入:X,F 输出:XF+

    步骤:
    令X(0)=X,i=0
    求B,这里B = { A |(V)(  W)(V→WF∧V  X(i)∧A W)};

    X(i+1)=B∪X(i)
    判断X(i+1)= X (i)吗?
    若相等或X(i)=U , 则X(i)就是XF+ , 算法终止。
    若否,则 i=i+l,继续求B。

  • Armstrong公理系统是有效的、完备的
    证明:
    有效性可由上述算法证明。

    完备性:只需证明逆否命题: 若函数依赖X→Y不能由F从Armstrong公理导出,那么它必然不为F所蕴含。

    若V→W成立,且V包含于XF+,则W包含于XF+
    证:因为V包含于XF+,所以有X→V成立,于是X→W成立。

    构造一张二维表r,它由元组XF+和元组U-XF+构成,可以证明r必是R(U,F)的一个关系,即XF+中的全部函数依赖在 r上成立。若r不是R(U,F)的关系,则必由于F中有某一个函数依赖V→W在r上不成立所致。由r的构成可知,V必定是XF+的子集,而W不是XF+的子集,由第一步可知矛盾。所以r必定是R(U,F)上的一个关系。

    若X→Y 不能由F从Armstrong公理导出,则Y 不是XF+的子集,因此,必有Y的子集Y’满足Y’包含于U-XF+,则X→Y在r中不成立,即X→Y必不为R(U,F)蕴含。

    如果G+=F+,就说函数依赖集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价。

  • G+=F+的充分必要条件是G+包含于F+,和G+包含于F+
    必要性显然,只证充分性。
    在这里插入图片描述

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

    F中任一函数依赖的右部仅含有一个属性。
    F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。
    F中不存在这样的函数依赖X→A, X有真子集Z使得F-{X→A}∪{Z→A}与F等价。

  • 每一个函数依赖集F均等价于一个极小函数依赖集Fm。此Fm称为F的最小依赖集。
    证明: 构造性证明,找出F的一个最小依赖集。
    逐一检查F中各函数依赖FDi:X→Y,若Y=A1A2 …Ak,k > 2,
    则用 { X→Aj |j=1,2,…, k} 来取代X→Y。

    逐一检查F中各函数依赖FDi:X→A,令G=F-{X→A},若A属于XG+, 则从F中去掉此函数依赖(因为F与G等价的充要条件是A属于XG+)。

    逐一取出F中各函数依赖FDi:X→A,设X=B1B2…Bm,逐一考查Bi (i=1,2,…,m),若A属于(X-Bi )F+ ,则以X-Bi 取代X(因为F与F-{X→A}∪{Z→A}等价的充要条件是A属于ZF+,其中Z=X-Bi)。

    最小依赖集不一定是唯一的。

模式的分解

  • 关系模式R<U,F>的一个分解:ρ={ R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>}。U= ∪Ui,且不存在Ui包含于Uj,1≤i,j≤n,Fi 为 F在 Ui 上的投影。
  • 函数依赖集合{X→Y | X→Y属于F+∧XY包含于Ui} 的一个覆盖 Fi 叫作 F 在属性 Ui 上的投影。

模式的分解的三个定义

  • 等价的定义:
    分解具有无损连接性

    分解要保持函数依赖

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

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

模式分解的算法

把低一级的关系模式分解为若干个高一级的关系模式的方法不是唯一的
只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义

定义6.17
例:S-L(Sno, Sdept, Sloc)
F={ Sno→Sdept,Sdept→Sloc,Sno→Sloc}
S-L∈2NF

分解方法可以有多种:

  1. S-L分解为三个关系模式:SN(Sno)
    SD(Sdept)
    SO(Sloc)
  2. SL分解为下面二个关系模式: NL(Sno, Sloc)
    DL(Sdept, Sloc)
  3. 将SL分解为下面二个关系模式: ND(Sno, Sdept)
    NL(Sno, Sloc)
    关系模式R<U,F>的一个分解 ρ={ R1<U1,F1>,R2<U2,F2>, …,Rn<Un,Fn>}
    若R与R1、R2、…、Rn自然连接的结果相等,则称关系模式R的这个分解ρ具有无损连接性(Lossless join)
    具有无损连接性的分解保证不丢失信息
    无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题
    第3种分解方法具有无损连接性

问题:这种分解方法没有保持原关系中的函数依赖
SL中的函数依赖Sdept→Sloc没有投影到关系模式ND、NL上

设关系模式R<U,F>被分解为若干个关系模式
R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>
(其中U=U1∪U2∪…∪Un,且不存在Ui  Uj,Fi为F在Ui上的投影),若F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴含,则称关系模式R的这个分解是保持函数依赖的(Preserve dependency)
4. 将SL分解为下面二个关系模式:
ND(Sno, Sdept)
DL(Sdept, Sloc)
这种分解方法就保持了函数依赖
如果一个分解具有无损连接性,则它能够保证不丢失信息
如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况
分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖;同样,保持函数依赖的分解也不一定具有无损连接性。
第1种分解方法既不具有无损连接性,也未保持函数依赖,
它不是原关系模式的一个等价分解
第2种分解方法保持了函数依赖,但不具有无损连接性
第3种分解方法具有无损连接性,但未持函数依赖
第4种分解方法既具有无损连接性,又保持了函数依赖
算法6.2 判别一个分解的无损连接性
算法6.3(合成法)转换为3NF的保持函数依赖的分解。
算法6.4 转换为3NF既有无损连接性又保持函数依赖的分解
算法6.5 (分解法)转换为BCNF的无损连接分解
算法6.6 达到4NF的具有无损连接性的分解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值