规范化的对象:表数据库
目的:将数据转变成一个有逻辑的、无重复的格式,能够很容易将此格式再从新组合成一个总体。数组
就是减小表的数据冗余,减小数据存储空间,使每一个表的用途更加明确,各表之间的关系更加科学。spa
范式种类:6种。设计
但实际上只须要作到3种范式就能够,后面三种只是有学术讨论的意义。对象
规范化总结:效率
规范化就是键,整个键,只是键。基础
(分别对应第一范式,第二范式,第三范式)搜索
前提:总结
1.表只描述一个实体(不要简化或组合);数据
2.全部行必须惟一,并且必须有一个主键;
3.列和行的顺序必须是无关的。
第一范式:消除重复数组和保证原子性(数据是自包含和独立的)。
原子性:每一列都单独记录一个数据,而不记录过多的数据。好比一个列里,包含了数量,单价和总价。那么就要拆成三列。
第二范式:在第一范式的基础上,每列必须依赖于整个键。
若是一个行是组合键,有一列只依赖于其中一个键,那么就要把这个列单独分在一张表中。好比一行:班级,学号,班主任,座位号。组合键为班级和学号,班主任只依赖于班级。
第三范式:在第二范式的基础上,任何列都不能依赖于非键列,不能有派生的列。
不能有派生列,好比,有两个列:单价和总量,还有另一个列为总价。能够看出,总价是根据单价和总量派生出来的,应该删掉。
mark:有时须要反规范化——添加派生列,好比用户须要常常查询总价,若是进行第三范式,那么用户每次查询总价都要查询另外两列,并进行运算,加大了查询时间。经过反规范化,这里牺牲点存储空间,提升查询效率,是值得的。
反规范化
要记住数据库的设计的原则应该是具备适用性,要根据实际状况灵活设计表格,而不是一味地进行规范化。
好比,添加派生列,能够提升搜索速度,下降查询时间。