第一范式

存在非主属性对码的部分依赖关系 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 Malekkkk@ee.net 222456

20040902 mary famalekkk@fff.net 123455

第二范式

存在非主属性对码的传递性依赖 R(A,B,C) A是码 A -->B ,B-->C

定义:如果关系模式R是第一范式的,而且关系中每一个非主属性不部分依赖于主键,称R是第二范式的。

所以第二范式的主要任务就是

满足第一范式的前提下,消除部分函数依赖。

StudyNo | Name | Sex | Email | Phone | ClassNo | ClassAddress

01 john Malekkkk@ee.net 222456 200401 A楼2

01 mary famalekkk@fff.net 123455 200402 A楼3

这个表完全满足于第一范式,

主键由StudyNo和ClassNo组成,这样才能定位到指定行

但是,ClassAddress部分依赖于关键字(ClassNo-〉ClassAddress),

所以要变为两个表

表一

StudyNo | Name | Sex | Email | Phone | ClassNo

01 john Malekkkk@ee.net 222456 200401

01 mary famalekkk@fff.net 123455 200402

表二

ClassNo | ClassAddress

200401 A楼2

200402 A楼3

第三范式

不存在非主属性对码的传递性依赖以及部分性依赖 ,
StudyNo | Name | Sex | Email | bounsLevel | bouns

20040901 john Malekkkk@ee.net 优秀 $1000

20040902 mary famalekkk@fff.net 良 $600

这个完全满足了第二范式,但是bounsLevel和bouns存在传递依赖

更改为:

StudyNo | Name | Sex | Email | bouunsNo

20040901 john Malekkkk@ee.net 1

20040902 mary famalekkk@fff.net 2

bounsNo | bounsLevel | bouns

1 优秀 $1000

2 良 $600

这里我比较喜欢用bounsNo作为主键,

基于两个原因

1)不要用字符作为主键。可能有人说:如果我的等级一开始就用数值就代替呢?

2)但是如果等级名称更改了,不叫 1,2 ,3或优、良,这样就可以方便更改,所以我一般优先使用与业务无关的字段作为关键字。

一般满足前三个范式就可以避免数据冗余。

第一范式,第二范式,第三范式相关推荐

  1. MySQL (4) 第一范式 第二范式 第三范式 BC范式

    第一范式 第一范式:所有属性都是不可分割的原子值. 也就是每个属性都是不可再分的. 例如下图就不符合第一范式的要求 实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS) ...

  2. 第一范式第二范式第三范式学习笔记

    三楚白云生佛手,九江寒月照禅心. --李日华<佛手岩> 文章目录 前言 一.第一范式(1NF) 二.第二范式(2NF) 三.第三范式(3NF) 四.参考学习视频 五.名词解释&知识 ...

  3. 第一范式 第二范式 第三范式 BC范式

    第一范式 第一范式:所有属性都是不可分割的原子值.  也就是每个属性都是不可再分的.  例如下图就不符合第一范式的要求   实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RD ...

  4. 第一范式 第二范式 第三范式理解

    数据库中设计一个好的标准化范式能大大减少数据冗余,增强数据的易操作性. 范式的演变: 第一范式:表中没有重复数据组 属性不可以再分,具有一个主键(主键组) 例如: 出现从重复的数据组,把它转换为第一范 ...

  5. java的第一范式,数据库第一范式第二第三范式关系详解

    一.范式的定义 程序员在做数据库设计时不是心血来潮胡乱设计的,而是需要遵循一定的规范而为之,这些规范就是为了设计出合理而实用的数据库而总结的的,专门适用于任何关系型数据库. 数据库设计在很大程度上取决 ...

  6. 第一范式、第二范式、第三范式、巴斯-科德范式、第四范式、主码、候选码、码详解

    目录 数据库逻辑设计 主码.候选码.码 第一范式 第二范式 第三范式 巴斯-科德范式 第四范式 数据库逻辑设计 前面我们讲了第二范式,我们知道还有第三范式,那么第三范式的特点到底是什么呢?下面我们来一 ...

  7. MySQL - 高效的设计MySQL库表

    文章目录 生猛干货 范式与反范式 范式 第一范式 第二范式 第三范式 第二范式 VS 第三范式 设计符合 2NF 的表 范式优缺点 反范式 范式 VS 反范式 MySQL 使用原则和设计规范 基本设置 ...

  8. 面试不知道如何回答这六大知识点,你还敢说熟悉MySQL?

    文章目录 一.事务 什么是事务 事务的四大特性 事务的并发问题 ① 事务并发问题什么时候发生? ② 事务的并发问题有哪些? ③ 如何避免事务的并发问题? 二.索引 什么是索引 索引的优缺点 索引的设计 ...

  9. MySQL(三)数据库的六种约束、表的关系、三大范式

    文章目录 数据库约束 NOT NULL(非空约束) UNIQUE(唯一约束) DEFAULT(缺省约束) PRIMARY KEY(主键约束) AUTO_INCREMENT 自增 FOREIGN KEY ...

  10. 《MySQL——数据表设计三大范式》

    目录 数据表设计范式 第一范式 第二范式 第三范式 数据表设计范式 第一范式 数据表中的所有字段都是不可分割的原子值. 字段值还可以继续拆分的,就不满足第一范式,如下: 下面这个,更加贴合第一范式: ...

最新文章

  1. Ello讲述Haar人脸检测:易懂、很详细、值得 ...
  2. JSP+JavaBean+Servlet技术(MVC模型)
  3. iOS之深入解析分类Category的底层原理
  4. Kalman Filter 学习笔记
  5. 类文件到虚拟机(类加载机制)
  6. Java学习笔记_数组
  7. 52次课(mysql用户管理、常用sql语句、 mysql数据库备份恢复)
  8. 彻底理解js中的和||
  9. php parse url 中文,php parse_url()函数解析URL用法总结
  10. DB破解(暗黑破坏神辅助)使用方法
  11. 51单片机项目设计:WiFi视频小车制作教程、正点原子wifi摄像头模块应用、手机wifi控制
  12. 常用软件静默安装参数
  13. 国际化地区语言码对照表(i18n)
  14. calib matlab,使用Matlab Toolbox_calib进行摄像机标定
  15. 校验社会统一信用代码JAVA
  16. 玩家访问网站自动弹窗加QQ群方法以及详细代码
  17. JMS Message消息头、消息体、消息属性
  18. 推荐一款特别厉害的在线工具,程序员的百宝箱
  19. “龙芯杯”——全国大学生计算机系统能力培养大赛
  20. CUDA----.cpp文件和.cu文件应用区别

热门文章

  1. Python与开源GIS:在OGR中使用SQL语句进行查询
  2. 你是码农还是Geek?
  3. 简单脚本之显示系统当前的一些信息
  4. 我为什么免费给ipad做了一个大广告?
  5. go语言的安装、环境变量配置及简单使用
  6. Troubleshooting OpenStack 瘫痪 - 每天5分钟玩转 OpenStack(160)
  7. opencart配置United States Postal Service快递
  8. struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
  9. CVSNT Manual
  10. 求$N^N$的首位数字