关系型数据库设计规范第三范式(3NF)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 【5月更文挑战第14天】关系型数据库设计规范第三范式(3NF)

image.png
关系型数据库设计规范中的第三范式(3NF, Third Normal Form)是在满足第一范式(1NF)和第二范式(2NF)的基础上进一步消除数据冗余和规范数据设计的标准。以下是关于3NF的详细解释:

  1. 第一范式(1NF)
* 每一列都是不可分割的原子项。
* 表中不能有重复的行(由主键唯一确定)。
* 列(属性)名唯一,没有重复的列。
  1. 第二范式(2NF)
* 满足1NF。
* 所有的非主键列都完全依赖于主键(即没有部分依赖)。
* 如果存在复合主键(由多个列组成的主键),则非主键列不能仅依赖于复合主键中的一部分。
  1. 第三范式(3NF)
* 满足2NF。
* 非主键列之间没有传递依赖。换句话说,如果一个非主键列A依赖于另一个非主键列B,而B又依赖于主键,那么A应该直接依赖于主键,而不是通过B来间接依赖。

为什么需要3NF?

通过遵循3NF,我们可以确保数据库结构更加清晰、规范,减少数据冗余和更新异常(如插入异常、删除异常和修改异常)。

如何应用3NF?

  • 识别并消除部分函数依赖。
  • 如果发现非主键列之间存在传递依赖,考虑将其拆分为多个表,并通过外键关联。

示例

假设我们有一个订单表,其中包含了订单ID客户ID客户姓名产品ID产品名称

  • 在这个表中,订单ID是主键。
  • 客户ID客户姓名产品ID产品名称都是非主键列。
  • 客户ID依赖于订单ID(因为每个订单都有一个客户)。
  • 但是,客户姓名依赖于客户ID,而不是直接依赖于订单ID
  • 同样,产品ID产品名称依赖于产品ID,而不是直接依赖于订单ID

根据3NF,我们应该将客户姓名产品名称移出订单表,并将它们分别放入客户表和产品表。然后,在订单表中,我们只保留客户ID产品ID作为外键,与客户表和产品表进行关联。

这样,我们就消除了传递依赖,并遵循了3NF。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6月前
|
数据库 Python
在数据库中的规范设计
【5月更文挑战第16天】关系数据库规范化理论涉及函数依赖和超键概念。函数依赖如X->Y表示X能唯一确定Y。超键是能唯一标识元组的属性集合,候选键是最小超键,无冗余。主键是用户选定的候选键,外键关联不同表的主键。Armstrong公理用于推导函数依赖。数据库范式从1NF到5NF,消除部分和传递依赖,确保数据完整性。实际操作中,反规范化有时用于优化,如增加冗余列、派生列、重组表和分表策略,以提升查询效率和性能。
206 51
在数据库中的规范设计
|
3月前
|
存储 数据库
数据库设计三范式
三范式设计的最终目的都是为了减少我们的工作量,所以说,尽管三范式是一种很好的指导规范,但在实际应用中,我们也不需要太局限在三范式中,更多的是应该从项目中出发,设计出合理的表结构。
|
3月前
|
存储 SQL 关系型数据库
数据库开发设计规范(通用)
数据库开发设计规范(通用)
251 0
|
11天前
|
存储 数据库
数据库设计三范式
数据库设计三范式
18 0
|
3月前
|
存储 算法 Java
数据库范式与设计原则
数据库范式与设计原则
63 0
|
4月前
|
存储 关系型数据库 数据库
关系型数据库设计范式:深入理解与实践
【7月更文挑战第20天】关系型数据库设计范式是数据库设计中的重要指导原则,它通过一系列规范来减少数据冗余、提高数据一致性和优化查询性能。在实际应用中,我们应该根据具体需求和数据特点,灵活选择和应用不同的范式级别,以构建高效、可靠和可扩展的数据库系统。同时,也需要注意范式设计带来的挑战和限制,根据实际情况进行权衡和调整。
|
4月前
|
存储 Java 数据库连接
数据库三范式详解及应用
数据库三范式详解及应用
|
4月前
|
存储 Java 数据管理
数据库三范式设计与规范化过程详解
数据库三范式设计与规范化过程详解
|
4月前
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
|
4月前
|
存储 监控 安全
安全规范问题之跟数据库交互涉及的敏感数据操作需要有哪些措施
安全规范问题之跟数据库交互涉及的敏感数据操作需要有哪些措施