每天找回一点点之数据库范式

一、数据库范式的作用是什么?

  为了减少数据库中数据冗余的过程,构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

二、数据库范式有哪几种?

  目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般来说,数据库只需满足第三范式(3NF)就行了。

三、各个范式具体规范是什么?

  1、第一范式

   在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

   第一范式就是属性不可分割性,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。例如我们在表中定义的一个id的字段,就不可以分割。但是定义name字段的话,如果是英文名,会分为first name 和last name,这样的话就不符合原子性了。

  2、第二范式

   在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)。

   也就是说,第二范式要求表中必须有主键,表中其他字段必须完全依赖主键。比如我们定义的信息表中有个身份ID的属性,那么这个属性是唯一的,

在一张表中是不可以重复的,并且其他所有的信息都依赖于身份ID这个字段而变化。

  3、第三范式

  在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

  就是要求表中不能有其他表中存在的、存储相同信息的字段,通常实现是在通过外键去建立关联,因此第三范式只要记住外键约束就好了。

  例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。

  4、巴斯-科德范式(BCNF)(BC范式)

  在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)

  巴斯-科德范式被认为没有新的设计规范加入,只是对第二范式与第三范式中设计规范要求更强,因而被认为是修正第三范式,也就是说,它事实上是对第三范式的修正,使数据库冗余度更小。这也是BCNF不被称为第四范式的原因。

  5.第五范式(完美范式)

   第五范式是指关系模式R依赖均由R候选码所隐含。

     从最终结构重新建立原始结构。

    第五范式将表分割成尽可能小的块,为了排除在表中所有的冗余.

唯有热爱方能抵御岁月漫长。
原文地址:https://www.cnblogs.com/syq816/p/12359722.html