数据库搭建范式——BC范式
用数据库搭建范式大白话来回顾一下什么是三范式:
第一范式:每个表应该有唯一标识每一行的主键。
第二范式:在复合主键的情况下,非主键部分不应该依赖于部分主键。
第三范式:非主键之间不应该有依赖关系。
这是我们设计数据库的基本规则,但是只有这三个规则并不能完全解决数据的增删改的异常情况,下面就来看看BC范式的例子。
BC范式
BC范式(BCNF)是Boyce-Codd范式的缩写,其定义是:在关系模式中每一个决定因素都包含候选键,也就是说,只要属性或属性组A能够决定任何一个属性B,则A的子集中必须有候选键。BCNF范式排除了任何属性(不光是非主属性,2NF和3NF所限制的都是非主属性)对候选键的传递依赖与部分依赖。
比如我们有一个学生导师表,其中包含字段:学生ID,专业,导师,专业GPA,这其中学生ID和专业是联合主键。
StudentId | Major | Advisor | MajGPA |
1 | 人工智能 | Edward | 4.0 |
2 | 大数据 | William | 3.8 |
1 | 大数据 | William | 3.7 |
3 | 大数据 | Joseph | 4.0 |
这个表的设计满足三范式,有主键,不存在主键的部分依赖,不存在非主键的传递依赖。但是这里存在另一个依赖关系,“专业”函数依赖于“导师”,也就是说每个导师只做一个专业方面的导师,只要知道了是哪个导师,我们自然就知道是哪个专业的了。
所以这个表的部分主键依赖于非主键部分,那么我们可以进行以下的调整,拆分成2个表:
学生导师表:
StudentId | Advisor | MajGPA |
1 | Edward | 4.0 |
2 | William | 3.8 |
1 | William | 3.7 |
3 | Joseph | 4.0 |
导师表:
Advisor | Major |
Edward | 人工智能 |
William | 大数据 |
Joseph | 大数据 |
其实还有第四范式,而第四范式的定义也很简单:已经是BC范式,并且不包含多值依赖关系。这样就好理解里面的各种数值关系。
数据库搭建范式——BC范式相关推荐
- 4.MYSQL 三大范式+BC范式
前言 首先,你得知道范式是干啥的? 范式就是规范我们建表的依据,为后续的增删改查提高安全保障 正文 come on~~~~~~ 第一范式 第一范式:所有属性都是不可分割的原子值. 也就是每个属性都是不 ...
- MySQL (4) 第一范式 第二范式 第三范式 BC范式
第一范式 第一范式:所有属性都是不可分割的原子值. 也就是每个属性都是不可再分的. 例如下图就不符合第一范式的要求 实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS) ...
- 第一范式 第二范式 第三范式 BC范式
第一范式 第一范式:所有属性都是不可分割的原子值. 也就是每个属性都是不可再分的. 例如下图就不符合第一范式的要求 实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RD ...
- 3.6.2数据库系统-范式判断:范式分类、第一范式、第二范式、第三范式、BC范式
3.6.2数据库系统-范式判断:范式分类.第一范式.第二范式.第三范式.BC范式 范式分类 第一范式 例题 第二范式 例题 第三范式 例题 BC范式 例题 范式分类 逐步优化以解决问题:插入异常.删除 ...
- 数据库三大范式、BC范式、第四范式
目录 第一范式(1NF):原子性(存储的数据应该具有"不可再分性") 第二范式(2NF):唯一性 (消除非主键部分依赖联合主键中的部分字段)(一定要在第一范式已经满足的情况下) 第 ...
- 对数据库三大范式及BC范式的理解
1.第一范式:数据库的字段是单一属性,不可再分 不能是复合属性,如果存在,应该拆分为多个属性 不能是多值属性,如果存在,应该建立一个实体,而让此属性与其存在1对多的关系) 不能是重复属性 2.第二范式 ...
- 数据库的范式,第一、二、三、四、五范式、BC范式,为什么分不清
这件事,怪我. 数据库范式 的 来历 数据库的规范化(上一篇博客有写到)的程度不同,便有了这么多种范式.数据库范式是数据库设计必不可少的知识,没有对范式的理解,就无法设计出高效率.优雅的数据库,甚至设 ...
- 数据库|第一范式、第二范式、第三范式、BC范式、第四范式简单理解
数据库|第一范式.第二范式.第三范式.BC范式.第四范式简单理解 在设计数据库的时候,虽说将我们要的数据正确完整导入数据库是很关键的,但是对于数据库的设计者来说,如何将大量数据合理有效正确地导入数据库 ...
- 数据库关系范式——第一范式、第二范式、第三范式、BC范式【通俗易懂,博主会讲人话】
范式:是符合某一种级别的关系模式的集合. 说白了,就是对关系模式的一种规范化. 范式分为:第一范式.第二范式.第三范式.BC范式.第四范式.第五范式.后面两种在这里不讨论. 1.第一范式(1NF):关 ...
最新文章
- bzoj1089 [SCOI2003]严格n元树(dp+高精)
- C# ckeditor+ckfinder的图片上传配置
- python pip install virtualenv时注意事项:需使用root权限 否则报virtualenv命令找不到
- html自动执行的事件,js自执行事件
- [蓝桥杯][2013年第四届真题]大臣的旅费(树的直径)
- OD汇编指令集(不断更新)
- 【LeetCode】3月17日打卡-Day2
- 中国程序员的前景并非一片黑暗,教你如何拥有光明的前程
- 53 SD配置-定价配置-定义条件排斥组
- views 多个文件夹 netcore_优化 .net core 应用的 dockerfile
- ZooKeeper官方文档学习笔记03-程序员指南
- Cannot load 64-bit SWT libraries on 32-bit JVM 解决方法
- IBM的ITIL管理解决方案
- 从事计算机工作的应该,未来想从事计算机方面的工作,现在应该学习些什么东西?...
- 端到端车道线检测_如何使用Yolov5创建端到端对象检测器?
- input标签详解,用户注册表单
- 十三年来,淘宝走过的大数据之路
- 只需7步,魔方6面即刻还原!
- R语言可视化回归模型的残差直方图并进行残差分析(Histogram of Residuals)
- 离散信号内插和抽取Matlab,抽取与内插的频谱分析
热门文章
- 百度JS实现文本语音朗读
- 淘宝美工设计需要掌握什么技能 ?小白如何快速学会美工设计?
- 动态令牌主要功能是什么???
- 关于bitamap旋转图片全黑
- 鼠标右键点击文件夹、bat文件、txt文档,指针出现假死转圈的解决方法(Adobe Acrobat右键邮件选项引起的win10假死)
- 2023年安徽省职业院校“磐云杯”网络安全竞赛任务书
- 基于微信小程序的毕业设计题目(22)php有声读物音频播放小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
- python批量打印mathcad_快速批量打印软件 – Print Conductor 6.1
- windows系统运维基础
- java定义苹果类Apple_定义一个水果接口Fruit,里面定义一个表示吃水果的eat方法。定义一个苹果类Apple和一个橘子...