例2. 关系模式R<U,F>,其中:U={A,B,C,D,E},F={A→C,C→D,B→C,DE→C,CE→A},将其分解成BCNF并保持无损连接;
  • 第一步:求取码

首先查找L属性,即只在依赖函数左端出现过的属性,结果为B,E。

然后计算B在F上的闭包为BCD,E在F上的闭包为E,显然都不等于U,但是BE的闭包等于U

因此BE为R的唯一候选码

候选码求法

  • 第二部:逐步分解
  • 第一次分解

    A->C违背BCNF的定义,单独拿出构成关系模式R11(A,C),F11(A->C),key11=A。

    同样,函数依赖右端中不必再出现C,可以通过传递依赖尽可能消除C,那么得到

    B->D,DE->D,BE->A,A->D,AE->A,把能换的全换了保险。然后就将R分解成了

    R12(A,B,D,E),F12(B->D,DE->D,BE->A,A->D,AE->A),key12=BE

    然后计算F11与F12求最小依赖集

    F11不变,本身就是,F12经过单属性化,无冗余化,既约化后变为

    R12(A,B,D,E),F12(B->D,BE->A,A->D),key12=BE

    最小依赖集求法

    综上R分解成为:R11(AC),F11(A->C),key11=A,R12(A,B,D,E),F12(B->D,BE->A,A->D),key12=BE

  • 第二次分解

    鉴于R11已经为BCNF,故可以不再分解。但R12显然不是,需要继续分解。

    显然R12中的A->D不满足BCNF定义,单独拿出,R21(A,D),F21(A->D),key=A,

    函数依赖右端中不必再出现D,可以通过传递依赖尽可能消除D,那么得到

    R22(A,B,D,E),F12(B->D,BE->A),key22=BE

    此时F21与F22均是最小依赖集不需要变

    综上R12分解成为:R21(A,D),F21(A->D),key=A,R22(A,B,D,E),F12(B->D,BE->A),key22=BE

  • 第三次分解

    鉴于R21已经为BCNF,故可以不再分解。但R22显然不是,需要继续分解。

    显然B->D不满足BCNF定义直接拿出

    R31(B,D),F31(B->D),key=B,那么剩余的BE->A也可以构成BCNF

    R32(ABE),F32(BE->A),key=BE

    显然R31与R32都满足BCNF,分解完毕

    综上R22分解成为:R31(B,D),F31(B->D),key=B,R32(ABE),F32(BE->A),key=BE

  • 综上所述R分解为下表

    R11(AC),F11(A->C),key11=A
    R21(A,D),F21(A->D),key=A
    R31(B,D),F31(B->D),key=B
    R32(ABE),F32(BE->A),key=BE
  • 第三步:验证上述BCNF分解就是无损连接
  • 做表

    A B C D E
    AC a1 b12 a3 b14 b15
    AD a1 b22 b23 a4 b25
    BD b31 a2 b33 a4 b35
    ABE a1 a2 b43 b44 a5
  • 观察函数依赖F

  • A->C,改表
A B C D E
AC a1 a2 a3 b14 b15
AD a1 a2 b23 a4 b25
BD b31 a2 b33 a4 b35
ABE a1 a2 b43 b44 a5
  • B->C,改表
A B C D E
AC a1 a2 a3 b14 b15
AD a1 a2 a3 a4 b25
BD b31 a2 a3 a4 b35
ABE a1 a2 a3 b44 a5
  • C->D,改表
A B C D E
AC a1 a2 a3 a4 b15
AD a1 a2 a3 a4 b25
BD b31 a2 a3 a4 b35
ABE a1 a2 a3 a4 a5

此时,第五行全部为a,是无损连接,证明完毕

BCNF无损分解例题相关推荐

  1. 范式BCNF,3NF的判断方法

    步骤:1.求出关系模型R的所有候选码 2.根据BCNF和3NF的定义进行判断. 例题1 Consider the following relational schema R(A,B,C). suppo ...

  2. 【数据库】期末复习:SQL语句、关系代数的运算、范式的定义和判断、求最小函数依赖集、ER图转关系模式

    文章目录 SQL语句 查询select 其他 视图 关系代数的运算 并.差.笛卡尔积.投影和选择 连接 自然连接 笛卡尔积 详细版(如果完全不了解就看这里) 范式的定义和判断 如何求候选码 一些例题 ...

  3. 数据库原理:了解范式(1NF、2NF、3NF、BCNF),做例题快速弄懂

    如果你基本定义都理解了,建议直接跳到例题部分. 本篇讲的是范式及例题,如果函数依赖还不知道,请移步至另外一篇讲函数依赖的博客: 数据库原理:通过例题弄懂函数依赖,并附带题目_Allow-er的博客-C ...

  4. 1-3NF,BCNF,最小依赖集,模式分解,判断是否为无损分解

    1NF----表中每一列都不能再分解了(stomic) 2NF----满足1NF,并且非主键属性不能不分依赖于主键 e.g A B C D E  其中A和B为主键,如果A能单独决定C的属性,那么就不符 ...

  5. 3NF分解与BCNF分解

    相关系列: ER图转为关系模式 无损分解和保持依赖 3NF分解与BCNF分解 正则覆盖与候选码 如何设计ER图(弱实体集) 如何设计ER图(映射基数) 1. 3NF分解 先求出正则覆盖Fc 对于Fc里 ...

  6. 数据库 之 ER模型、函数依赖、无损分解、关系代数

    ER模型的基本概念,以及如何绘制E-R图: 实体:客观存在的可以相互区别的事物,也可以是抽象的事件.如:一场足球赛等. 实体在ER图中用矩形表示 属性:实体有很多特性,每一个特性成为属性.每个属性的值 ...

  7. 关系模式分解为3nf 和bcnf详解

    总结 分解为3nf要先求最小函数依赖集,然后找到函数依赖中没有涉及的属性,单独分分解,之后从r中去掉,之后就是对函数依赖集中函数依赖左边相同属性进行合并,若果合并结果有包含关系,去掉小的,这是保持函数 ...

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

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

  9. bcnf分解算法_BCNF题解

    设有关系模式 R ( A , B , C , D , E , G )上的函数依赖集为: F={ A → B , B → C , AD → G , D → E } .求解: 31 .求关系模式 R 的所 ...

  10. bcnf分解算法_数据库规范化:模式分解算法(3NF,BCNF分解,附带口诀,通俗易懂)...

    前言 在理解模式分解的时候,发现模式分解算法比较难懂.于是想出了一个通俗易懂的解法,并且配有速记口诀!让模式分解再也难不倒你. 知识储备 首先在了解模式分解之前,你需要对数据库规范化有一定的了解.这里 ...

最新文章

  1. kotlin + springboot 整合redis,Redis工具类编写及单元测试
  2. 六一:如何在Datawhale开源学习小程序中管
  3. 长沙,企业上市“再加速”
  4. 如此智能的Windows Embedded Standard 7
  5. Python学习——import语句导入模块顺序
  6. SAP Analytics Cloud连接Cloud for Customer的一些后台调试
  7. selenium——元素的定位
  8. c++字符串加密_【网络爬虫教学】快速定位拼多多加密算法入口(四)
  9. php处理excel类,30 个 PHP 的 Excel 处理类
  10. 网易云信 java demo_网易云信Web IM搭建(Demo)
  11. 数据库事务及四大特性
  12. 使用VMware10虚拟机安装Linux系统(能力工场)
  13. Flutter基础Widget之按钮(RaisedButton、FlatButton、OutlineButton,IconButton)
  14. 小程序商城和社区团购小程序,商家应该选哪个?
  15. 想知道添加水印的软件哪个好?这2款软件简单又实用
  16. 一起教育科技2020净收1.92亿元 官网却启用杂米域名17zyw.cn
  17. java可视化图表_8个华丽而实用的Java图表应用
  18. 腾讯云修改邮箱登录方式
  19. pycharm批量注释
  20. 私钥和公钥?什么是数字签名?

热门文章

  1. win10无线断开无法连接服务器,win10wifi自动断开什么原因_win10wifi自动断开且无法连接如何解决...
  2. Outlook的服务器设置中POP3协议,在outlook的服务器设置中POP3协议是指
  3. MySQL8.0软件安装失败常见问题
  4. R语言manova函数多元方差分析(MANOVA)、单因素多元方差分析的两个假设是多元正态性和方差-协方差矩阵的齐性、QQ图评估多元正态性、mvoutlier包中的aq.plot函数检验多变量异常值
  5. 家庭宽带搭建个人服务器
  6. 使用 Kitten 开发一款趣味成语接龙游戏
  7. 企信下载的文件在哪里_Foobar2000(无损音乐播放器下载)(软件篇)
  8. Python告诉你咪蒙10w+文章标题的秘密
  9. 高数_第6章无穷级数__正项级数的性质_比值_比较_根值_极限审敛法
  10. Python 爬虫:专利信息