数据库范式(normalization)
name |
tel |
age |
|
大宝 |
13612345678 |
22 |
|
小明 |
13988776655 |
010-1234567 |
21 |
学生 |
课程 |
老师 |
老师职称 |
教材 |
教室 |
上课时间 |
小明 |
一年级语文(上) |
大宝 |
副教授 |
《小学语文1》 |
101 |
14:30 |
一个学生上一门课,一定在特定某个教室。所以有(学生,课程)->教室
一个学生上一门课,一定是特定某个老师教。所以有(学生,课程)->老师
一个学生上一门课,他老师的职称可以确定。所以有(学生,课程)->老师职称
一个学生上一门课,一定是特定某个教材。所以有(学生,课程)->教材
一个学生上一门课,一定在特定时间。所以有(学生,课程)->上课时间
因此(学生,课程)是一个码。
然而,一个课程,一定指定了某个教材,一年级语文肯定用的是《小学语文1》,那么就有课程->教材。(学生,课程)是个码,课程却决定了教材,这就叫做不完全依赖(partial functional dependency),或者说部分依赖。出现这样的情况,就不满足第二范式!
这样会导致插入,删除,修改等的异常。
(1) 校长要新增加一门课程叫“微积分”,教材是《大学数学》,怎么办?学生还没选课,而学生又是主属性,主属性不能空,课程怎么记录呢,教材记到哪呢? ……郁闷了吧?(插入异常)
(2)下学期没学生学一年级语文(上)了,学一年级语文(下)去了,那么表中将不存在一年级语文(上),也就没了《小学语文1》。这时候,校长问:一年级语文(上)用的什么教材啊?……郁闷了吧?(删除异常)
(3)校长说:一年级语文(上)换教材,换成《大学语文》。有10000个学生选了这么课,改动好大啊!改累死了……郁闷了吧?(修改异常)
因此修改为
(学生,课程,老师,老师职称,教室,上课时间)和(课程,教材)
3、第三范式:3NF(Third Normal Form)
在符合2NF的基础上,消除传递函数依赖(transitive dependency)。什么是传递函数依赖呢:如果(A,B,C),其中A为主键,B,C为非主属性,如果存在A->B->C,则称为传递函数依赖。[C传递依赖于A,且C为非主属性。如果要求C也可以为主属性,那么,是BCNF]
如上例,(学生,课程,老师,老师职称,教室,上课时间)和(课程,教材)已经能够符合2NF,但是
一个老师确定唯一的老师职称,即存在(学生,课程)->(老师)->(老师职称)的传递函数依赖关系。
会产生如下问题:
(1)老师升级了,变教授了,要改数据库,表中有N条,改了N次……(修改异常)
(2) 没人选这个老师的课了,老师的职称也没了记录……(删除异常)
(3)新来一个老师,还没分配教什么课,他的职称记到哪?……(插入异常)
因此修改为:
(学生,课程,老师,教室,上课时间)和(课程,教材)和(老师,老师职称)
3、BC范式:BCNF(Boyce-Codd Normal Form)
符合3NF基础上,并且,主属性不依赖于主属性。也可以表述如下:
若关系模式属于第一范式,且每个属性(主属性和非主属性)都不传递依赖于键码,则R属于BC范式。
以上两者等价。BC范式既检查非主属性,又检查主属性。当只检查非主属性时,就成了第三范式。满足BC范式的关系都必然满足第三范式。
4、各种范式间的关系可以用下图来总结
数据库范式(normalization)相关推荐
- 数据库范式5nf_第四范式(4NF)| 数据库管理系统
数据库范式5nf Fourth normal form (4NF) is a normal form used in database normalization, in which there ar ...
- oracle 第一范式,数据库范式之第一范式
数据库范式(Database Normalization) 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余 ...
- 数据库范式4nf什么意思_什么是第一范式(1NF)?
数据库范式4nf什么意思 In this tutorial we will learn about the 1st(First) Normal Form which is more like the ...
- 数据库规范化,数据库范式,和规范化实例
文章目录 什么是数据库规范化 术语 数据库的3个范式介绍 第一范式 第二范式 第三范式 根据数据库范式优化数据库结构 满足第一范式 满足第二范式 满足第三范式 参考链接 什么是数据库规范化 维基百科的 ...
- 什么是数据库范式(NF)?从一范式到五范式分别是什么?
什么是数据库范式(NF)?从一范式到五范式分别是什么? 什么是数据库范式(NF)? 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某 ...
- 数据库范式解析(1NF 2NF 3NF BCNF)
数据库设计范式是关系型数据库的设计准则.其目的在于通过规划设计使得数据库结构合理,尽量减少数据冗余,消除存储异常,方便数据的插入.更新和删除操作.目前常用范式包括1NF(第一范式).2NF(第二范式) ...
- 【转载】数据库范式那些事
数据库范式那些事 简介 数据库范式在数据库设计中的地位一直很暧昧,教科书中对于数据库范式倒是都给出了学术性的定义,但实际应用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一 ...
- 数据库范式的思考以及数据库的设计
数据库范式--通俗易懂[转] 数据库范式是数据库设计中必不可少的知识,没有对范式的理解,就无法设计出高效率.优雅的数据库.甚至设计出错误的数据库.而想要理解并掌握范式却并不是那 么容易.教科书中一般以 ...
- 从第一范式(2nf)到第二范式(3nf)_啥是数据库范式
前言: 关于数据库范式,时常有听说过,一直没有详细去了解.一般数据库书籍或数据库课程会介绍范式相关内容,范式也经常出现在数据库考试题目中.不清楚你是否对范式有比较清晰的了解呢?本篇文章我们一起来学习下 ...
- 数据库范式 1NF, 2NF, 3NF的问题与细解
转自https://www.jianshu.com/p/94a274ef35a9 一. 关于数据冗余与异常 数据库的规范化 数据库规范化是一种在数据库中组织数据的技术. 规范化是消除冗余(重复)和不良 ...
最新文章
- 修改表格字体颜色_CAD表格文字样式失灵?不,你错了
- 80%开发者都不知道的以太坊骚操作:「事件」和「日志」还可以这么玩!
- 被3整除的子序列(简单dp)
- android辅助功能实现群发,Android 8.0实现发送通知的方法
- c语言直流电机控制实验报告,直流电机实验报告.docx
- oem 无法访问问题解决过程
- 【分块】bzoj2120 数颜色
- linux下测试权限,linux 文件权限
- 使用K近邻对iris数据集进行分类
- 计算机电源指示灯,为什么笔记本电脑电源指示灯一直闪?
- shiro整合ehcache Cannot resolve reference to bean 'securityManager' while setting bean property 'secur
- 历届试题 填字母游戏
- DDOS攻击与防御(一)
- python 批量下载种子_批量下载btbbt种子
- HuskyLens人工智能摄像头
- K12教育小初高各个版本教材内的章节数据
- 国庆过了,该审视下自己的生活了
- 如何提升企业网络曝光率?
- 开源协议MIT、BSD、Apache
- 因果信号的傅里叶变换_信号与系统实验报告3实验3 傅里叶变换及其性质
热门文章
- 人工智能开启数字化新征程,智能语音全速向前
- [转载]使用兼容ie6 ie7 ie8 FF的text-overflow:ellips
- 【英语考研词汇训练营】Day 17 —— espresso,ultimate,gradually,detect,dimension
- nodeJs + webpack+vue+ element ui 环境安装
- 微商代理系统APP软件
- 6把椅子换位思考法则
- 顶点计划换位思考汇总
- 推荐一个超简约、干净又实用的导航网站,支持自定义,重新认识一下你的浏览器起始页吧
- Matlab 归一化函数premnmx [-1,1]
- 20ZR暑期集训 简单数据结构