分解为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}


目录
相关文章
|
7月前
分解出每一位数
分解出每一位数。
39 0
|
6月前
|
存储 人工智能 算法
详细解读Cholesky分解
详细解读Cholesky分解
109 0
|
数据库 开发工具
向量学习过程思想总结概括
向量学习过程思想总结概括
|
7月前
|
敏捷开发 算法 数据安全/隐私保护
需求分解
需求分解
163 0
|
移动开发 网络虚拟化
【五讲四美】之“讲思想”
发挥一点工匠精神,对一个技术组内小运营需求的精进优化过程。
94 0
【五讲四美】之“讲思想”
|
SQL Cloud Native 数据可视化
模块化思想在实践中的应用
各种编程语言中的函数,数据仓库的标签体系,甚至于数据中台的核心理念,都是把模块化的思想发挥到了极致,避免了我们重复造轮子,消除了数据烟囱,用最小的投入获得了最大的产出。
模块化思想在实践中的应用
|
领域建模 Scala
函数范式与领域模型
函数范式与领域模型
|
前端开发 Oracle 关系型数据库
【代码分层结构设计】思想学习
本文主要摘录个人写代码的心得体会。
166 0
|
存储
秒懂高阶编程之函数绑定及柯理化函数思想
秒懂高阶编程之函数绑定及柯理化函数思想
120 0
|
机器学习/深度学习 数据可视化
L0范式、L1范式、L2范式解释通俗版
L0范式、L1范式、L2范式解释通俗版
645 0
L0范式、L1范式、L2范式解释通俗版