先来复习一下数据库设计三范式:
第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要
求,否则,将有很多基本操作在这样的关系模式中实现不了。
第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。
第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF。
范式的优点和缺点:
1.范式化的更新操作通常比反范式要快。
2.当数据较好地范式化时,就只有很少或者没有重复数据,所以只需要修改更少的数据。
3.范式化的表通常更小,可以更好地放在内存里,所以执行操作更快。
4.很少有冗余的数据意味着建所列表数据时更少需要DISTINCT或者GROUP BY语句。
缺点:需要关联表,当一个查询有过多的关联时,不仅代价昂贵,也可能使得一些索引策略无效。
纯粹的范式和反范式在现实项目中是不存在的,只在实验室中存在,在实际项目中要根据实际需求,范式和反范式搭配使用,得出最优解。