数据库三大范式定义与理解
一、第一范式(1NF)
要求:
要求:每一个分量必须是不可分的数据项。
特点:
1)有主键,且主键不能为空。
2)字段不能再分。
示例:(以下例子不满足第一范式)
学号 | 年龄 | 信息 |
101 | 19 | 湖北武汉市,电话:12345678 |
101 | 20 | 湖北 |
主键:学号
不满足原因:1)主键重复。2)信息字段可以再分
二、第二范式(2NF)
要求:在范式一的基础上,且每一个非主属性完全函数依赖于主键。
特点:
1)满足第一范式。
2)表中的每一个非主属性,必须完全依赖于本表主键。
3)只有当一个表中,主键由两个或以上的属性组成的时候,才会出现不符合第二范式的情况。
示例:(以下例子不符合第二范式)
学号 | 课程号 | 得分 | 课程名 |
101 | 003 | 95 | 数据库 |
三、第三范式(3NF)
1)满足第二范式
2)所有的非主键列依赖于主键列
注:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余,但是没有数据冗余的数据库并不一定是最好的数据库,所以有没有冗余的设计,要综合来考虑
学生 | 课程 | 老师 | 老师职称 | 教室 | 上课时间 |
小明 | 语文 | 王五 | 讲师 | 110 | 8:30 |
主键:学生、课程
上面的“学生上课表”符合2NF,可以这样验证:两个主属性单独使用,不用确定其它四个非主属性的任何一个。但是它有传递依赖!在“老师”和“老师职称”这里,一个老师一定能确定一个老师职称。
如果不消除这种传递依赖,有可能会出现:
1、老师职称变了,变教授了,要改数据库,表中有N条,改了N次……(修改异常)
2、没人选这个老师的课了,老师的职称也没了记录……(删除异常)
3、新来一个老师,还没分配教什么课,他的职称记到哪?……(插入异常)
所以为了解决这些问题应把表拆分成:
学生 | 课程 | 老师 | 教室 | 上课时间 |
小明 | 语文 | 王五 | 110 | 8:30 |
老师 | 老师职称 |
大宝 | 讲师 |
版权声明:本博客为记录本人自学感悟,内容大多从网上学习与整理所得,若侵权请告知!
https://mp.csdn.net/postedit/80365677
数据库三大范式定义与理解相关推荐
- mysql三大范式 答案_数据库三大范式定义与理解
数据库三大范式定义与理解 发布时间:2018-06-04 10:24, 浏览次数:291 一.第一范式(1NF) 要求: 要求:每一个分量必须是不可分的数据项. 特点: 1)有主键,且主键不能为空. ...
- mysql三大范式 答案_数据库三大范式的个人理解~!
下面引用的是百度文库的解释,之后是我自己的理解,如果我写的理解不了可以看下百度文库的解释! 百度文库: 范式简介编辑 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求 ...
- 数据库三大范式(通俗理解)
范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中 ...
- 数据库三大范式(1NF,2NF,3NF)及ER图
数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...
- 3nf mysql表_数据库三大范式(1NF,2NF,3NF)及ER图
数据库三大范式(1NF,2NF,3NF)及ER图 百度官方解释: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据 ...
- 浅显易懂 SQLite3 笔记(08)— 数据库三大范式
文章目录 前言 一.函数依赖 1.第一定义 2.第二定义 3.第三定义 二.数据库范式 1.第一范式 2.第二范式 3.第三范式 4.范式关系图 5.范式对查询的影响 总结 前言 本篇,我们将学 ...
- Mysql数据库与数据库三大范式
作者:左新宇 链接:https://zhuanlan.zhihu.com/p/59394493 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. MySQL 常用命令 ...
- 数据库三大范式详解,部分依赖、完全依赖、传递依赖
数据库三大范式详解以及部分.完全.传递依赖 一.第一范式 二.第二范式 三.第三范式 四.部分依赖.完全依赖.传递依赖 完结撒花 一.第一范式 数据库每一列都是不可分的基本数据项(原子数据项) 就比如 ...
- 数据库三大范式(重要)
转自微信 上周四下午的VIP试听课是由芒果给大家介绍的MySQL的一些基础知识,在这里芒果给大家分享其中的一部分内容--对数据库三大范式做个小介绍: 范式(数据库的设计范式)是符合某一种级别的关系模式 ...
最新文章
- 《JavaScript入门经典》学习笔记1
- android最佳活动启动方法,026-启动活动的最佳写法
- 【转】ADO.NET对数据库操作经典类
- 如何使用 AutoPilot 对作业自动调优?
- Android 实现九宫格、点击图片放大全屏浏览等
- 微软人工智能和对话平台--知识商城体验
- 华为畅享max有没有人脸识别_华为畅享7s有人脸识别吗 让我来告诉你
- 无重复字符串的最长子串
- Windows2008r2如何关闭防火墙
- PLSQL Developer报“动态执行表不可访问,本会话的自动统计被禁止”的解决方案...
- bosboot -a的作用
- python mysql到处excel
- HTTPS时代全面到来,你准备好了吗? 1
- 支付宝——(JAVA)支付测试开发
- Atitit..状态机与词法分析 通用分词器 分词引擎的设计与实现 attilax总结
- 2021年华中杯数学建模挑战赛A题马赛克瓷砖选色问题求解全过程文档及程序
- 华擎主板设置来电开机_华擎bios修改开机画面 BIOS界面焕然一新 - 电脑常识 - 服务器之家...
- 微软通过共享文件夹的思路,使用工具SyncToy实现两台windows机器间的文件同步
- 做人力资源需要掌握python_彭剑锋:做人力资源管理必须吃透的20个金句
- C++迭代器之'插入迭代器'
热门文章
- Android Skeleton使用和阴影动画的说明
- 【IDEA 报错 ERROR 16720 --- [ restartedMain] o.a.coyote.http11.Http11NioProtocol : Failed to sta】
- 对抗样本方向(Adversarial Examples)2018-2020年最新论文调研
- 网络精英赛模拟练习(6)
- Lingo 基础知识
- 2022西山居--技术训练营--一面(已oc)
- 大四寒假实习——面试总结
- webStrom使用gitee管理代码
- [caffe学习笔记]用自己的数据进行训练和测试
- python学习笔记 selenium