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


目录
相关文章
|
C++ 芯片 编译器
STM32F103标准外设库—— 新建工程与库函数(四)
STM32F103标准外设库—— 新建工程与库函数(四)
849 0
STM32F103标准外设库—— 新建工程与库函数(四)
|
安全 数据库
通过E-R理解 主键和外键的关系
实例 现有课程和教师两个实体,课程实体的属性有课程名称、课程编号、课程属性、考试类型;教师实体的属性包括姓名、工号、职称;一门课程可以有多个教师,且每一位教师可以教授多门课程。教师每教授一门课有课序号。
7832 1
通过E-R理解 主键和外键的关系
|
存储 算法 测试技术
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AI测试开发岗需求暴涨:2026秋招,高薪Offer都藏在这3个变化里
2026秋招实录:AI测试开发岗年薪35–45万,传统测试岗跌至16–18万。AI正重构测试——从“验证功能”转向“验证能力”,岗位需求激增340%,面试聚焦Agent兜底、幻觉测试等真场景。懂AI的测试工程师薪资高出30%–50%。基础不牢不行,只懂基础更不行。
|
Web App开发
求最小函数依赖集:求候选键(例题讲解)超详细,易理解
求最小函数依赖集:求候选键(例题讲解)超详细,易理解
877 1
判断是否保持函数依赖的方法
判断是否保持函数依赖的方法
1014 2
|
Java 物联网 程序员
还在纠结抽象类和接口?看这篇就够了!
本文从一位程序员的角度出发,讲述了其小学弟在Java开发面试中遇到的难题——抽象类与接口的区别。文章不仅详细解析了两者的定义、特点及主要差异,还提供了实际开发中的应用场景和面试答题技巧,帮助读者更好地理解和应用这一重要知识点。
2000 12
|
缓存 安全 Java
【JavaEE】——单例模式引起的多线程安全问题:“饿汉/懒汉”模式,及解决思路和方法(面试高频)
单例模式下,“饿汉模式”,“懒汉模式”,单例模式下引起的线程安全问题,解锁思路和解决方法