1. 数据库的三范式是什么????

范式=规范,原则上是必须遵循的(但是需求不同可以不遵循),特殊情况可以不遵循

第一范式(1NF):符合数据表的原子性【就是每一个属性不可再分】

表中的同一列数据相同

一个列名只能对应一列

并且每一列都不可再分

行的上下关系互不影响(看不懂这里没关系,例子懂了就行

举例:第一个是不满足第一范式的 【是可以再分的】(将签到的两行改成一行就满足一范式了)

这个例子就是满足一范式的。

第二范式(2NF):消除了非主属性对于码【主属性的集合】的部分函数依赖(简单来说:表中的非主属性【姓名】必须完全依赖于主属性【学号】,也就是说通过主属性能够获取到一个唯一的姓名。)

名词解释;

码(候选码):就是主属性的集合。 有了码就可以获取到码对应的其他属性【id【主属性】确定--就可以确定 姓名 系名和系主任 (非主属性)。课名【主属性】可以获取分数【非主属性】】

主属性:码里面的属性就是主属性,包括id,课名。

非主属性:不是主属性的就是非主属性,包括姓名和系名和系班主任,分数。

函数依赖:函数y=f(x)代表给定一个x值,y的值也是确定的。在数据表中,如果属性x确定的情况下,必定能确定Y的值,那么就说Y函数依赖于X 写作X---Y。

比如在表中,给定一个学号,必定能够获取到唯一的一个姓名。那么就说明姓名依赖于函数学号。写作:学号---姓名。

在表中的以来函数还有

学号---系名

学号---系班主任

完全函数依赖:举例说明:(学号、课名)---成绩【成绩【非主属性】依赖于学号和课名【都是主属性】才能获取唯一的成绩】,少任意一个主属性都不能获取唯一的成绩(学生的分数必须依赖于两个主属性【id和课名】才能获取到唯一的成绩【非主属性】)

完全函数依赖表格举例

部分函数依赖:举例说明:姓名【非主属性】只需要通过id【主属性】就可以确定,不需要另一个主属性(课名),这就叫部分函数依赖(姓名部分函数依赖于id和课名(就是姓名并不是需要通过两个主属性才能获取到,姓名只依赖于id))

第三范式(3NF):在二范式的基础上,消除了非主属性对于码的传递函数依赖。也就是说,如果存在非主属性对于码的传递函数依赖,则不符合三范式的要求

传递函数依赖:如果Y依赖于X,Z又依赖于Y,那可以说Z依赖于X。

比如:系名依赖于id(学号),系主任依赖于系名,那么系主任传递函数依赖于学号。不满足三范式,那么如何解决呢?将其分为更细的表(从而增删改查一条信息不会对其他表造成很大的影响)

综合下来:可以发现三个范式,就是将表中的数据拆分成对应的更细的表【增删改查一个不会对其他的所有表的数据造成影响】,

注意:原则上是不能违反三范式的,但是有的时候我们为了增强查询效率【不用关联查询,直接单表查询】,会设计一些冗余字段,变多表查询为单表查询。称之为反三范式

================================简化版本=================================

范式就是规范,就是要遵守的原则。一般要遵守有三种范式

1NF(1范式): 设计数据库表的列的时候,这些列唯一,不可拆分列的原子性,其实这种范式可以不用管,关系型数据库默认都满足。

2NF(2范式):表中行是唯一,通常设计一个主键来实现,通过主键就可以查询到对应的信息。

3NF(3范式): 如果一张表的数据能够通过其他表的外键推导出来,不应该单独设计,通过外键的方式关联查询出来。【避免冗余字段

综合下来:可以发现三个范式,就是将表中的数据拆分成对应的更细的表【增删改查一个不会对其他的所有表的数据造成影响】,

注意:原则上是不能违反三范式的,但是有的时候我们为了增强查询效率【**变多表查询为单表查询】,会设计一些冗余字段,变多表查询为单表查询。称之为反三范式**

数据库三范式【看了就有收获,最简单的例子解释】相关推荐

  1. 如何在数据库三范式的基础上进行数据库冗余设计

    数据库设计过程中不仅要考虑遵循第三范式,还要考虑是否冗余 很多数据库设计书籍都强调数据库设计三范式,而三范式的一个重要工作就是消除冗余,可以消除冗余在大多数情况下是正确的.当在实际的业务模型中,处理复 ...

  2. python学习笔记 day44 数据库三范式

    参考自 https://www.cnblogs.com/wangfengming/articles/7929118.html 1. 数据库三范式概念: 为了建立减少冗余,结构合理的数据库,涉及数据库时 ...

  3. 为什么我不喜欢数据库三范式

    插曲 最近,一个远房亲戚的小表弟准备选修专业 找到我问: "哥,现在学数据库有没有前途阿?""当然有啊,前途大大的呢""那我现在开始学数据库,需要先从 ...

  4. MySQL笔记(七)数据库三范式

    这是我在学习Mysql之路上做的笔记,今天将它粘出来.这一篇主要是数据库三范式.有错误的欢迎大家指出... 数据库三范式 (1)第一范式(1NF): 定义:每一列都是不可分割的原子数据项(强调的是列的 ...

  5. 数据库三范式 无重复列 完全依赖主键 属性不依赖非主属性

    参考:http://www.cnblogs.com/xrq730/p/5100442.html 细说数据库三范式 2.1 第一范式(1NF)无重复的列,保证每列的原子性,即每一列的各个属性值之间不能有 ...

  6. 三句话归纳数据库三范式

    数据库三范式,网友已经总结n多了,这里不再赘述. 其实,归纳起来,就三句话: 一:行不可再分 二:列不可再分 三:列不可重复

  7. 从数据库三范式角度分析一对多、多对多和一对一关系

    文章目录 前言 一.三范式的目的 二.三范式及其对应关系 1.第一范式 2.第二范式 3.第三范式 4.一对一关系 总结 前言 几乎绝大多数项目的最终目的都是通过操作数据库来实现的,所以,操作数据库的 ...

  8. 数据库三范式通俗理解 -数据库三范式官方定义

    数据库三范式 官方定义 第一范式(1NF):数据库表中的字段都是单一属性的,不可再分. 第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖 第三范式(3NF):在第二范式的 ...

  9. MySql——数据库三范式

    用于自己学习时的简单解释 数据库三范式:是数据库的设计原则,主要目的是为了避免数据冗余. 数据库的设计应当遵循三范式 第一范式:任何一张表都应该有主键,每一个字段必须具有原子性不可再分 第二范式:在第 ...

最新文章

  1. 如何估算大型项目的工作量
  2. python 字符串%和format_python基础任务二
  3. STM32使用LWIP库新建tcp_sever
  4. oracle窗口累计函数,oracle 窗口函数 (keep)
  5. HelloMybatis
  6. TI单芯片毫米波雷达代码走读(十七)—— 恒虚警(CFAR)检测浅谈
  7. 编程模拟高尔顿钉板(正态分布)C++
  8. Linux入门基础教程
  9. 硬件工程师和软件工程师哪个更有前途?我会告诉你嵌入式工程师更有前途
  10. 数据分析实战(二) 基于美国人口adult数据集R语言分析实战
  11. latch mysql_关于MySQL latch争用深入分析与判断
  12. 【批量去除图片的背景】
  13. 【JavaScript】预解析
  14. 2011年养成的一个工作习惯
  15. 【ubuntu】ls颜色的含义
  16. 28天打造专业红客(十一)
  17. 用IDEA进行Java后台开发(一)
  18. antd+react ---手机号校验(流程中使用)
  19. Fortran 95 固定过程
  20. The King’s Ups and Downs HDU - 4489

热门文章

  1. 前端自学日记-day3
  2. 用word2007自动生成目录的两种方法
  3. STM32微控制器 | 复习七 | 定时器原理及应用
  4. 数学建模之优化问题中的规划问题
  5. 教你们怎么从菜鸟级别到电脑高手,一定要收藏起来
  6. [iOS开发项目-8] 喜马拉雅电台
  7. 利用键盘快速打开应用程序
  8. C#使用NPOI实现导入导出Excel数据
  9. Cesium插件 For UE基本使用
  10. ESP32 + Python守护家庭健康、自己动手做个甲醛浓度检测设备