欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

数据库三范式和反范式

程序员文章站 2022-03-16 17:32:46
...
在日常开发过程中,我们需要对Mysql数据库进行操作,这就涉及到表的构建,如何创建一个结构良好的数据库表,就需要遵循以下3个数据库范式。

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

像这样,通过第三张表(中间表)来建立用户表和角色表之间的关系,同时又符合范式化的原则,就可以称为第三范式。

4. 反范式化

反范式化指的是通过增加冗余或重复的数据来提高数据库的读性能。

例如:在上例中的user_role用户-角色中间表增加字段role_name。

反范式化可以减少关联查询时,join表的次数。

以上就是我整理到的关于MYSQL数据库的建表范式,希望今后会对大家有所帮助。

相关文章:
MySQL索引优化之覆盖索引

mysql字段类型选择方法

mysql锁和索引之间的联系

以上就是数据库三范式和反范式的详细内容,更多请关注其它相关文章!

相关标签: 数据库 范式