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


1. 3NF分解

  1. 先求出正则覆盖Fc
  2. 对于Fc里面的所有函数依赖a->b,均转化为Ri=ab
  3. 对于所有的模式Ri
    • 如果包含候选码,进行第4
    • 如果都不包含候选码, 将任意一个候选码添加到模式Ri里面
  4. 如果一个模式被另一个模式包含,则去掉此被包含的模式。

例子:U={A,B,C,D,E,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D}

  1. 正则覆盖为{B->DG,CE->B,C->AD}
  2. R1=BDG,R2=CEB,R3=CAD
  3. CE是候选码,R2包含CE
  4. R1,R2,R3没有包含关系
  5. 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:

  1. 求出候选码
  2. 观察函数依赖集,如果左边不是超码(候选码),则不满足条件
  3. 用不满足条件的函数依赖(A->B)进行分解,这样分解之后就满足了
    • R1=AB(这样就满足了)
    • R2=(R-R1)∪A
    • F2={…}去掉B的所有函数依赖,尽可能写全
  4. 对F2进行步骤1的计算。
  5. 重复直到所有的满足条件


例: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分解相关推荐

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

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

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

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

  3. 三阶矩阵的lu分解详细步骤_数学 - 线性代数导论 - #4 矩阵分解之LU分解的意义、步骤和成立条件...

    线性代数导论 - #4 矩阵分解之LU分解的意义.步骤和成立条件 目前我们用于解线性方程组的方法依然是Gauss消元法.在Gauss消元法中,我们将右侧向量b与A写在一起作为一个增广矩阵进行同步的操作 ...

  4. 机器学习(十一)——机器学习中的矩阵方法(1)LU分解、QR分解

    http://antkillerfarm.github.io/ 因子分析的EM估计(续) 去掉和各参数无关的部分后,可得: ∑i=1mE[logp(x(i)|z(i);μ,Λ,Ψ)]=∑i=1mE[1 ...

  5. java质因数的分解_Java实现分解任意输入数的质因数算法示例

    本文实例讲述了Java实现分解任意输入数的质因数算法.分享给大家供大家参考,具体如下: 分解任意输入数的质因数: 质因数概念:任何一个合数都可以写成几个质数相乘的形式.其中每个质数都是这个合数的因数, ...

  6. 关于软件开发项目任务的横向分解和纵向分解

    转 在一个软件研发项目的管理实践中,项目任务的分解一直是一个很重要的工作,但是不同的项目经理对这个问题的操作方式又常常会千差万别,其中一个很常见的分歧在于,是横向分解还是纵向分解?本文试图对此进行一个 ...

  7. 几种矩阵分解算法: LU分解,Cholesky分解,QR分解,SVD分解,Jordan分解

    目录 1.LU分解 2. LDLT分解法 3. Cholesky分解的形式 4. QR分解 5.SVD分解 5.1 SVD与广义逆矩阵 6. Jordan 分解 参考文章: ---------我只是搬 ...

  8. QR分解、RQ分解与SVD

    QR分解.RQ分解与SVD分解整理 1.QR分解 QR分解将一个m x m的矩阵A分解为一个正交矩阵Q与一个上三角阵R之积.常常利用Householder变换来进行QR分解的计算. Household ...

  9. 代码: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= ...

最新文章

  1. Linux下防御arp***的方法
  2. mysql的dml全,MySQL数据管理----DML语言(全记住)(示例代码)
  3. java正则表达式 ppt_Java正则表达式演示
  4. python基础--局部变量与全局变量
  5. YYDS!对比学习还能这么用?
  6. JS和AIR(FLEX)的互相调用详解
  7. 解决windows update失败,正在还原的问题
  8. 我的each方法——JavaScript Array
  9. 百度下半年惩罚网站的低质量,坏消息到来硕士
  10. 05-信息管理系统--主页面显示当前用户实现退出功能实现
  11. Java实现带发音的简易电子词典
  12. 需要管理员权限才能删除此文件夹,解决办法
  13. SQL Sever奇葩问题踩坑记
  14. java查找文件路径_如何查找java路径?
  15. 被众人膜拜的欧拉恒等式是个什么东东?
  16. python里randint是什么意思_Python中random.randint方法(精选)
  17. java 电商 插件 开发_JAVA项目实战开发电商项目案例(六与七)商品分类与商品模块管理开发...
  18. 1、登录——邮件发送激活链接
  19. 咬文嚼字 | 信息化和数字化的本质区别是什么?
  20. 输出linux内核版本信息,查看linux内核和版本信息

热门文章

  1. 学习笔记第三十四节课
  2. spring cloud的网关服务Zuul
  3. 《Typecript 入门教程》 2、访问控制符:public、private、protected、readonly
  4. Oracle中的系统权限管理
  5. as [Frame]元标签
  6. vs2010 静态使用 opencv 2.46 库
  7. linux sed给空文件首行插入_Linux系统中sed命令在文件某行前后添加内容的用法
  8. java删除jtable一行的值_JTable中删除一行数据
  9. Python知识:实用程序模块基础——OS模块
  10. 大数据之Python入门语法基础