首页 > 数据库 >数据库的三大范式

数据库的三大范式

时间:2024-11-18 23:14:51浏览次数:3  
标签:非主 范式 数据库 依赖于 主键 三大 属性

数据库的三大范式是规范化数据库设计的基本原则,旨在减少数据冗余并确保数据一致性。以下是三大范式的核心内容:

1.第一范式(1NF)

定义:第一范式要求数据库表中的每个字段都是原子的,即每个字段只能包含一个值,不能有重复的列。

要求:

  • 表中的每个列都是不可分割的原子数据。
  • 每个字段的数据类型应该是相同的。

示例:

 

在上表中,“家庭信息”和“学校信息”列均不满足原子性的要求,故不满足第一范式,调整如下:

2.第二范式(2NF)

定义:第二范式建立在第一范式的基础上,要求每个非主属性完全依赖于主属性,而不能部分依赖。

要求:

  • 满足第一范式
  • 非主属性必须依赖于整个主键,而不是主键的一部分。(主要针对联合主键而言)

示例:

在上图所示的情况中,同一个订单中可能包含不同的产品,因此主键必须是“订单号”和“产品号”联合组成,但可以发现,产品数量、产品折扣、产品价格与“订单号”和“产品号”都相关,而订单金额和订单时间仅与“订单号”相关,与“产品号”无关,这样就不满足第二范式的要求,调正如下:

3.第三范式(3NF)

定义:第三范式要求每个非主属性不仅要完全依赖于主键,还必须直接依赖于主键,不能依赖于其他非主属性。

要求:

  • 满足第二范式。
  • 非主属性不应依赖于其他非主属性。

示例:

上表中,所有属性都完全依赖于学号,所有满足第二范式,但是“班主任性别”和“班主任年龄”直接依赖的是“班主任姓名”,而不是主键“学号”,所以需做如下调整:

总结:

  • 第一范式(1NF):每个字段是原子的。
  • 第二范式(2NF):所有非主属性完全依赖于主键。
  • 第三范式(3NF):消除了非主属性之间的依赖传递。

遵循这些范式,可以有效地组织数据库,减少数据冗余和维护复杂性。不过,在实际设计中,可能需要权衡性能于规范化之间的关系,适当的反规范化也可能是合理的选择。

标签:非主,范式,数据库,依赖于,主键,三大,属性
From: https://blog.csdn.net/weixin_73526362/article/details/143854613

相关文章

  • springboot美容院管理系统(代码+数据库+LW)
    摘  要如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让美容院信息的管理模式进行升级,也为了更好的维护美容院信息,美容院管理系统的开发运用就显得很有必要。并且通过开发美容院管理系统,不仅可以让所学的SpringBoot框架得到实际运用......
  • 基于springboot的“衣依”服装销售平台的设计与实现(代码+数据库+LW)
    摘要随着信息互联网购物的飞速发展,一般企业都去创建属于自己的电商平台以及购物管理系统。本文介绍了“衣依”服装销售平台的开发全过程。通过分析企业对于“衣依”服装销售平台的需求,创建了一个计算机管理“衣依”服装销售平台的方案。文章介绍了“衣依”服装销售平台的系统......
  • PGML:向量数据库内一体化的RAG框架
    架构总览特性:●支持数据库中进行的ai和ml分析●支持gpu加速●集成多种开源llm和rag框架●支持传统的机器学习模型使用方法云端试用官方提供了云服务试用,根据要求注册账号即可:注册地址本地部署官方提供了docker镜像,执行如下命令即可安装dockerrun\-it\......
  • Oracle手工创建数据库和多环境变量下如何连接指定的数据库
    Oracle手工创建数据库(hefeidb)Oracle创建数据库的方法有三种:dbca、静默方式、手工建库三种方法,这里演示手工建库的方式,适用在不能运行dbca的环境下面创建库:1设置环境变量(新增一个)su-oraclecd/home/oraclecp.bash_profile.bash_profile.fgzcdbvi.bash_profileif......
  • linux 启动数据库和Teamcenter
    1.启动数据库:[infodba@tc24vm~]$exportORACLE_HOME=usr/apps/LINUX.X64_193000_db_home[infodba@tc24vm~]$exportORACLE_HOME=/usr/apps/LINUX.X64_193000_db_home[infodba@tc24vm~]$exportORACLE_SID=tc[infodba@tc24vm~]$cd$ORALCE_HOME[infodba@tc24vm~]$cd$OR......
  • 人工智能之图像预处理、数据库、GUI布局的综合应用(数据库部分、GUI布局设计)
    文章目录前言一、数据库创建数据表查询:修改、删除GUI布局成果展示进行图像处理和车牌识别:查询记录:总结前言之前进行opencv项目的编写,我们成功写出了智能车牌识别系统(初学版)以下对数据库和GUI布局设计部分进行补充,对于知识点和基本补充部分可以翻看我之前的笔记,......
  • 三段实习经历告诉你找实习的三大原则
    一篇文章教会你找实习的三大原则,怎么选择找实习的时间,什么时候找实习是最好的基本原则原则1种一棵树最好的时间是十年前,其次是当下.不要啥都准备好了,等啥都学好了再去找实习.简历准备的差不多了,就可以尝试投递.原则2一边找实习一边学习,一边面试一边查漏补缺.一边......
  • 安装MySQL8数据库
    安装MySQL8MySQLCommunityServer社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。MySQLEnterpriseEdition企业版本,需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。MySQLCl......
  • SqlServer数据库恢复备份数据的方法
    一、如何备份 二、开始还原当时在公司是要将阿里云的sqlserver中的数据备份一份到公司内网数据库,并将数据恢复到公司内网SqlServer数据库,当我按照原库的要求创建了新的空库。在SSMS控制台还原的时候,它竟然报错,报:system.data.sqlclient.Sqlerror:备份集中的数据库备份与现......
  • 模式:每个服务一个数据库
    Pattern:Databaseperservice。背景如用微服务架构模式开发一个在线商店应用程序。大多数服务需要在某种数据库中持久化数据。如,订单服务存储订单信息,而客户服务存储客户信息。问题微服务应用程序中的数据库架构是什么?驱动力服务必须松耦合,以便能够独立开发、部署和扩展......