数据库的三大范式是什么?什么时候会有意反范式?
先自己想一想,再看参考要点
参考要点
- 第一范式:属性不可分,例如“联系方式”中同时存电话和邮箱,要拆成两列
- 第二范式:每个非主属性完全函数依赖于键码,例如以(学号,课程)为键的选课表中,姓名、学院只依赖学号,要拆成学生表和成绩表
- 第三范式:非主属性不传递依赖于键码,例如学号决定学院、学院决定院长,要把学院和院长拆出去
- 范式减少冗余和修改异常,代价是查询时要连接更多的表
- 反范式有意保留冗余,例如在文章表中保存评论数,查询不必每次 COUNT,但增删评论时要同时更新它