范式
第一范式
排除 重复组 的出现,因此要求数据库的每个列的值域都由原子值组成;每个字段的值都只能是单一值
第二范式
表中必须存在业务主键,并且非主键依赖于全部业务主键。
第三范式
表中的非主键列之间不能相互依赖
反范式
反范式的过程就是通过冗余数据来提高查询性能,但冗余数据会牺牲数据一致性
范式:
优点:
范式化的更新通常比反范式要快
当数据较好的范式化后,很少或者没有重复的数据
范式化的数据比较小,可以放在内存中,操作比较快
缺点:
通常需要进行关联
反范式:
优点:
所有的数据都在同一张表中,可以避免关联
可以设计有效的索引
缺点:
表格内的冗余较多,删除数据时候会造成表有些有用的信息丢失
注意点:
在企业中很好能做到严格意义上的范式或者反范式,一般需要混合使用
如:
1、另一个从父表冗余一些数据到子表的理由是排序的需要。
2、缓存衍生值也是有用的。如果需要显示每个用户发了多少消息(类似论坛的),可以每次执行一个昂贵的自查询来计算并显示它;也可以在user表中建一个num_messages列,每当用户发新消息时更新这个值。
范式设计:

反范式设计:

文章转载自懒人实录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




