一个优秀的关系模式的分解应当满足三个条件:消除异常(冗余、更新异常、删除异常),信息的可恢复以及依赖的保持。

  对关系数 据库模式进行BCNF分解之后可以消除FD带来的冗余,并满足信息的可恢复(通过自然连接可以达到无损连接),但可能会破会关系的函数依赖的保持,原因是 会将满足FD的属性集合分解到不同的关系模式中,使得FD最小集的减少。在BCNF的基础上引入3NF,放松对BCNF条件的限制,可以得到满足无损连 接、依赖保持,但并不保证能消除异常的关系模式,原因是降低了对函数依赖的限制,条件变为或非平凡函数依赖的左边是超键或其右边仅为主属性构成。

  BCNF可以消除与FD有关的冗余,但仍然会存在MVD导致的冗余,MVD的概念相比FD稍微难以理解,MVD是指在关系R中,当给定某个属性集合的值 时,存在另外一组属性集合,该组属性集合的值与关系中所有其他属性的值独立。为便于理解,将一个关系的属性分为三个属性组A、B、C,当给定属性A的值 时,B和C的属性组上的取值独立,意思是说B和C的取值可以随意搭配出现在关系中,B的取值不会影响C的取值。

  关系模式中MVD的推导相比FD要难一些,对于MVD的推导可以使用chase:从给定的FD和MVD集中推导出需验证的MVD X->->Y, 则初始图例要包含两个在X上一致但在所有其他属性上均不一致的行。使用给定的FD来等同字母,使用给定的MVD来交换已有的两行中某些属性的值,以便在图 例中加入新的行。如果在图例中发现了这样的一个原始元组,它的Y分量被另一个原始元组所替代,那么就推导出了目标MVD。

  MVD推导的具体做法:关系R上存在FD和MVD集,推导或验证MVD:X->->Y。将关系分为三个属性集X、Y和Z,开始时,图例中存在两个元组t和u,两个元组在X属 性组上取值相同,在Y和Z属性组上取值不一致,通过FD等同属性取值和MVD交换属性取值,得到一个元组在Y取值上和t相同以及在Z取值上和Z相等即可。举例:假设关系(A,B,C,D)上给定FD:A->B和MVD:B->->C,证明A->->C在R上成立。下面三个表格对推导过程进行叙述

A B C D
a b1 c d1
a b c1 d

图例中有两个原始元组,其取值满足上A上取值相同,C和BD上取值不一致,运用FD:A->B得到下面图例

A B C D
a b c d1
a b c1 d

在上面的图例中,因为在B列上一致,使用MVD:B->->C,交换C、D两列得到下面一个图例

A B C D
a b c d1
a b c1 d
a b c d
a b c1 d1

从上面图例可以看出,第三个元组其在C上取值和初始图例中的第一个元组相同,在BD上取值和初始图例的第二个元组相同,可以得出MVD:A->->C成立。

  根据范式对关系进行分解的算法见《数据库系统基础教程》原书第三版中的52、59、64页,算法实施起来比较简单,但其中关于关系分解中的基础概念需要深刻理解。

  在对关系数据库进行关系分解时,主要使用上面叙述的BCNF、3NF、4NF,这三种分解的性质见下表中

范式及其分解的性质
性质 3NF BCNF 4NF
消除FD冗余 F T T
消除MVD冗余 F F T
保持FD T F F
保持MVD F F F

关系数据库的模式分解:FD和BCNF、3NF以及MVD和4NF相关推荐

  1. 模式分解(2NF、3NF)

    求闭包 求属性集()关于 上的函数依赖集的闭包 . 1.令,i=0. 2.对于F中所有左边为或其子集的函数依赖,把其右边的属性加入,得到. 3.判断是否等于U,若相等,则.判断是否等于,若相等,则.否 ...

  2. 无损连接和模式分解题型

    一.判别一个分解的无损连接性 方法一:无损连接定理 关系模式R(U,F)的一个分解ρ={R1<U1,F1>,R2<U2,F2>}具有无损连接的充分必要条件是: U1∩U2→U1 ...

  3. 模式分解详解,分解为3NF与分解为BCNF

    3NF:不存在非主属性对码的传递函数依赖或部分函数依赖. 如AB-C,A->C  码为(A,B),A,B是主属性,C是非主属性,C部分函数依赖于码,即不满足3NF BCNF:每个决定因素都包含码 ...

  4. 关系数据库范式及1NF、2NF、3NF和BCNF

    关系规范化技术涉及一系列规则,实施这些规则,可以确保关系数据库被规范到相应程度.规范化范式(Normal Forma,NF)是关系表符合特定规范化程度的模式.规范化范式的种类与函数依赖有着直接的联系. ...

  5. 数据库原理-模式分解算法详解(3NF BCNF)

    模式分解算法 模式分解的要求 无损连接 保持函数依赖 模式分解的算法 3NF的保持依赖性分解算法 3NF的无损连接与依赖保持分解 BCNF的无损连接分解 模式分解的要求 对存在数据冗余,插入异常与删除 ...

  6. 【数据库系统设计】关系数据理论(函数依赖、码、范式、模式分解)

    关系数据理论 6.1 为什么要学习关系数据理论 什么是好的数据库逻辑设计 什么是数据依赖 关系模式的简化表示 6.2 规范化 - 关系的规范化理论 6.2.1 函数依赖 1.函数依赖 2.平凡函数依赖 ...

  7. 数据库概论之模式分解理论(理解简单明了)

    模式分解理论 模式分解: 模式分解的概念: 模式分解的特性: 数据内容的等价性: 数据约束的等价性 模式分解要考虑的问题: 模式分解的分类: 无损连接分解: 无损连接分解概念: 无损连接分解的检验算法 ...

  8. 数据库基础理论二——模式分解为主要导向

    前言: 正确合情的理论是指导实践的重要法宝.在社会实践中,我们往往会感受到社会生产与理论发展有些许的不一致性,当然,理论与实践之间往往具有一道鸿沟.但是,当我们从社会经济学的角度去审视技术理论与泛化的 ...

  9. 函数依赖和关系模式分解

    文章目录 一,第一范式 二,关系数据库设计中易犯的错误 2.1 数据冗余 2.2 插入.删除.修改异常 三,模式分解(I) 四,函数依赖(FD) 4.1 什么是函数依赖 4.2 函数依赖的使用 4.3 ...

最新文章

  1. Delphi 2009 新增的 Class Explorer
  2. WORD2010自动编号后,目录那里编号和文字中间有很大的空格,怎么
  3. HihoCoder - 1175 拓扑排序·二
  4. 既生瑜何生亮 access_token VS refresh_token
  5. 前端学习(2248)git是怎么运作的
  6. 用字典给Model赋值
  7. MacBook写代码真香!包邮送一台!
  8. Java+selenium之WebDriver的抛出异常分析(七)
  9. ❤️Spring的声明式事务
  10. vs2013 也能重构(refactor )变量名了
  11. a算法和a*算法的区别_机器人路径规划算法,全局路径规划与局部路径规划究竟有哪些区别?...
  12. 戴尔optiplex3020主板接线_戴尔XPS 13 2020上手,12999元的高端精致怪,让苹果也很有压力!...
  13. [预打印]使用vbs给PPT(包括公式)去背景
  14. stm32f401RET6 时钟配置
  15. 对 ArabicRSS APK 应用木马样本的分析
  16. 金字塔型自动化的利弊
  17. 潜规则------中国历史中的真实游戏 吴思
  18. 2000-2009十年十大创业新模式
  19. 20th Century Fox — 利用机器学习来预测电影观众
  20. Centos7安装MySQL5.7--精简详细版

热门文章

  1. Java版色情图像过滤入门示例及源码-0.1.0 (模拟绿坝过滤机制)
  2. 【Joy of Cryptography 读书笔记】Chapter 2 可证明安全(Provable Security)基础
  3. 微软sql服务器如何安装,Microsoft SQL Server 2012 数据库安装图解教程
  4. JS实现动态分区分配中的首次适应算法和最佳适应算法
  5. 有关primary key 和 foreign key
  6. 先进先出置换算法(Java实现)
  7. matlab apm,tvapm 水声通信面临的最困难的问题是多途干扰,其中自 引起接收信号的幅度衰落,互 matlab 238万源代码下载- www.pudn.com...
  8. (转)Oracle JDBC Memory Management中的客户端缓存
  9. android system webview diable,微软chromium版Edge浏览器新功能:暗黑模式、WebView2、阅读模式...
  10. 如何在ubuntu中安装无线网卡驱动(迅捷FW150UH)