三范式和反范式
第一范式:强调原子性,即列不能再分。
第二范式:强调唯一性,即必须有主键,其他列必须完全依赖于主键,不能部分依赖,
第三范式:任何非主键列只能依赖于主键,不能依赖于其他(others)列。即满足第一范式前提,当存在多个主键的时候,才会发生不符合第二范式的情况。比如有两个主键,不能存在这样的属性,它只依赖于其中一个主键,这就是不符合第二范式。
这样理解感觉范式很简单嘛。也许当初想的多了。而且没用专业术语说,嗯懂了就行。
三范式是时间换空间,不适合对高性能的要求。因而出现了反范式
反范式:
没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,减少了查询时的关联,提高查询效率。