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


目录
相关文章
|
算法 vr&ar
保持无损连接的BCNF分解算法
保持无损连接的BCNF分解算法
285 1
|
8月前
|
供应链 Go 区块链
基于区块链技术实现供应链的全程可追溯性
基于区块链技术实现供应链的全程可追溯性
386 17
|
移动开发 C#
数据库系统概论期末经典大题讲解(范式提升、求闭包、求主码)
数据库系统概论期末经典大题讲解(范式提升、求闭包、求主码)
472 0
|
算法 Java vr&ar
保持无损连接和函数依赖的3NF合成算法(详细简介)期末必备
保持无损连接和函数依赖的3NF合成算法(详细简介)期末必备
232 0
|
数据库
1NF | 2NF | 3NF的区分以及什么是函数依赖、部分函数依赖、值传递依赖(最详细的讲解1NF、2NF、3NF的关系)
这篇文章详细讲解了数据库范式中的1NF、2NF和3NF,包括它们的定义、区分方法和如何判断部分函数依赖和传递函数依赖,以及如何将数据表规范化到相应的范式。
1NF | 2NF | 3NF的区分以及什么是函数依赖、部分函数依赖、值传递依赖(最详细的讲解1NF、2NF、3NF的关系)
|
Ubuntu Linux Docker
弃用Docker Desktop:在WSL2中玩转Docker之Docker Engine 部署与WSL入门
弃用Docker Desktop:在WSL2中玩转Docker之Docker Engine 部署与WSL入门
18117 4
成功解决:Failed to load resource: net::ERR_FILE_NOT_FOUND
这篇文章提供了解决"Failed to load resource: net::ERR_FILE_NOT_FOUND"错误的步骤,通过修改配置文件中的资源路径设置为相对路径"./"来成功运行打包后的项目。
成功解决:Failed to load resource: net::ERR_FILE_NOT_FOUND
|
数据建模 测试技术 uml
【软件工程】期末复习总结(通俗易懂,学不会来打我)
【软件工程】期末复习总结(通俗易懂,学不会来打我)
|
IDE 开发工具 开发者
PyCharm安装教程(图文结合,超详细,小白安装必看)
PyCharm安装教程(图文结合,超详细,小白安装必看)
|
JavaScript 前端开发 搜索推荐
箱子排序 (Bucket Sort)
箱子排序 (Bucket Sort) 是一种分布式排序算法,它将一个待排序的数组分成多个桶,然后对每个桶中的元素进行排序,最后将所有桶中的元素合并成一个有序的数组。
212 7