3NF分解与BCNF分解
相关系列:
ER图转为关系模式
无损分解和保持依赖
3NF分解与BCNF分解
正则覆盖与候选码
如何设计ER图(弱实体集)
如何设计ER图(映射基数)
1. 3NF分解
- 先求出正则覆盖Fc
- 对于Fc里面的所有函数依赖a->b,均转化为Ri=ab
- 对于所有的模式Ri
- 如果包含候选码,进行第4
- 如果都不包含候选码, 将任意一个候选码添加到模式Ri里面
- 如果一个模式被另一个模式包含,则去掉此被包含的模式。
例子:U={A,B,C,D,E,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D}
- 正则覆盖为{B->DG,CE->B,C->AD}
- R1=BDG,R2=CEB,R3=CAD
- CE是候选码,R2包含CE
- R1,R2,R3没有包含关系
- 3NF分解为{BDG},{CEB},{CAD}
例子关系模式r(A,B,C,D,E,F),函数依赖集F: A->BCD,BC->DE,B->D,D->A
1.函数依赖是:A->BC.B->DE,D->A
2.R1=ABC,R2=BDE,R3=DA,不包含候选码(AF,BF,DF)中任意一个,所以任意添加一个R4=AF
3. 3NF分解为{ABC,BDE,DA,AF}
2.BCNF分解
给出R和函数依赖集F:
- 求出候选码
- 观察函数依赖集,如果左边不是超码(候选码),则不满足条件
- 用不满足条件的函数依赖(A->B)进行分解,这样分解之后就满足了
- R1=AB(这样就满足了)
- R2=(R-R1)∪A
- F2={…}去掉B的所有函数依赖,尽可能写全
- 对F2进行步骤1的计算。
- 重复直到所有的满足条件
例:R(A,B,C,D,E)
F={A->C,C->D ,B->C,DE->C,CE->A}
候选码为BE
考虑A->C,
R1=AC,R2=ABDE
F2={A->D,B->D,DE->D,BE->A,DE->A},候选码为BE,不是BCNF分解,所以继续分解。
考虑A->D
R21=AD,R22=ABE
F22={BE->A} 候选码为BE,全部满足
所以为{AC,AD,ABE}
例子:
R候选码为A,CD,BC,E
存在非候选码B,B->D
所以R不是BCNF分解。
考虑B->D,
R1=BD
R2=ABCE
F2={A->BC,BC->E,E->A,BC->A}候选码为A,E,BC
所以BCNF分解为{ABCE,BD}
3NF分解与BCNF分解相关推荐
- 模式分解详解,分解为3NF与分解为BCNF
3NF:不存在非主属性对码的传递函数依赖或部分函数依赖. 如AB-C,A->C 码为(A,B),A,B是主属性,C是非主属性,C部分函数依赖于码,即不满足3NF BCNF:每个决定因素都包含码 ...
- bcnf分解算法_数据库规范化:模式分解算法(3NF,BCNF分解,附带口诀,通俗易懂)...
前言 在理解模式分解的时候,发现模式分解算法比较难懂.于是想出了一个通俗易懂的解法,并且配有速记口诀!让模式分解再也难不倒你. 知识储备 首先在了解模式分解之前,你需要对数据库规范化有一定的了解.这里 ...
- 三阶矩阵的lu分解详细步骤_数学 - 线性代数导论 - #4 矩阵分解之LU分解的意义、步骤和成立条件...
线性代数导论 - #4 矩阵分解之LU分解的意义.步骤和成立条件 目前我们用于解线性方程组的方法依然是Gauss消元法.在Gauss消元法中,我们将右侧向量b与A写在一起作为一个增广矩阵进行同步的操作 ...
- 机器学习(十一)——机器学习中的矩阵方法(1)LU分解、QR分解
http://antkillerfarm.github.io/ 因子分析的EM估计(续) 去掉和各参数无关的部分后,可得: ∑i=1mE[logp(x(i)|z(i);μ,Λ,Ψ)]=∑i=1mE[1 ...
- java质因数的分解_Java实现分解任意输入数的质因数算法示例
本文实例讲述了Java实现分解任意输入数的质因数算法.分享给大家供大家参考,具体如下: 分解任意输入数的质因数: 质因数概念:任何一个合数都可以写成几个质数相乘的形式.其中每个质数都是这个合数的因数, ...
- 关于软件开发项目任务的横向分解和纵向分解
转 在一个软件研发项目的管理实践中,项目任务的分解一直是一个很重要的工作,但是不同的项目经理对这个问题的操作方式又常常会千差万别,其中一个很常见的分歧在于,是横向分解还是纵向分解?本文试图对此进行一个 ...
- 几种矩阵分解算法: LU分解,Cholesky分解,QR分解,SVD分解,Jordan分解
目录 1.LU分解 2. LDLT分解法 3. Cholesky分解的形式 4. QR分解 5.SVD分解 5.1 SVD与广义逆矩阵 6. Jordan 分解 参考文章: ---------我只是搬 ...
- QR分解、RQ分解与SVD
QR分解.RQ分解与SVD分解整理 1.QR分解 QR分解将一个m x m的矩阵A分解为一个正交矩阵Q与一个上三角阵R之积.常常利用Householder变换来进行QR分解的计算. Household ...
- 代码:matlab求QR分解,QL分解,LQ分解和RQ分解。
Matlab的命令里只有QR分解,如何求QL分解和LQ,RQ分解? LQ分解: [Q 1,R 1]= qr (H'); H=(Q 1*R 1)'=R 1' *Q 1'=L*Q; 所以下三角阵L= ...
最新文章
- Linux下防御arp***的方法
- mysql的dml全,MySQL数据管理----DML语言(全记住)(示例代码)
- java正则表达式 ppt_Java正则表达式演示
- python基础--局部变量与全局变量
- YYDS!对比学习还能这么用?
- JS和AIR(FLEX)的互相调用详解
- 解决windows update失败,正在还原的问题
- 我的each方法——JavaScript Array
- 百度下半年惩罚网站的低质量,坏消息到来硕士
- 05-信息管理系统--主页面显示当前用户实现退出功能实现
- Java实现带发音的简易电子词典
- 需要管理员权限才能删除此文件夹,解决办法
- SQL Sever奇葩问题踩坑记
- java查找文件路径_如何查找java路径?
- 被众人膜拜的欧拉恒等式是个什么东东?
- python里randint是什么意思_Python中random.randint方法(精选)
- java 电商 插件 开发_JAVA项目实战开发电商项目案例(六与七)商品分类与商品模块管理开发...
- 1、登录——邮件发送激活链接
- 咬文嚼字 | 信息化和数字化的本质区别是什么?
- 输出linux内核版本信息,查看linux内核和版本信息