BCNF无损分解例题
例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无损分解例题相关推荐
- 范式BCNF,3NF的判断方法
步骤:1.求出关系模型R的所有候选码 2.根据BCNF和3NF的定义进行判断. 例题1 Consider the following relational schema R(A,B,C). suppo ...
- 【数据库】期末复习:SQL语句、关系代数的运算、范式的定义和判断、求最小函数依赖集、ER图转关系模式
文章目录 SQL语句 查询select 其他 视图 关系代数的运算 并.差.笛卡尔积.投影和选择 连接 自然连接 笛卡尔积 详细版(如果完全不了解就看这里) 范式的定义和判断 如何求候选码 一些例题 ...
- 数据库原理:了解范式(1NF、2NF、3NF、BCNF),做例题快速弄懂
如果你基本定义都理解了,建议直接跳到例题部分. 本篇讲的是范式及例题,如果函数依赖还不知道,请移步至另外一篇讲函数依赖的博客: 数据库原理:通过例题弄懂函数依赖,并附带题目_Allow-er的博客-C ...
- 1-3NF,BCNF,最小依赖集,模式分解,判断是否为无损分解
1NF----表中每一列都不能再分解了(stomic) 2NF----满足1NF,并且非主键属性不能不分依赖于主键 e.g A B C D E 其中A和B为主键,如果A能单独决定C的属性,那么就不符 ...
- 3NF分解与BCNF分解
相关系列: ER图转为关系模式 无损分解和保持依赖 3NF分解与BCNF分解 正则覆盖与候选码 如何设计ER图(弱实体集) 如何设计ER图(映射基数) 1. 3NF分解 先求出正则覆盖Fc 对于Fc里 ...
- 数据库 之 ER模型、函数依赖、无损分解、关系代数
ER模型的基本概念,以及如何绘制E-R图: 实体:客观存在的可以相互区别的事物,也可以是抽象的事件.如:一场足球赛等. 实体在ER图中用矩形表示 属性:实体有很多特性,每一个特性成为属性.每个属性的值 ...
- 关系模式分解为3nf 和bcnf详解
总结 分解为3nf要先求最小函数依赖集,然后找到函数依赖中没有涉及的属性,单独分分解,之后从r中去掉,之后就是对函数依赖集中函数依赖左边相同属性进行合并,若果合并结果有包含关系,去掉小的,这是保持函数 ...
- 模式分解详解,分解为3NF与分解为BCNF
3NF:不存在非主属性对码的传递函数依赖或部分函数依赖. 如AB-C,A->C 码为(A,B),A,B是主属性,C是非主属性,C部分函数依赖于码,即不满足3NF BCNF:每个决定因素都包含码 ...
- bcnf分解算法_BCNF题解
设有关系模式 R ( A , B , C , D , E , G )上的函数依赖集为: F={ A → B , B → C , AD → G , D → E } .求解: 31 .求关系模式 R 的所 ...
- bcnf分解算法_数据库规范化:模式分解算法(3NF,BCNF分解,附带口诀,通俗易懂)...
前言 在理解模式分解的时候,发现模式分解算法比较难懂.于是想出了一个通俗易懂的解法,并且配有速记口诀!让模式分解再也难不倒你. 知识储备 首先在了解模式分解之前,你需要对数据库规范化有一定的了解.这里 ...
最新文章
- kotlin + springboot 整合redis,Redis工具类编写及单元测试
- 六一:如何在Datawhale开源学习小程序中管
- 长沙,企业上市“再加速”
- 如此智能的Windows Embedded Standard 7
- Python学习——import语句导入模块顺序
- SAP Analytics Cloud连接Cloud for Customer的一些后台调试
- selenium——元素的定位
- c++字符串加密_【网络爬虫教学】快速定位拼多多加密算法入口(四)
- php处理excel类,30 个 PHP 的 Excel 处理类
- 网易云信 java demo_网易云信Web IM搭建(Demo)
- 数据库事务及四大特性
- 使用VMware10虚拟机安装Linux系统(能力工场)
- Flutter基础Widget之按钮(RaisedButton、FlatButton、OutlineButton,IconButton)
- 小程序商城和社区团购小程序,商家应该选哪个?
- 想知道添加水印的软件哪个好?这2款软件简单又实用
- 一起教育科技2020净收1.92亿元 官网却启用杂米域名17zyw.cn
- java可视化图表_8个华丽而实用的Java图表应用
- 腾讯云修改邮箱登录方式
- pycharm批量注释
- 私钥和公钥?什么是数字签名?
热门文章
- win10无线断开无法连接服务器,win10wifi自动断开什么原因_win10wifi自动断开且无法连接如何解决...
- Outlook的服务器设置中POP3协议,在outlook的服务器设置中POP3协议是指
- MySQL8.0软件安装失败常见问题
- R语言manova函数多元方差分析(MANOVA)、单因素多元方差分析的两个假设是多元正态性和方差-协方差矩阵的齐性、QQ图评估多元正态性、mvoutlier包中的aq.plot函数检验多变量异常值
- 家庭宽带搭建个人服务器
- 使用 Kitten 开发一款趣味成语接龙游戏
- 企信下载的文件在哪里_Foobar2000(无损音乐播放器下载)(软件篇)
- Python告诉你咪蒙10w+文章标题的秘密
- 高数_第6章无穷级数__正项级数的性质_比值_比较_根值_极限审敛法
- Python 爬虫:专利信息