书中的概念:

关系模式R〈U,F〉∈1NF。若X→Y且Y不包含X时X必含有码,则R〈U,F〉∈BCNF。
也就是说,关系模式R〈U,F〉中,若每一个决定因素都包含码,则R〈U,F〉∈BCNF。

由关系模式的定义可以得到如下结论,若R属于BCNF,则R有:

1.所有非主属性对每一个码都是完全函数依赖。

2.所有的主属性对每一个不包含它的码,也是完全函数依赖。

3.没有任何属性完全函数依赖于非码的任何一组属性。

我的理解:

非码属性不要完全决定码属性,主属性也不要部分/传递依赖码属性,

换句话来说,就是X→Y时,X一定含有码(候选码中的任意一个)

如:

例1:

在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。

每一教师只教一门课。每门课由一名教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称 : (S,J)→T,(S,T)→J,T→J

显然,在STJ中,(S,J),(S,T)都是候选码,S,T,J都是主属性,所以没有非主属性对码的传递依赖和部分依赖,所以属于3NF。

但是T→J的决定因素既不包含候选码(S,J),也不包含候选码(S,T),所以不是BCNF。

也可以用以上三条结论认证。

(1)当(S,J)为码时,主属性T依旧被码属性J依赖(T→J),违背了以上第3条。

(2)当(S,T)为码时,主属性J依旧被码属性T部分函数依赖(T→J),违背了以上第2条。

综上所述,关系模式STJ不是BCNF。

如何将它们改成BCNF呢?

书上有分解法的算法,可以将模式转换为BCNF。书上的很抽象,但是运用起来很简单。简单来说就是把不合法的属性拆出来组成新的模式。

T→J的决定因素既不包含候选码(S,J),也不包含候选码(S,T),所以将其分解,T+J是U的真子集,故分解:S1:{TJ},将被确定的J移除:S2:U-{J}={S,T}

所以原模式被分为ST(S,T)和TJ(T,J)

同样的算法,例2:

那么关系模式 dep(D,M,G,N)中D表示仓库名,M表示管理员,G表示货物名,N表示货物的数量

已知函数依赖集:D → M,M → D,(D,G)→ N

将其分为BC范式:

主属性:D,M,G

候选码:(D,G),(M,G)

D → M,M → D,D和M都不包含候选码(D,G),也不包含候选码(M,G)

此时分解:D → M:S1:{D,M},S2:U-M{D,G,N}

这时,有S1{D → M},候选码D,S2{(D,G)→ N}候选码(D,G),满足BCNF,分解完成。

或者分解:M → D:S1:{M,D},S2:U-D{G,M,N}

这时,有S1{M → D},候选码M,S2{(D,M)→ N}候选码(D,M),满足BCNF,分解完成。

所以要想使模式满足BC范式,本例有两种分解方式。

数据库BC范式(BCNF)判断和分解相关推荐

  1. mysql中bcnf_数据库 - BC范式(BCNF)

    BC范式(BCNF) 关系模式R∈1NF,若X→Y且Y  X时X必包含码,则R ∈BCNF. 这个定义表明,如果非平凡的FD X→Y中X不包含码,那么Y必定传递依赖于候选键,因此R不是BCNF模式. ...

  2. 数据库六种范式详解(1NF/2NF/3NF/BCNF/4NF/5NF)

    目录 数据库的基本概念 函数依赖 函数依赖的定义 函数依赖与属性的关系 六种范式 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) 巴斯-科德范式(BCNF,Boyce-Codd Norma ...

  3. 数据库范式判断及分解技巧

    这个博客就当自己的笔记了,写的不好不对的地方,大家多多指教啦.数据库中的范式是考试中必考的重点,也是应用中比较实用的操作标准.不说废话了,下面将分段来从不同深度开始说. [前驱知识补充] 函数依赖 简 ...

  4. 数据库三大范式、BC范式、第四范式

    目录 第一范式(1NF):原子性(存储的数据应该具有"不可再分性") 第二范式(2NF):唯一性 (消除非主键部分依赖联合主键中的部分字段)(一定要在第一范式已经满足的情况下) 第 ...

  5. 数据库的范式,第一、二、三、四、五范式、BC范式,为什么分不清

    这件事,怪我. 数据库范式 的 来历 数据库的规范化(上一篇博客有写到)的程度不同,便有了这么多种范式.数据库范式是数据库设计必不可少的知识,没有对范式的理解,就无法设计出高效率.优雅的数据库,甚至设 ...

  6. 数据库|第一范式、第二范式、第三范式、BC范式、第四范式简单理解

    数据库|第一范式.第二范式.第三范式.BC范式.第四范式简单理解 在设计数据库的时候,虽说将我们要的数据正确完整导入数据库是很关键的,但是对于数据库的设计者来说,如何将大量数据合理有效正确地导入数据库 ...

  7. 数据库三范式和BC范式

    文章目录 范式 什么是范式 函数依赖 1. 函数依赖的定义 2. 平凡函数依赖与非平凡函数依赖 3. 完全函数依赖和部分函数依赖 4. 传递函数依赖 第一范式(1NF)--码 定义 目标 第二范式2N ...

  8. 数据库搭建范式——BC范式

    用数据库搭建范式大白话来回顾一下什么是三范式: 第一范式:每个表应该有唯一标识每一行的主键. 第二范式:在复合主键的情况下,非主键部分不应该依赖于部分主键. 第三范式:非主键之间不应该有依赖关系. 这 ...

  9. 分解三范式和BC范式

    点击此处观看视频作者讲解 R={A B C D E F} F={AE->F,A->B,BC->D,CD->A,CE->F} 在分解三范式和BC范式之前先求候选键 具体做法 ...

最新文章

  1. Centos下Yum安装PHP5.5,5.6
  2. SpringMVC - SpringMVC的概述
  3. 使用文件监控对象FileSystemWatcher实现数据同步
  4. mysql if exists用法_MySQL中EXISTS的用法
  5. 如何才能做出一个顶级的客户端
  6. Heavy Transportation
  7. 怀旧服大脚插件未能从服务器,《魔兽世界怀旧服》大脚插件 安装方法使用教程...
  8. css3层级穿透,css页面滑动穿透的两种解决办法
  9. 7.22 C++自学笔记
  10. k8s实战之部署Prometheus+Grafana可视化监控告警平台
  11. UVA499 What‘s The Frequency, Kenneth?【文本】
  12. vb adodb mysql_PHP_ADODB类使用,MySQL的例子PHP中最通用的数据 - phpStudy
  13. 泛微e9隐藏明细表_泛微Ecology权限整理大全,相当全要点
  14. 神仙打架!传言阿里 P10 赵海平被 P11 多隆判定 3.25 离职,如何评价阿里 P10 赵海平对王垠的面试?...
  15. MySQL(小步笔记)
  16. redis持久化底层原理-RDB与AOF
  17. 免费的多功能视频格式转换工具XMedia Recode
  18. 湖南中职计算机考试练习题
  19. 大二数据库实验报告答案
  20. Shell 命令执行可视化和告警工具

热门文章

  1. 计算机组成与结构第一章ppt,计算机组成和结构第一章PPT.ppt
  2. tcmalloc jemalloc glibc内存分配管理模块性能测试对比
  3. DASCTF7月 ez_forenisc
  4. 腾讯云 centOS 下安装 chrome 浏览器
  5. MaxCompute执行引擎核心技术DAG揭秘
  6. Python的字典操作
  7. 06_shell编程之CASE语句+函数+正则
  8. pfSense book之流量管理
  9. 数说热点 | 2022商业地产的“破局”与“新生”——逆境之下探索新兴可能
  10. java标识符于关键字的区别,java 标识符和关键字