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

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

  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. 入机器学习大坑,需要什么样的数学水平?
  2. 你了解如何用GAN做语义分割吗
  3. groovy 兼容 java,升级Groovy 1.7 - 2.1不兼容
  4. python写电脑程序_【初学者教程】在电脑上安装Python,写第一个程序
  5. html 图片展示 3d,CSS3 3D图像显示
  6. oracle排名怎么去除空值影响,Oracle排序中常用的NULL值处理方法
  7. 10分钟学会python函数式编程,赶紧收藏!!
  8. 使用firefox44版本,弃用chrome
  9. MySQL中NOT IN语句对NULL值的处理
  10. MySQL增删改查--之删
  11. RBAC权限认证流程图
  12. Java网络编程——UDP编程
  13. WhbtomT(半路出家) 的每日英语 收集 (三)
  14. 均线颜色怎么区分_均线入门:一图学会区分不同均线的颜色与炒股技巧
  15. MongoDB极简实践入门
  16. 安卓模拟PC浏览器发送http请求
  17. 伊利诺伊理工大学舒凯招收多名全奖博士生
  18. 青鸟s1java云题库答案_北大青鸟S1java内部测试试卷(试题)
  19. Android APP native 崩溃分析之 linker SIGBUS 崩溃
  20. eating的中文意思_eating是什么意思_eating的翻译_音标_读音_用法_例句_爱词霸在线词典...

热门文章

  1. c语言50到100套,c语言51-100套试题答案及详解.pdf
  2. python pptx 从中间加几页_python-pptx---插入表格
  3. android里的editText怎么用,Android自定义控件EditText使用详解
  4. html监听页面关闭事件,JS针对浏览器窗口关闭事件的监听方法集锦
  5. 基于CSDN完成TEASOFT的MOOC编辑整理
  6. 第十七届全国大学智能车竞赛赛区划分
  7. Eclipse中Java文件图标由实心J变成空心J的问题
  8. mysql5.7 5.6从库_mysql5.7搭建主从库
  9. html导入excel文件,使用js-xlsx简单实现一个导入excel
  10. vba 修改access表的链接地址_VBA中常用的这7种数据类型,你都get到了吗?