BC范式(BCNF)

关系模式R<U,F>∈1NF,若X→Y且Y  X时X必包含码,则R<U,F> ∈BCNF。
这个定义表明,如果非平凡的FD X→Y中X不包含码,那么Y必定传递依赖于候选键,因此R不是BCNF模式。
等价于:每一个决定属性因素都包含码
如果关系模式R是1NF,且每个属性(包括主属性和非主属性)都不传递依赖于R的候选码,那么称R是BCNF的模式。
若R∈BCNF
所有非主属性对每一个码都是完全函数依赖
所有的主属性对每一个不包含它的码,也是完全函数依赖
没有任何属性完全函数依赖于非码的任何一组属性R ∈BCNF                R ∈3NF
定理:如果R是BCNF模式,那么R也是3NF模式。
证明:设R是BCNF,但不是3NF,那么R上必存在传递依赖X→Y,Y→A,这里X是R的码,A∈Y, Y→X。显然Y不包含R的码,否则Y→X也成立。因此Y→A违反了BCNF的定义,与假设R是BCNF矛盾。从而定理得证。
[例5] 关系模式C(Cno,Cname,Pcno)
C∈3NF
C∈BCNF[例6]  关系模式S(Sno,Sname,Sdept,Sage)
假定S有两个码Sno,Sname
S∈3NF。
S ∈ BCNF
[例7]关系模式SJP(S,J,P)函数依赖:(S,J)→P;(J,P)→S
(S,J)与(J,P)都可以作为候选码,属性相交
SJP∈3NF,
SJP∈BCNF
[例8]在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。
函数依赖:(S,J)→T,(S,T)→J,T→J
(S,J)和(S,T)都是候选码

多值依赖

[例9] 学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用。
Teaching∈BCNF

Teaching具有唯一候选码(C,T,B), 即全码
Teaching模式中存在的问题
(1)数据冗余度大
(2)插入操作复杂
(3) 删除操作复杂
(4) 修改操作复杂

 设R(U)是一个属性集U上的一个关系模式, X、 Y和Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖 X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关例  Teaching(C, T, B)

多值依赖的另一个等价的形式化的定义:

  在R(U)的任一关系r中,如果存在元组t,s 使得t[X]=s[X],那么就必然存在元组 w,v r,(w,v可以与s,t相同),使得w[X]=v[X]=t[X],而w[Y]=t[Y],w[Z]=s[Z],v[Y]=s[Y],v[Z]=t[Z](即交换s,t元组的Y值所得的两个新元组必在r中),则Y多值依赖于X,记为X→→Y。 这里,X,Y是U的子集,Z=U-X-Y。

平凡多值依赖和非平凡的多值依赖
若X→→Y,而Z=φ,则称
X→→Y为平凡的多值依赖
否则称X→→Y为非平凡的多值依赖
[例10]关系模式WSC(W,S,C)
W表示仓库,S表示保管员,C表示商品
假设每个仓库有若干个保管员,有若干种商品
每个保管员保管所在的仓库的所有商品
每种商品被所有保管员保管

多值依赖性质

(1)多值依赖具有对称性
若X→→Y,则X→→Z,其中Z=U-X-Y
(2)多值依赖具有传递性
若X→→Y,Y→→Z, 则X→→Z –Y
(3)函数依赖是多值依赖的特殊情况。
若X→Y,则X→→Y。
(4)若X→→Y,X→→Z,则X→→Y Z。
(5)若X→→Y,X→→Z,则X→→Y∩Z。
(6)若X→→Y,X→→Z,则X→→Y-Z,X→→Z -Y。

多值依赖与函数依赖的区别

(1) 多值依赖的有效性与属性集的范围有关
(2)
若函数依赖X→Y在R(U)上成立,则对于任何Y’  Y均有X→Y’ 成立
多值依赖X→→Y若在R(U)上成立,不能断言对于任何Y’  Y有X→→Y’ 成立

4NF

关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y  X),X都含有码,则R∈4NF。
如果R ∈ 4NF, 则R ∈ BCNF
不允许有非平凡且非函数依赖的多值依赖
允许的非平凡多值依赖是函数依赖
例: Teaching(C,T,B) ∈ 4NF存在非平凡的多值依赖C→→T,且C不是码
用投影分解法把Teaching分解为如下两个关系模式:CT(C, T) ∈ 4NFCB(C, B) ∈ 4NFC→→T, C→→B是平凡多值依赖

关系数据库的规范化理论是数据库逻辑设计的工具

目的:尽量消除插入、删除一场,修改复杂,数据冗余

基本思想:逐步消除数据依赖中不合适的部分
实质:概念的单一化

不能说规范化程度越高的关系模式就越好
在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式
上面的规范化步骤可以在其中任何一步终止

数据库 - 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. 数据库BC范式(BCNF)判断和分解

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. mysql三大范式和反范式_数据库范式:三大范式、BC范式和反范式化

    一.什么是数据库范式 无规矩不成方圆,同理范式是数据表设计的一些约束和规范.为了让各个属性间的关系更加合理,减少数据冗余. 一般来说,主要满足 3NF 就可以了,因为范式过高,虽然对数据关系有更好的约 ...

  10. 数据库的三范式及BC范式

    数据库的三范式及BC范式 依赖 三范式 第一范式(1NF):唯一性,数据列不可再分割 第二范式(2NF):唯一性,消除非主键元素/列对组合主键中部分元素/列的依赖 第三范式(3NF):独立性,消除传递 ...

最新文章

  1. 百度地图android wear,Android SDK | 百度地图API SDK
  2. 1×pbs缓冲液配方_小鼠毒性休克综合征毒素1(TSST-1)ELISA试剂盒 -价格/说明书-赫澎研选_产品说明_仪器仪表技术文献...
  3. 千亿市场竟是蓝海——在线音乐教学产品观察
  4. 树莓派Python编程指南--第一章(起航--启动和运行)
  5. python棋盘放米问题_Python基于回溯法子集树模板解决马踏棋盘问题示例
  6. 【英语学习】【科学】【Glencoe Science】【B】From Bacteria to Plants 目录及术语表
  7. 简单脚本之显示系统当前的一些信息
  8. Tricks(二十二) —— zip(python) 的实现及使用
  9. mysql翻译逗号隔开的字典_【多测师小课堂】python数据类型之列表、字典、元祖、字符串...
  10. PUN☀️三、服务器大厅、服务器房间
  11. oppo鸿蒙系统刷机包下载,OPPO A59st官方固件rom刷机包_OPPO A59st系统升级包下载
  12. 关于0x80070091 目录不是空的
  13. 「 C/C++疑难杂症 」warning: ISO C++ forbids converting a string constant to ‘CHAR*’ {aka ‘char*’} [-Wwrite
  14. AI巨头们建造的“新世界”,进展如何?
  15. 线程池、volatile、原子性、并发工具类
  16. Java实现从Excel文件转换成XML文件(一)
  17. 封神台-尤里的复仇II 回归sql-注入绕过防护getshell
  18. English_words
  19. nginx 结合php 实现高级配置详解
  20. 查询Ip、身份证、手机所在地代码

热门文章

  1. 整理好的多款教程也素材与大家分享
  2. ABB工业机器人程序编写与实战
  3. JDK各个版本新特性介绍及使用
  4. 华为软件测试笔试真题之变态逻辑推理题【二】华为爆火面试题
  5. 优酷1080p的kux格式文件转换方法
  6. 支付宝转账银行卡/隐藏卡号
  7. 3624用计算机怎么换算,pa与mpa的换算(压力单位pa与mpa)
  8. ImageNet数据集和ILSVRC2012介绍以及如何通过python使用
  9. 【SpringBoot 】 组件管理 ,java工程师面试突击中华石杉
  10. 未来教育题库 ***Java二级试题第27套***