mysql 三范式及逆范式

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 数据库设计当中三范式是经常遇到的1.第一范式第一范式(1NF)所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

数据库设计当中三范式是经常遇到的

1.第一范式

第一范式(1NF)所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。

在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
确保数据表中每列(字段)的原子性。列不可分。

如果数据表中每个字段都是不可再分的最小数据单元,则满足第一范式。

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

2. 第二范式(依赖性)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一的区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。要求实体的属性完全依赖于主关键字。不能部分依赖。即:一张表存在组合主键时,其他非主键字段不能部分依赖。
在第一范式的基础上更进一步,目标是确保表中的每列都和主键相关。

如果一个关系满足第一范式,并且除了主键之外的其他列,都依赖于该主键,则满足第二范式。

例如:一个用户只有一种角色,而一个角色对应多个用户。则可以按如下方式建立数据表关系,使其满足第二范式。

user用户表,字段id,username,password,role_id

role角色表,字段id,name

用户表通过角色id(role_id)来关联角色表

3. 第三范式(唯一性)

满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。
表中的非主属性必须依赖于主属性才能被获取、减少依赖,①数据冗余问题不能有重复信息;②如有大量的重复信息,应该另建表。

4. 逆范式

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

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

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
21天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
4月前
|
存储 关系型数据库 MySQL
认真学习MySQL中的几种范式设计
认真学习MySQL中的几种范式设计
55 0
|
6月前
|
存储 SQL 关系型数据库
MySQL数据库范式详解
范式是数据库设计中的一种理论方法,旨在通过减少数据冗余来提高数据存储的有效性和完整性。在MySQL数据库中,范式设计是一个重要的概念,它有助于组织和管理数据,确保数据的一致性和可靠性。本文将深入探讨数据库范式,包括不同范式的概念、优缺点以及示例代码。
353 1
|
6月前
|
SQL 存储 关系型数据库
MySQL基础下篇[表的创建/约束的使用/事务和范式以及索引的使用]~3
MySQL基础下篇[表的创建/约束的使用/事务和范式以及索引的使用]~
|
6月前
|
存储 SQL 关系型数据库
MySQL基础下篇[表的创建/约束的使用/事务和范式以及索引的使用]~2
MySQL基础下篇[表的创建/约束的使用/事务和范式以及索引的使用]~2
|
6月前
|
SQL 存储 关系型数据库
MySQL基础下篇[表的创建/约束的使用/事务和范式以及索引的使用]~1
MySQL基础下篇[表的创建/约束的使用/事务和范式以及索引的使用]~
|
9月前
|
关系型数据库 MySQL 数据库
mysql数据库三大范式
设计数据库时,需要遵循的一些规范,要遵循后边的范式要求,必须先遵循前边的所有范式要求 数据库范式 第一范式:(1nf):每一列都是不可分割的原子数据 第二范式:(2nf):在1nf的基础上,非码属性必须完全依赖于候选码(1nf基础上消除非主属性对主码的部分函数依赖) 第三范式:(3nf):在2nf基础上,任何非主属性不依赖于其他非主属性(在2nf基础上消除传递依赖)
35 0
|
10月前
|
存储 关系型数据库 MySQL
【MySQL数据库基础 六】数据库三范式
【MySQL数据库基础 六】数据库三范式
68 0
|
12月前
|
存储 关系型数据库 MySQL
【MySQL】数据库的设计规范(重点:三大范式)
本文重点介绍MySQL的三大范式、反范式化和巴斯范式的一些问题。
158 0
|
SQL 关系型数据库 MySQL
MySQL——数据库设计三范式
第二范式:建立在第一范式的基础之上,要求所有非主键字段完全依赖主键, 不要产生部分依赖。
99 0
MySQL——数据库设计三范式