三张图搞透第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的区别
第一范式(1NF):
列1
唯一确定列2, 列3, 列4, ...
,即列2, 列3, 列4, ...
不能再分裂出其它列。
假设有关系模式列1: 订单名; 列2: 商品
。一个订单下可以有多个商品,即列2: 商品
可以分裂成商品A, 商品B, 商品C, ...
,所以列1: 订单名; 列2: 商品
这样的关系模式不符合第一范式。
第二范式(2NF):
满足2NF的前提是必须满足1NF。此外,关系模式需要包含两部分内容,一是必须有一个(及以上)主键;二是没有包含在主键中的列必须全部依赖于全部主键,而不能只依赖于主键的一部分而不依赖全部主键。
定义听起来有点绕,不慌,直接看图,只有全部的非主键列依赖于全部主键,才满足第二范式。
第三范式(3NF):
满足3NF的前提是必须满足2NF。另外关系模式的非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列m既依赖于全部主键,又依赖于非主键列n的情况。
定义听起来还是有点绕,不慌,直接看图,只要非主键内部存在传递依赖,就不满足第三范式。
假设存在关系模式主键1: 课程编号; 列1: 教师名; 列2: 教师家庭地址
。显然满足第一范式和第二范式,但是教师家庭地址
传递依赖于教师名
,所以不满足第三范式。
示例:
设有课程关系模式如下:R(C#, Cn, T, Ta)(其中C#为课程号,Cn为课程名,T为教师名,Ta为教师地址),并且假定不同的课程号可以有相同的课程名,每门课程只有一位任课教师,但每名教师可以有多门课程。关系R范式最高达到()。
A)1NF
B)2NF
C)3NF
D)BCNF
【正确答案】B
【解析】
一个“课程号”确定一个“课程名”,确定一个“教师名”,确定一个“教师地址”,所以符合第一范式;
“课程号”是无重复的,所以“课程号”是主键,“课程名”、“教师名”、“教师地址”均是可重复的,所以它们都是非主键列并完全依赖于主键“课程号”,所以符合第二范式;
非主键列“教师地址”传递依赖于非主键列“教师名”,所以不符合第三范式,故选B。
三张图搞透第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的区别相关推荐
- 三张图搞懂JavaScript的原型对象与原型链
对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与__proto__混淆,二来它们之间的各种指向实在有些复杂,其实市面上已经有非常多的文章在尝试说清楚,有一张 ...
- 第一范式(1NF)、第二范式(2NF)和第三范式(3NF)
第一范式(1NF): 列1唯一确定列2, 列3, 列4, ...,即列2, 列3, 列4, ...不能再分裂出其它列. 假设有关系模式列1: 订单名; 列2: 商品.一个订单下可以有多个商品, ...
- 第一范式1NF、第二范式2NF、第三范式3NF详解
第一范式1NF:表的每个属性必须具有原子(单个)值. 第二范式2NF:而 2NF 告诉我们一张表就是一个独立的对象,一张表只 表达一个意思.每个非主键属性依赖于主键,依赖于整个主键". 第三 ...
- 三张图搞定TCP 握手、HTTPS、TLS加密过程
1. 抓包内容(WireShark) 2. 搞定握手.挥手.SSL加密过程 3. 消息内容(Charles) 之前看到写的比较好的文章,有文字详细叙述: TLS版本差异 https://zhuanla ...
- 数据库第一范式1NF,第二范式2NF,第三范式3NF详解
文章目录 一,超码.主码.候选码之间的定义与联系 二,函数依赖. 三,三大范式 第一范式(1NF): 第二范式(2NF): 第三范式(3NF): BCNF 一,超码.主码.候选码之间的定义与联系 码是 ...
- 4张图搞懂Salesforce的认证体系(附新手考证攻略)
Salesforce认证计划概述 最近这一两年,Salesforce的Trailhead和认证太热门了,小伙伴们前赴后继地刷Badge拿认证,可以考的认证也随着产品家族的增加而增加,从十几年前的几个认 ...
- 【科普干货】3张图搞懂Salesforce的认证体系(附新手考证攻略)
Salesforce.com,这家神一般的公司及其产品我就不多说了,需要了解的可以阅读我的另一篇科普文章<一张图读懂Salesforce的产品架构>. 今天给大家带来另一篇关于Salesf ...
- 3张图搞懂Salesforce的认证体系
今天给大家带来另一篇关于Salesforce认证考试的科普文章. [Salesforce认证计划概述] 最近这一两年,Salesforce的Trailhead和认证太热门了,小伙伴们前赴后继地刷Bad ...
- 三张图助您掌握OTN分层结构
OTN(Optical Transport Network,光传送网)是一个层次化网络,业务信号在不同层次之间进行传输. 根据ITU-T国际电信联盟规定,OTN分为7层结构: 客户信号层:指OTN网络 ...
最新文章
- 亿级PV物联网的基础架构
- C# 将string 转换为二维码图片,然后转为base64字符串编码 。
- SpringMVC核心流程图
- 轻量级的Ajax解决方案——DynAjax:直接在客户端调用C#类的方法
- wpf: DataGridTextColumn 数字格式显示,编辑时取消格式(StringFormat)
- 局域网工业交换机的种类和选择注意事项!
- 关于虚拟机第二块网卡eth1(仅主机模式)的配置问题
- 大流量场景下如何云淡风轻地进行线上发布?
- [ES6] 细化ES6之 -- 前端模块化
- 庖丁解牛之-Android平台RTSP|RTMP播放器设计
- linux里的tree 命令,Linux中tree命令起什么作用呢?
- ttf字体文件抽取自己想要的字
- 电子专业必懂的焊接知识与技能!
- 基于Nodejs+vue开发实现高校学院网站系统
- 使用UMI仿今日头条首页
- Android全局捕获异常信息,并上传到服务器。
- android sqlite 分词,sqlite3自定义分词器
- 我100米跑了7秒会不会太慢了
- WebView 视频播放,全屏按钮显示不出来,全屏后不能播放视频
- 行为型模式----golang实现