对mysql设计范式的理解

2015/06/0123:50:36对mysql设计范式的理解已关闭评论 970

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,还又称完美范式)。对于web系统开发的数据库设计时候,有必要学习实体-联系模型(简称E-R模型)的知识。本文主要学习MySQL设计的三大范式。

Tips

关系实质上是一张二维表,其中每一行是一个元组,每一列是一个属性。
BCNF包含了3NF包含2NF包含1NF。
范式是递增的,要满足第二范式,必须满足第一范式。

什么是范式?

简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。

什么是三大范式:

第一范式(1NF):

1、每一列属性都是不可再分的属性值,确保每一列的原子性。当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。
2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。

第二范式(2NF):

如果关系模式R满足第一范式,并且R的所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。确保表中的每列都和主键相关。还可以理解为:对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性。

第三范式(3NF):

属性不依赖于其它非主属性,要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,称满足第三范式,记为3NF。确保每列都和主键列直接相关,而不是间接相关。还可以理解为:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。

小结
目的:规范化目的是使结构更合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新。

原则:遵从概念单一化 "一事一地"原则,即一个关系模式描述一个实体或实体间的一种联系。规范的实质就是概念的单一化。

三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。不能一味的去追求范式建立数据库。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin