Mysql性能优化-2.范式

1.第一范式

第一范式: 1NF 只要是关系型数据库,默认满足第一范式
错误案例一:

t_teacher
id 授课时间
1 20190510,20190530
2 20190508,20190529
3 20190509,20190528

改善表为

t_teacher
id 授课开始时间 授课结束时间
1 20190510 20190530
2 20190508 20190529
3 20190509 20190528

错误案例二:

t_article
id summary tag_id
1 Mysql性能优化 1,2,3,4,5,6

改善表为 article, tag

t_article
id summary
1 Mysql性能优化
t_tag
id article_id
1 1
2 1
3 1
4 1
5 1

2.第二范式

2NF 消除对主键部分依赖
主键:可以唯一标识记录的字段或者字段集合。

t_class
老师 性别 班级 教室 开始 结束
孔子 Mysql01 J308 19:00 21:00
李清照 诗词 W2011 10:00 12:00
孔子 Mysql02 J307 14:00 16:00

通过老师和班级组成复合主键,然而性别对老师有依赖,也就是性别、教室都与主键有部分依赖
改善方案:

t_class
id 老师 性别 班级 教室 开始 结束
1 孔子 Mysql01 J308 19:00 21:00
2 李清照 诗词 W2011 10:00 12:00
3 孔子 Mysql02 J307 14:00 16:00

3.第三范式

3NF 消除对主键的传递依赖

t_class
id teacher_id 班级 教室 开始 结束
1 1 Mysql01 J308 19:00 21:00
2 2 诗词 W2011 10:00 12:00
3 1 Mysql02 J307 14:00 16:00
t_teacher
id 姓名 性别
1 孔子
2 李清照

4.总结

满足第三范式
  • 独立数据独立建表
  • 表中存在与业务逻辑无关的ID主键
  • 表之间的关系由关联字段(关联表)进行表示
优势
  • 减少数据冗余
  • 易于维护更新

你可能感兴趣的:(Mysql性能优化-2.范式)