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表的次数。
---------------------
作者:lamp_yang_3533
来源:CSDN
原文:https://blog.csdn.net/lamp_yang_3533/article/details/50765183
版权声明:本文为博主原创文章,转载请附上博文链接!

MySQL三大范式和反范式的更多相关文章

  1. MySQL中数据中设计中的范式与反范式

    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小.但是有些时候一昧的追求范式减少冗余,反而会降低数据读写 ...

  2. 数据库三大范式和反范式 · oldmee

    后一个范式都是在满足前一个范式的基础上建立的. 1NF 无重复的列.表中的每一列都是不可分割的基本数据项.不满足1NF的数据库不是关系数据库.如联系人表(姓名,电话),一个联系人有家庭电话和公司电话, ...

  3. 【mysql的设计与优化专题(2)】数据中设计中的范式与反范式

    设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小.但是有些时候一昧的追求范式减少冗余,反而会降低数据读写 ...

  4. mysql 范式和反范式

    第一范式(1NF)强调的是列的原子性,即列不能够再分成其他几列. 第二范式(2NF) 首先是 2NF,另外包含两部分内容一是表必须有一个主键:二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于 ...

  5. mysql数据结构优化,范式和反范式

    1.范式,正常的建表,反范式,为了提高效率,适当的已空间换时间 2.垂直拆分,就是把经常用的.或者text大存储的字段单独拉出来存表 3.水平拆分,解决数据量大的问题,进行取莫的方式将数据放到相同的n ...

  6. mysql三大特性、三范式、五大约束

    1.数据库的三大特性 '实体':表 '属性':表中的数据(字段) '关系':表与表之间的关系 2.数据库设计三大范式 a:确保每列保持原子性(即数据库表中的所有字段值是不可分解的原子值) b:确保表中 ...

  7. JavaSE基础篇—MySQL三大范式—数据库设计规范

    1.概   念     范式是一种符合设计要求的总结,要想设计一个结构合理的关系型数据库,必须满足一定的范式.各个范式是以此嵌套包含的,范式越高,设计等级越高,在现实设计中也越难实现,一般数据库只要打 ...

  8. [MySQL] 关系型数据库的设计范式 1NF 2NF 3NF BCNF

    一.缘由: 要做好DBA,就要更好地理解数据库设计范式.数据库范式总结概览: 为了更好地理解数据库的设计范式,这里借用一下知乎刘慰老师的解释,很通俗易懂.非常感谢!   二.具体说明: 首先要明白”范 ...

  9. 数据库设计范式2——BC范式和第四范式

    我在很久之前的一篇文章中介绍了数据库模型设计中的基本三范式,今天,我来说一说更高级的BC范式和第四范式. 回顾 我用大白话来回顾一下什么是三范式: 第一范式:每个表应该有唯一标识每一行的主键. 第二范 ...

随机推荐

  1. win10 requireAdministrator设置开机自启动无效的解决方案

    开发了一个wpf程序,需要管理员权限,设置了requireAdministrator 同时需要开机自启动,所以添加了注册表: using (RegistryKey key = Registry.Cur ...

  2. Luogu 3704 [SDOI2017]数字表格

    列一下式子: $\prod_{i = 1}^{n}\prod_{j = 1}^{m}fib_{gcd(i, j)}$ 很套路的变成这样: $\prod_{d = 1}^{min(n, m)}fib_{ ...

  3. Luogu 2322 [HNOI2006]最短母串问题

    唔,太菜了,弄了好几个小时. 状压dp,设$f_{s, i}$表示选了集合$s$,以$i$结尾的最短长度,设$g_{i, j}$表示串$i$的后缀和串$j$的前缀的最长匹配长度. $f_{s, i} ...

  4. 更新anaconda及所有包

    ################################## # 更新Anaconda conda update conda # 更新所有包 conda update --all ###### ...

  5. PDG科普篇

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2009.09.26 更新历史 2014.11.11补充了文字版PDG的部分内容增加CX PDF等打包格式的相关内容 2009 ...

  6. 毛玻璃CHBlurEffect

    1.将需要加入毛玻璃的UI控件传入接口即可 1.1 .h文件 // // 文 件 名:CHBlurEffect.h // // 版权所有:Copyright © 2018年 leLight. All ...

  7. javascript判断访问终端,手机端自动跳转

    在网页的顶部加入javascript判断代码: function checkserAgent(){ var userAgentInfo=navigator.userAgent; var userAge ...

  8. tomcat8性能优化

    在tomcat/catalina.sh中加入下面的配置,内存要根据机器实际情况配置,如果配置内存太大了有可能机器很慢. JAVA_OPTS="-server -Xms512m -Xmx512 ...

  9. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre

    原文链接:https://blog.csdn.net/hq091117/article/details/79065199 https://blog.csdn.net/allen_tsang/artic ...

  10. pg10.1 orafce3.6 安装

    安装unzip orafce-mastermv orafce-master /opt/soft_bak/postgresql-10.1/contribcd /opt/soft_bak/postgres ...