数据库设计 三大范式

英文名称是Normal
Form,它是英国人E.FCodd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模板后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,4NF,BCNF
5NF,DKNF,6NF.通常所用到的只是前三个范式,即第一范式,第二范式,第三范式.

一.数据库规范化

 

第一范式

  • 第一范式的目标是确保每列的原子性,如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式.

图片 1图片.png

如果数据库没有进行相应的规范设计,虽然在查询数据库可能会比较容易,但有时会造成一些问题,主要的问题如下:

 

第二范式

  • 第二范式要求每个表只描述一件事情.是在第一范式的基础上更进一层,第二范式需要确保数据库表中每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言).也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中.

图片 2图片来自网络.jpg

1.信息重复(会造成储存空间的浪费及一些其他问题).

数据库设计的定义:规划数据库中数据对象以及之间关系的过程。

第三范式

* 如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式. 

图片 3图片来自网络.jpg

其实 说实话 我到现在也不是特别懂这是个什么鬼,希望大神指点啊!!!!!!

2.更新异常(冗余信息不仅浪费空间,还会增加更新的难度).

为什么进行数据库设计?

3.插入异常

  空间

4.删除异常(在某些情况下,当删除一行时,可能会丢失有用的信息).

  完整性

二.三大范式

  程序开发

1.第一范式:

数据库设计前提知识:

目标是确保每列的原子性.如果每列都是不可再分的最小数据单元,则满足第一范式.

图片 4

2.第二范式:

图片 5

第二范式在第一范式的基础上更进一层,其目标是确保表中的每列都和主键相关,也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中.如果一个关系满足第一范式,并且除了主键以外的其他列都依赖与该主键.则满足第二范式.

范式:

3.第三范式:

  1NF:第一范式

第三范式在第二范式的基础上更进一层,第三范式的目标是确保每列都和主键列直接相关,而不是间接相关.如果一个关系满足第二范式,并且除了主键以外的其他列都这能依赖于主键列,列和列之间不存在相互依赖关系,则满足第三范式.

    第一范式的目标是确保每列的原子性

 

    如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)

1.第一范式(1NF)
  在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
 
 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含
一个实例的信息。例如,对于员工信息表,不能将员工信息都放在一列中显示,也不能将其中的两列或多列在一列中显示;员工信息表的每一行只表示一个员工的信
息,一个员工的信息在表中只出现一次。简而言之,第一范式就是无重复的列。

图片 6

2.第二范式(2NF)
  第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式
(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。如
员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此每个员工可以被惟一区分。这个惟一属性列被称为主关键字或主键、主
码。
  第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和
主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简
而言之,第二范式就是非主属性非部分依赖于主关键字。

 

3.第三范式(3NF)
  满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含
已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息
表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,
否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。

  2NF:第二范式

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website