数据库概论-复习总结(2)

数据库理论

规范化

  • 关系模式可表示为一个五元组 R(U,D,DOM,F)
    • R:关系名
    • D:属性组U中的属性所来自的域
    • DOM:属性到域的映射
    • F:属性组U上的一组数据依赖
  • 数据依赖:一个关系内部属性与属性之间的约束关系。这些约束关系通过属性间值的相等与否体现出的数据间相关联系。
    • 函数依赖(Functional Dependency, FD) :设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y
      • 如果X→Y,但Y 不属于 X,则称X→Y是非平凡的函数依赖
      • 若X→Y,但Y 属于 X, 则称X→Y是平凡的函数依赖
      • 若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)
      • 若X→Y,Y→X,则记作X←→Y。
      • R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’-/->Y, 则称Y对X完全函数依赖,记作X-F->Y。
      • 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X-P->Y。
      • 在R(U)中,如果X→Y,(Y不属于X) ,Y-/→X Y→Z, 则称Z对X传递函数依赖。 (如果Y→X, 即X←→Y,则Z直接依赖于X。)
    • 多值依赖(Multi-Valued Dependency, MVD)
  • 不好的关系模式:
    • 数据冗余
    • 更新异常
    • 插入异常
    • 删除异常
  • 设K为R<U,F>中的属性或属性组合。若K-F->U,则K称为R的侯选码(Candidate Key)。
  • 范式
    • 第一范式 1NF: 关系模式R的所有属性都是不可分的基本数据项(基本要求
    • 第二范式 2NF: R∈1NF,且每个非主属性完全函数依赖于任何一个候选码。(看是否有部分函数依赖于候选码的非主属性)
      • 不符合2NF导致: 插入异常,删除异常,修改复杂,数据冗余
    • 第三范式 3NF:关系模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z(Z不属于Y), 使得X→Y,Y→Z成立,Y-/→X,则称R<U,F> ∈ 3NF。(每一个非主属性既不部分依赖于码也不传递依赖于码。)
    • BCNF: 关系模式R<U,F>∈1NF,若X→Y且Y不属于X时,X必含有码,则R<U,F> ∈BCNF。(每一个决定因素都包含码)
      • 在函数依赖范畴内实现了彻底的分离,消除了插入和删除异常
      • 3NF的不彻底性:可能存在主属性对码的部分函数依赖。
    • 1NF --消除非主属性对码的部分函数依赖–> 2NF
    • 2NF --消除非主属性对码的传递函数依赖–> 3NF
    • 3NF --消除主属性对码的部分和传递函数依赖–> BCNF
  • 如果R∈3NF,且R只有一个候选码, 则 R ∈BCNF <–> R ∈3NF

数据依赖的公理系统

  • 对于满足一组函数依赖F的关系模式R <U,F>,其任何一个关系r,若函数依赖X→Y都成立(即r中任意两元组t,s,若t[X]=s[X],则t[Y]=s[Y]),则称F逻辑蕴含X →Y
  • Armstrong公理系统(Armstrong’s axiom):
    • A1 自反律: 若X->Y为F所,若Y属于X属于U,则X→Y为F所蕴含。
    • A2 增广律(Augmentation):若X→Y为F所蕴含,且Z属于U,则XZ→YZ为F所蕴含。(XZ代表X∪Z)
    • A3 传递律(Transitivity):若X→Y及Y→Z为F所蕴含,则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)
  • 在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作F的闭包,记为F+
  • 设F为属性集U上的一组函数依赖,X属于U, XF+={A|X→A能由F根据Armstrong公理导出},XF+称为属性集X关于函数依赖集F的闭包
    • 用于判断X可决定的最大的一组属性
    • 将判定X→Y是否能由F根据Armstrong公理导出的问题,转化为求出XF+,判定Y是否为XF+的子集的问题
  • 如果G+=F+,就说函数依赖集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价
  • F+ = G+ 的充分必要条件是F属于G+,和G属于F+
  • 最小依赖集:如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖
    • F中任一函数依赖的右部仅含有一个属性
    • F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。(保证不存在多余函数依赖
      • 判断方法: 看在去掉该依赖的函数依赖集G=F-{X->A}上,还能否推出X->A,即看XG+是否包含A。若可以则去掉。
    • F中不存在这样的函数依赖X→A, X有真子集Z使得F-{X→A}∪{Z→A}与F等价。(每个函数依赖的左边没有多余属性
      • 即考察Z集在原来的函数依赖集上是否能决定A(Z是否属于Z+)。若能,则替换掉。
    • 求解方法: 右部属性单一化->去掉多余函数依赖->去掉左部多余属性
  • 求候选码
    • 若属性A只在F中各个函数依赖的左端出现,则A必是码中的属性。
    • 若属性A不在F的各个函数依赖中出现,则A必是码中的属性。
    • 若属性A只在F中各个函数依赖的右端出现,则A必不是码中的属性。
    • 👇缩小范围后再考虑各种组合

模式分解

  • 关系模式R<U,F>的一个分解ρ={ R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>}
    • 分解出来的各个模式并起来不能少属性
    • 不存在Ui是Uj的子集
    • Fi 为 F在 Ui 上的投影
  • 三种模式分解三中准则:
    • 分解具有无损连接性 : R1 … Rn自然连接后与R相等 --> 保证不丢失信息
    • 分解要保持函数依赖 : 若F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴含 --> 减轻或解决各种异常情况
    • 分解既要保持函数依赖,又要具有无损连接性 :
  • 要求分解保持函数依赖,总可以达到3NF,不一定能达到BCNF
  • 要求分解具有无损连接性,一定可达到4NF
  • 要求分解既保持函数依赖,又具有无损连接性,可达到3NF,不一定能到BCNF/8

1.判断一个分解是否具有无损连接性

记每个函数依赖为FDi为Xi->Ali

  • 建立一张k(模式个数)行n(属性个数)列的表。每一列对应一个属性,每一行对应分解中的一个关系模式,若属性Aj属于Ui,则在j列i行交叉处填aj,否则填bi,j
  • 对每一个函数依赖FDi做下列操作:找到Xi所对应的列中具有相同符号的那些行,考察这些行中li列的元素,若其中有ali,则全部改为ali,否则全部改为bm,li, m是这些行的行号最小值。
  • 反复进行上述操作,如果发现某一行成为了 a1,a2,…,an,则分解ρ具有无损连接性;若F中所有函数都不能再修改表中的内容,且没有出现a1,a2,…an,则分解ρ不具有无损连接性

2.合成法:达到为3NF、且保持函数依赖

  • 将F化为最小函数依赖集,令F=Fmin
  • 把在F中不出现的属性从U中去掉,单独构成一个关系模式,剩余属性集合仍然为U。
  • 若有X->A属于F,且XA=U,则R即为所求(U是去掉不出现的属性的U,R还是原来的R包含全部属性)。
  • 分组 合并)否则,对照F中的函数依赖集,将所有函数依赖左端相同的划为一组,相应的右端以及函数依赖均归入该组。若某一组为另一组的子集,则将其去除
  • 这些分组就是分解后的模式组成。

3.到达3NF,即保持无损连接性,又保持函数依赖

  • 使用合成法分解,到达3NF保持函数依赖 p = {R1…Rn}
  • 选取R的码X,t=p ∪ {R*<X, Fx>}
  • 若有某个Ui,X⊆Ui,则将R*从t中去除;若有某个Ui, Ui⊆X,则将Ri从t中去除
  • t即结果

4.BCNF,无损连接

  • 向下分解
  • 初始时 p={R<U,F>}
  • 选择其中不符合BCNF的关系模式Ri,分解为S1,S2:
    • 选取Ri中可以导出的函数依赖:X->A,且X不是Ri的码。 Us1 = XA, Us2 = Ui - A
  • 不断分解直到全部符合BCNF
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

绫零依

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

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

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

打赏作者

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

抵扣说明:

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

余额充值