Mysql范式与反范式的利弊
Mysql范式与反范式的利弊
一、三大范式
第一范式
1NF是对属性的原子性,要求属性具有原子性,不成再分解;
第一范式是最根本的范式。假如数据库表中的所有字段值都是不成分解的原子值,就说明该数据库表知足了第一范式。数据库表的每一列都是不成分割的原子数据项,而不克不及是汇合,数组,记载等非原子数据项。简而言之,第一范式就是无反复的域。
第二范式
2NF是对记载的唯一性,要求记载有唯一标识,即实体的唯一性,即不存在部分依靠;
知足第二范式必需先知足第一范式。第二范式需要确保数据库表中的每一列都和主键相关,而不克不及只与主键的某一部分相关(主要针对结合主键而言)。也就是说在一个数据库表中,一个表中只能留存一种数据,不成以把多种数据留存在统一张数据库表中。
第三范式
3NF是对字段的冗余性,要求任何字段不克不及由其他字段派生出来,它要求字段没有冗余,即不存在传递依靠;
第一是 2NF,别的非主键列必需直接依靠于主键,不克不及存在传递依靠。即不克不及存在:非主键列 A 依靠于非主键列 B,非主键列 B 依靠于主键的状况。简而言之,第三范式(3NF)要求一个关系中不包括已在其它关系已包括的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不克不及再将部门名称、部门简介等与部门有关的信息再参加员工信息表中。
范式的利弊:
长处:范式可以幸免数据冗余,减少数据库的空间,减轻保护数据完全性的费事。
缺陷:依照范式的标准设计出来的表,等级越高的范式设计出来的表越多。如第一范式大概设计出来的表大概只要一张表罢了,再依照第二范式去设计这张表时就大概出来两张或更多张表,假如再按第三范式或更高的范式去设计这张表会显现更多比第二范式多 的表。表的数目越多,当我们去查询一些数据,必定要去多表中去查询数据,这样查询的时间要比在一张表中查询中所用的时间要高许多。也就是说我们所用的范式越高,对数据操纵的机能越低。所以我们在利用范式设计表的时候,要按照详细的需求再去权衡可否使用更高范式去设计表。
引荐 《mysql视频教程》
二、反范式
故名思义,跟范式所要求的恰好相反,在反范式的设计模式,我们可以同意恰当的数据的冗余,用这个冗余去取操纵数据时间的缩短。也就是用空间来换取时间,把数据冗余在多个表中,当查询时可以减少或者是幸免表之间的关联。
反范式的利弊:
长处:查询时可以减少表的关联;可以更好的停止索引优化;
缺陷:存在数据冗余乃至数据保护非常;对数据的修改需要更多的成本;
以上就是Mysql范式与反范式的利弊的具体内容,更多请关注百分百源码网其它相关文章!