Mysql的三大范式与反范式

一、三大范式

1.第一范式:

  保证表中的 字段原子性(就是字段是最小的数据单元,不可再分了)

  例如:user用户表,包含字段id,username,password

 

2.第二范式:
  在第一范式的基础上,确保表中的每个字段都和主键相关(除了主键之外的其他列,都依赖于该主键)

  例如:一个用户只有一种角色,而一个角色对应多个用户。则可以按如下方式建立数据表关系,使其满足第二范式。
  user用户表,字段id,username,password,role_id
  role角色表,字段id,name
  用户表通过角色id(role_id)来关联角色表

 

3.第三范式:
  在第二范式的基础上,确保表中的每个字段都和主键直接相关()

  例如:一个用户可以对应多个角色,一个角色也可以对应多个用户。则可以按如下方式建立数据表关系,使其满足第三范式。
  user用户表,字段id,username,password
  role角色表,字段id,name
  user_role用户-角色中间表,id,user_id,role_id
  像这样,通过第三张表(中间表)来建立用户表和角色表之间的关系,同时又符合范式化的原则,就可以称为第三范式。

 

二、反范式

  通过去除外键、增加冗余(重复)的数据来提高数据库的读性能

  例如:在上例中的user_role用户-角色中间表增加字段role_name
  反范式化可以减少关联查询时,join表的次数,提高增删改效率

 

---------------------------------------------------

作者:沫小淘
参考:博客园
原文:https://www.cnblogs.com/moxiaotao/p/10120672.html
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2021-01-05 18:17  road2master  阅读(184)  评论(0)    收藏  举报