你还记得数据库三范式吗?

简介: 你还记得数据库三范式吗?

前言

“学长,SqlServer数据库三范式可以简单帮我理解一下吗?”。

学妹的一句话把我问蒙了,因为三范式的概念早就丢到外太空去了。

但是呢,我不能直接说我忘记了,为了不影响在学妹心目中的形象(你懂的),我还特意去百度查了一下。

然后整理了一下,大家如果有和我一样忘记了的可以看一下(概念+举例),浅显易懂。

数据库三范式

  1. 第一范式(1NF):第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
  2. 第二范式(2NF):第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一的区分。
  3. 第三范式(3NF):满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

一般地,在进行数据库设计时,应遵循三大原则,也就是我们通常说的三大范式,即第一范式要求确保表中每列的原子性,也就是不可拆分;

第二范式要求确保表中每列与主键相关,而不能只与主键的某部分相关(主要针对联合主键),主键列与非主键列遵循完全函数依赖关系,也就是完全依赖;

第三范式确保主键列之间没有传递函数依赖关系,也就是消除传递依赖。

1. 必须保证数据库设计的合理性

  • 数据库设计关系整个系统的架构,关系到后续的开发效率和运行效率
  • 数据库的设计主要包含了设计表结构和表之间的联系

2. 如何是合理的数据库

  • 结构合理
  • 冗余较小
  • 尽量避免插入删除修改异常

3. 如何才能保证数据库设计水平

  • 遵循一定的规则
  • 在关系型数据库中这种规则就称为范式

4. 什么是范式(NF,NormalForm)

  • 范式是符合某一种设计要求的总结
  • 要想设计一个结构合理的关系型数据库,必须满足一定的范式
  • 各个范式是依次嵌套包含的
  • 范式超高,设计质量超高,在现实设计中也越难实现
  • 一般数据库设计,只要达到第三范式,即可避免异常的出现

 

举例说明

第一范式(概念+举例)

1. 要求

  • 最基本的范式
  • 数据库表每一列都是不可分割的基本数据,同一列中不能有多个值
  • 简单说就是要确保每列保持原子性
  • 第一范式的合理遵循需要根据系统的实际需求来定

2. 示例

第二范式(概念+举例)

1. 要求

  • 第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)
  • 即在一个数据库表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中

2. 示例

 

在上面第一范式示例表中的数据看出,这不符合第二范式,所以进行拆分如下,

 

第一张主键相关为(学号、课程名称),第二张表为(学号),它们都是完全依赖的,因此符合第二范式。

 

       

第三范式(概念+举例)

1. 要求

  • 确保数据表中的每一列数据都和主键直接相关,而不能间接相关
  • 属性不依赖于其他非主属性(消除依赖)

2. 示例

注意看第二范式的学生表:存在系主任依赖于系名 (系名---> 系主任),所以不符合第三范式,继续进行拆分如下:

 

总结

我们看到,第三范式规则查找以消除没有直接依赖于第一范式和第二范式形成的表的主键的属性。

我们为没有与表的主键关联的所有信息建立了一张新表。

每张新表保存了来自源表的信息和它们所依赖的主键。

数据库设计规范化能让我们更好地适应变化,使你能够改变业务规则、需求和数据而不需要重新构造整个系统。

参考文献

三范式:百度百科

三大范式:https://zhuanlan.zhihu.com/p/28528655

数据库设计三大范式:https://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html#undefined

相关文章
|
7月前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
171 0
|
4月前
|
存储 数据库
数据库设计三范式
三范式设计的最终目的都是为了减少我们的工作量,所以说,尽管三范式是一种很好的指导规范,但在实际应用中,我们也不需要太局限在三范式中,更多的是应该从项目中出发,设计出合理的表结构。
|
1月前
|
存储 数据库
数据库设计三范式
数据库设计三范式
25 0
|
4月前
|
存储 算法 Java
数据库范式与设计原则
数据库范式与设计原则
70 0
|
5月前
|
存储 关系型数据库 数据库
关系型数据库设计范式:深入理解与实践
【7月更文挑战第20天】关系型数据库设计范式是数据库设计中的重要指导原则,它通过一系列规范来减少数据冗余、提高数据一致性和优化查询性能。在实际应用中,我们应该根据具体需求和数据特点,灵活选择和应用不同的范式级别,以构建高效、可靠和可扩展的数据库系统。同时,也需要注意范式设计带来的挑战和限制,根据实际情况进行权衡和调整。
|
5月前
|
存储 Java 数据库连接
数据库三范式详解及应用
数据库三范式详解及应用
|
5月前
|
存储 Java 数据管理
数据库三范式设计与规范化过程详解
数据库三范式设计与规范化过程详解
|
5月前
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
|
7月前
|
存储 关系型数据库 数据库
关系型数据库设计规范第一范式(1NF)
【5月更文挑战第14天】关系型数据库设计规范第一范式(1NF
222 8