浅谈数据库设计之三大范式

简介: 范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。很晦涩吧?实际上你可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别。

范式?


即规范!

范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。很晦涩吧?实际上你可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别。

数据库范式也分为1NF,2NF,3NF,BCNF,4NF,5N一般在我们设计关系型数据库的时候,最多考虑到BCNF就够

符合高一级范式的设计,必定符合低一级范式,例如符合2NF的关系模式,必定符合1NF

1NF-第一范式

数据表的每一列都要保持它的原子特性,也就是列不能再被分割。

比如这样:

网络异常,图片无法展示
|

进货它还可以被分出进货的数量,进货的单价等等属性。所以这样是不符合第一范式的。

网络异常,图片无法展示
|

来自——>博客园

2NF-第二范式

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。

  • 即满足第一范式前提,当存在多个主键的时候,才会发生不符合第二范式的情况!!!。
  • 比如有两个主键,不能存在这样的属性,它只依赖于其中一个主键,这就是不符合第二范式。
  • 通俗理解是任意一个字段都只依赖表中的同一个字段。

依赖

在数据表中,属性(属性组)X确定的情况下,能完全退出来属性Y完全依赖于X。

完全依赖

完全依赖是针对于属性组来说,当一组属性X能推出来Y的时候就说Y完全依赖于X。

部分依赖

一组属性X中的其中一个或几个属性能推出Y就说Y部分依赖于X。

3NF-第三范式

首先,要满足第三范式(3NF必须先满足第二范式(2NF)。

也就是说,要求一个数据库表中不包含已在其它表中已包含的非主键字段。

三范式一定需要?

我们的三范式是一般规范。就是说,只是一般都会遵守这个规范。

但是!!!不是一定需要遵守,比如有时候,数据不冗余也不是好事。所以,我们要根据需要来定义,建立在需求之上。

没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,提高读性能,就必须降低范式标准,适当保留冗余数据。

其他范式


BCNF-BC范式

关系模式R<U,F>中,若每一个决定因素都包含码,则R<U,F>属于BCFN

即:

  1. 所有非主属性对每一个码都是完全函数依赖;
  2. 所有主属性对每一个不包含它的码也是完全函数依赖;
  3. 没有任何属性完全函数依赖于非码的任何一组属性。

4NF-第四范式

限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。

5NF-第五范式

  • 必须满足第四范式。
  • 表必须可以分解为较小的表,除非那些表在逻辑上拥有与原始表相同的主键。

一般在我们设计关系型数据库的时候,最多考虑到BCNF就够。!!!

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