第一范式、第二范式、第三范式
2019独角兽企业重金招聘Python工程师标准>>>
第一范式
存在非主属性对码的部分依赖关系 R(A,B,C) AB是码 C是非主属性 B-->C B决定C C部分依赖于B
第一范式
定义:如果关系R 中所有属性的值域都是单纯域,那么关系模式R是第一范式的
那么符合第一模式的特点就有
1)有主关键字
2)主键不能为空,
3)主键不能重复,
4)字段不可以再分
例如:
StudyNo | Name | Sex | Contact
20040901 john Male Email:kkkk@ee.net,phone:222456
20040901 mary famale email:kkk@fff.net phone:123455
以上的表就不符合,第一范式:主键重复(实际中数据库不允许重复的),而且Contact字段可以再分
所以变更为正确的是
StudyNo | Name | Sex | Email | Phone
20040901 john Male kkkk@ee.net 222456
20040902 mary famale kkk@fff.net 123455
第二范式
存在非主属性对码的传递性依赖 R(A,B,C) A是码 A -->B ,B-->C
定义:如果关系模式R是第一范式的,而且关系中每一个非主属性不部分依赖于主键,称R是第二范式的。
所以第二范式的主要任务就是
满足第一范式的前提下,消除部分函数依赖。
StudyNo | Name | Sex | Email | Phone | ClassNo | ClassAddress
01 john Male kkkk@ee.net 222456 200401 A楼2
01 mary famale kkk@fff.net 123455 200402 A楼3
这个表完全满足于第一范式,
主键由StudyNo和ClassNo组成,这样才能定位到指定行
但是,ClassAddress部分依赖于关键字(ClassNo-〉ClassAddress),
所以要变为两个表
表一
StudyNo | Name | Sex | Email | Phone | ClassNo
01 john Male kkkk@ee.net 222456 200401
01 mary famale kkk@fff.net 123455 200402
表二
ClassNo | ClassAddress
200401 A楼2
200402 A楼3
第三范式
不存在非主属性对码的传递性依赖以及部分性依赖 ,
StudyNo | Name | Sex | Email | bounsLevel | bouns
20040901 john Male kkkk@ee.net 优秀 $1000
20040902 mary famale kkk@fff.net 良 $600
这个完全满足了第二范式,但是bounsLevel和bouns存在传递依赖
更改为:
StudyNo | Name | Sex | Email | bouunsNo
20040901 john Male kkkk@ee.net 1
20040902 mary famale kkk@fff.net 2
bounsNo | bounsLevel | bouns
1 优秀 $1000
2 良 $600
这里我比较喜欢用bounsNo作为主键,
基于两个原因
1)不要用字符作为主键。可能有人说:如果我的等级一开始就用数值就代替呢?
2)但是如果等级名称更改了,不叫 1,2 ,3或优、良,这样就可以方便更改,所以我一般优先使用与业务无关的字段作为关键字。
一般满足前三个范式就可以避免数据冗余。
转载于:https://my.oschina.net/liuyuantao/blog/733365
第一范式、第二范式、第三范式相关推荐
- MySQL (4) 第一范式 第二范式 第三范式 BC范式
第一范式 第一范式:所有属性都是不可分割的原子值. 也就是每个属性都是不可再分的. 例如下图就不符合第一范式的要求 实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS) ...
- 第一范式第二范式第三范式学习笔记
三楚白云生佛手,九江寒月照禅心. --李日华<佛手岩> 文章目录 前言 一.第一范式(1NF) 二.第二范式(2NF) 三.第三范式(3NF) 四.参考学习视频 五.名词解释&知识 ...
- 第一范式 第二范式 第三范式 BC范式
第一范式 第一范式:所有属性都是不可分割的原子值. 也就是每个属性都是不可再分的. 例如下图就不符合第一范式的要求 实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RD ...
- 第一范式 第二范式 第三范式理解
数据库中设计一个好的标准化范式能大大减少数据冗余,增强数据的易操作性. 范式的演变: 第一范式:表中没有重复数据组 属性不可以再分,具有一个主键(主键组) 例如: 出现从重复的数据组,把它转换为第一范 ...
- java的第一范式,数据库第一范式第二第三范式关系详解
一.范式的定义 程序员在做数据库设计时不是心血来潮胡乱设计的,而是需要遵循一定的规范而为之,这些规范就是为了设计出合理而实用的数据库而总结的的,专门适用于任何关系型数据库. 数据库设计在很大程度上取决 ...
- 第一范式、第二范式、第三范式、巴斯-科德范式、第四范式、主码、候选码、码详解
目录 数据库逻辑设计 主码.候选码.码 第一范式 第二范式 第三范式 巴斯-科德范式 第四范式 数据库逻辑设计 前面我们讲了第二范式,我们知道还有第三范式,那么第三范式的特点到底是什么呢?下面我们来一 ...
- MySQL - 高效的设计MySQL库表
文章目录 生猛干货 范式与反范式 范式 第一范式 第二范式 第三范式 第二范式 VS 第三范式 设计符合 2NF 的表 范式优缺点 反范式 范式 VS 反范式 MySQL 使用原则和设计规范 基本设置 ...
- 面试不知道如何回答这六大知识点,你还敢说熟悉MySQL?
文章目录 一.事务 什么是事务 事务的四大特性 事务的并发问题 ① 事务并发问题什么时候发生? ② 事务的并发问题有哪些? ③ 如何避免事务的并发问题? 二.索引 什么是索引 索引的优缺点 索引的设计 ...
- MySQL(三)数据库的六种约束、表的关系、三大范式
文章目录 数据库约束 NOT NULL(非空约束) UNIQUE(唯一约束) DEFAULT(缺省约束) PRIMARY KEY(主键约束) AUTO_INCREMENT 自增 FOREIGN KEY ...
- 《MySQL——数据表设计三大范式》
目录 数据表设计范式 第一范式 第二范式 第三范式 数据表设计范式 第一范式 数据表中的所有字段都是不可分割的原子值. 字段值还可以继续拆分的,就不满足第一范式,如下: 下面这个,更加贴合第一范式: ...
最新文章
- 入机器学习大坑,需要什么样的数学水平?
- 你了解如何用GAN做语义分割吗
- groovy 兼容 java,升级Groovy 1.7 - 2.1不兼容
- python写电脑程序_【初学者教程】在电脑上安装Python,写第一个程序
- html 图片展示 3d,CSS3 3D图像显示
- oracle排名怎么去除空值影响,Oracle排序中常用的NULL值处理方法
- 10分钟学会python函数式编程,赶紧收藏!!
- 使用firefox44版本,弃用chrome
- MySQL中NOT IN语句对NULL值的处理
- MySQL增删改查--之删
- RBAC权限认证流程图
- Java网络编程——UDP编程
- WhbtomT(半路出家) 的每日英语 收集 (三)
- 均线颜色怎么区分_均线入门:一图学会区分不同均线的颜色与炒股技巧
- MongoDB极简实践入门
- 安卓模拟PC浏览器发送http请求
- 伊利诺伊理工大学舒凯招收多名全奖博士生
- 青鸟s1java云题库答案_北大青鸟S1java内部测试试卷(试题)
- Android APP native 崩溃分析之 linker SIGBUS 崩溃
- eating的中文意思_eating是什么意思_eating的翻译_音标_读音_用法_例句_爱词霸在线词典...
热门文章
- c语言50到100套,c语言51-100套试题答案及详解.pdf
- python pptx 从中间加几页_python-pptx---插入表格
- android里的editText怎么用,Android自定义控件EditText使用详解
- html监听页面关闭事件,JS针对浏览器窗口关闭事件的监听方法集锦
- 基于CSDN完成TEASOFT的MOOC编辑整理
- 第十七届全国大学智能车竞赛赛区划分
- Eclipse中Java文件图标由实心J变成空心J的问题
- mysql5.7 5.6从库_mysql5.7搭建主从库
- html导入excel文件,使用js-xlsx简单实现一个导入excel
- vba 修改access表的链接地址_VBA中常用的这7种数据类型,你都get到了吗?