Mysql——》范式
推荐链接:
总结——》【Java】
总结——》【Mysql】
总结——》【Redis】
总结——》【Kafka】
总结——》【Spring】
总结——》【SpringBoot】
总结——》【MyBatis、MyBatis-Plus】
Mysql——》范式
- 三范式
- 范式化
- 反范式化
- 范式化 VS 反范式化
- 总结
三范式
第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;
第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;
第三范式:3NF是对字段的冗余性约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。
范式化
优点:可以尽量得减少数据冗余,使得更新快,体积小
缺点:对于查询需要多个表进行关联,减少写得效率增加读得效率,更难进行索引优化
反范式化
优点:可以减少表得关联,可以更好得进行索引优化
缺点:数据冗余以及数据异常,数据得修改需要更多的成本
常见的反范式设计:缓存、冗余
范式化 VS 反范式化
不同点 | 范式化 | 反范式化 |
---|---|---|
内存占用 | 小 | 大 |
更新操作 | 快 | 慢 |
数据重复度 | 低 | 高 |
查询表关联 | 多 | 少 |
查询索引命中率 | 低 | 多 |
总结
三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。