分解为BCNF范式的方法(详细讲解)

简介: 分解为BCNF范式的方法(详细讲解)

直接在例题中感悟:


R={A,B,C,D,E,F,G},F={A->B,A->C,C->D,C->E,E->FG},将R分解为BCNF


http://t.csdn.cn/4D939有详细解最小依赖集的步骤,建议先看这个,接下来解题:


分解的步骤可以概括为:

1.求R的闭包  

2.根据闭包求函数依赖  

3.根据函数依赖求L,R,LR,N,求出超键  

4.若左边的字母不是超键,继续分解(回到第1步)

第一轮分解:


L:A


R:B,D,F,G


LR:CE


N为空集


A一定为候选键,x0=A,x1=ABCDEFG=U


所以A为唯一候选键


R中候选键为A,又因为F中C->D,C不是超键,所以要将R分解为


R1(CD),R2(ABCEFG)

第二轮分解:


对于R2(ABCDEFG)以下用“A+”表示闭包:


A+=U


C+=CDEFG


E+=EFG


所以R2中,F2={C->EFG,E->FG,A->BCEFG}


R中候选键:L:A,R=FGB,LR=CE,N为空


所以R2中的候选键为A,C->EFG中C不是超键,所以将R2分解为


R3(CEFG)R4(ABC)

第三轮分解:


对于R4的函数依赖:A->BC


R3(CEFG)的闭包


C+=CEFG


E+=EFG


所以F3中{C->EFG,E->FG}


因为R3中超键是C,E->FG不是超键,所以将R3分解为


R5=EFG,R6=CE


R5的函数依赖  E->FG   R6的函数依赖C->E,都是BCNF

综上R分解为p={CD,ABC,EFG,CE}


对应函数依赖集为{E->FG,C->E,A->BC,C->D}


目录
相关文章
|
6月前
分解出每一位数
分解出每一位数。
35 0
|
3月前
|
uml
建模底层逻辑问题之在建模时,对现实进行抽象该如何操作
建模底层逻辑问题之在建模时,对现实进行抽象该如何操作
|
6月前
|
达摩院 算法 决策智能
解决背包问题:组合优化的应用与建模方法
组合优化是数学优化的一支,专注于从有限集合中选取元素的最优化问题。它涉及将一组对象组合在一起,以满足特定条件并优化某个目标函数,即在所有可能的组合中找到最有利的一个。 本文将以一个简化的背包问题为例,来讲解采用数学规划的方法来解决背包这个组合优化问题。
|
数据库 开发工具
向量学习过程思想总结概括
向量学习过程思想总结概括
|
6月前
|
敏捷开发 算法 数据安全/隐私保护
需求分解
需求分解
149 0
【逻辑思维训练 一】金字塔思维概述
【逻辑思维训练 一】金字塔思维概述
123 0
|
领域建模 Scala
函数范式与领域模型
函数范式与领域模型
|
存储
秒懂高阶编程之函数绑定及柯理化函数思想
秒懂高阶编程之函数绑定及柯理化函数思想
117 0
秒懂高阶编程之函数绑定及柯理化函数思想
|
机器学习/深度学习 数据可视化
L0范式、L1范式、L2范式解释通俗版
L0范式、L1范式、L2范式解释通俗版
623 0
L0范式、L1范式、L2范式解释通俗版
|
SQL 缓存 JSON
任务分解与函数拆分以及面向未来编程的思想分享
任务分解与函数拆分以及面向未来编程的思想分享
249 0
任务分解与函数拆分以及面向未来编程的思想分享