数据库三大范式通俗理解

数据库设计六大范式,你真的懂了吗? 摘要:数据库范式理论包括1NF到5NF六个层级,各范式间存在包含关系(5NF⊆4NF⊆BCNF⊆3NF⊆2NF⊆1NF)。1NF要求数据不可再分;2NF消除非主属性对主键的部分依赖;3NF消除传递依赖;BCNF要求所有属性完全依赖候选键;4NF处理多值依赖;5NF强调连接属性必须为候选键。实际应用中通常只需满足前三个范式,因为高范式虽能减少冗余,但会增加连接操作影响性能,需在数据规范化和查询效率间取得平衡。 阅读详情

目录

数据库范式简介

第一范式(1NF)

第二范式(2NF)

第三范式(3NF)

小结

目的原则

反范式


数据库范式简介

范式的简介

范式的英文名称是Normal Form,它是英国人E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的。范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。

目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF),第三范式(3NF)。

数据往往种类繁多,而且每种数据之间又互相关联,因此,在设计数据库时,所需要满足的范式越多,那表的层次及结构也就越复杂,最终造成数据的处理困难。这样,还不如不满足这些范式呢。所以在使用范式的时候也要细细斟酌,是否一定要使用该范式,必须根据实际情况做出选择。一般情况下,我们使用前三个范式已经够用了,不再使用更多范式,就能完成对数据的优化,达到最优效果。


第一范式(1NF)

第一范式是指关系表R中的每列都是原子不可分的项。即每个属性都是最基本的数据项,不可再进行拆分。

 

所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。

说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型


第二范式(2NF)

第二范式是指在满足第一范式的情况下,关系表R中的所有非主属性都完全依赖于R的每一个候选关键属性。即,第二范式指的是关系表有主键约束。

 

举个栗子:
假如有一个学生课程表student_course(学号, 姓名, 课程名称, 成绩, 学分),关键字为组合关键字(学号, 课程名称),因为只有这两个属性一起才能决定一条记录,即(学号, 课程名称) → (姓名, 成绩, 学分) ,这个关系表便不符合第二范式,因为"姓名"仅依赖于"学号","学分"仅依赖于"课程名",因此,不满足第二范式条件。那么,不满足第二范式会有什么问题呢?如下:

  • 数据冗余
         对于一门课程,如果有n名学生选修,则这门课程的全部信息将会重复存储n-1次,同理,一个学生选修了m门课程,则学生全部信息会重复存储m-1次,导致数据冗余存储。
  • 更新问题
        如果要更新某门课程的学分,那么所有关联这门课程的记录都将更新,否则会出现数据不一致问题。
  • 插入问题
        假如新增一门课程,但是尚未有学生选修,则该门课程的信息无法入库。
  • 删除问题
        假如某门课程对应的记录完全被删除,则将导致这门课程的信息完全丢失。

那我们可以按照第二范式来改造上述关系表,将表分成

student(学号,姓名),

cource(课程名称,学分),

student_cource(学号, 课程名称, 成绩)

这样便避免了上述问题。

 


第三范式(3NF)

在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)。简而言之,第三范式(3NF)要求表中的非主属性都直接依赖于主键,不再依赖其他非主属性的任何一个(不存在间接传递依赖)。

举个例子:

如表emp(id,name,age,dept_id,dept_name,dept_detail),这张表中的员工id能够决定所有非主属性。

但是我们发现dept_name,dept_detail这两个非主属性也可以由非主属性dept_id决定,而dept_id又依赖于id,因此存在间接传递依赖,不满足第三范式。

同时,可以看出,不满足第三范式的问题是存在大量的冗余数据。

解决该问题的方式很简单,只需将原关系表拆分为emp(id,name,age, dept_id), dept(dept_id,dept_name, dept_detail),这样不管是对于表emp还是表dept,各自的非主属性都直接依赖于主键,满足第三范式,同时也解决了数据冗余的问题。


小结

目的原则

规范化目的是使结构更合理,消除存储异常,使数据冗余尽量小。便于插入、删除和更新。

遵从概念单一化“一事一地”原则,即一个关系模式描述一个实体或实体间的一种联系。规范的实质就是概念的单一化。

一个关系模式接着分解可以得到不同关系模式集合,也就是说分解方法不是惟一的。最小冗余的要求必须以分解后的数据库能够表达原来数据库所有信息为前提来实现。其根本目标是节省存储空问,避免数据不一致性,提高对关系的操作效率,同时满足应用需求。实际上,并不一定要求全部模式都达到BCNF不可。有时故意保留部分冗余可能更方便数据查询。尤其对于那些更新频度不高,查询频度极高的数据库系统更是如此。

 

反范式

规范化的优点是明显的,它避免了大量的数据冗余,节省了存储空间,保持了数据的一致性。

当一个库里的数据经常发生变化时,达到3NF的库可以使用户不必在超过两个以上的地方更改同一个值。那么是不是只要把所有的表都规范为3NF后,数据库的设计就是最优的呢?这可不一定。范式越高意味着表的划分更细,一个数据库中需要的表也就越多,用户不得不将原本相关联的数据分摊到多个表中。当用户同时需要这些数据时只能采用连接表的形式将数据重新合并在一起。同时把多个表联接在一起的花费是巨大的,尤其是当需要连接的两张或者多张表数据非常庞大的时候,表连接操作几乎是一个噩梦,这严重地降低了系统运行性能。

 

 

什么是三范式 什么是三范式 设计关系型数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 目前关系型数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。一般来说,数据库只需要满足第三范式就行了。 第一范式:保证每... 阅读详情

相关推荐

LS-DYNA壳单元冲击仿真中的5个关键设置:以方管碰撞为例(含沙漏控制参数)

本文以方管碰撞为例,深入解析了LS-DYNA壳单元冲击仿真中的五个关键设置。重点探讨了沙漏控制参数(如IHQ=4)的选择逻辑、自接触算法优化、能量监控方法、材料模型(MAT_24)的真实应力-应变曲线与应变率效应设置,以及单元公式的选取。这些核心设置共同决定了仿真的精度与效率,是确保方管冲击仿真结果可靠性的基石。

salt的博客 626

数据库三大范式的理解

在实际的开发中需要考虑诸多问题,如:由此可见,实际中并没有去严格遵守这种规范。因为规范和性能不可兼得!规范越高,性能越低。范式是符合某一种级别的关系模式的集合。关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。目前关系数据库有六种范式:1NF,2NF,3NF,BCNF,4NF,5NF这六种范式是包含关系:5NF ⊂ 4NF ⊂ BCNF ⊂ 3NF ⊂ 2NF ⊂ 1NF常用的是第一范式(1NF)、第二范式(2NF)、第三范式(3NF),俗称“三大范式”。以下参考博客:关系型数据库设计:三

weixin_52014130的博客 4605

人工智能之语言领域 自然语言处理 第六章 情感分析

情感分析(Sentiment Analysis),又称意见挖掘(Opinion Mining),旨在自动识别和提取文本中表达的主观情感、态度或情绪。从用户评论到社交媒体,从产品反馈到政治舆情,情感分析已成为企业决策、品牌监控和人机交互的关键技术。本章将深入介绍情感分析的层级结构、核心技术、主流模型,并通过社交媒体舆情实战案例完整演示分析与可视化流程。层级目标示例词级(Word-level)判断单个词的情感倾向“好” → 正面;“差” → 负面句级(Sentence-level)判断整个句子的情感极性。

咚咚王者的博客 857

数据库三大范式(图文详解)

范式是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。

爱吃鸡腿的明仔 1万+

量子密钥分发系统的设计与实现(二):光路子系统初步讨论

本文主要对量子密钥分发系统中的光路子系统方案进行了讨论。

量子领域相关话题 2407

EMI硬件抑制八项工程对策:从回路面积到谐振规避

电磁干扰(EMI)是电子系统可靠性与EMC合规性的核心挑战,其本质源于高频电流回路产生的辐射与耦合效应。理解回路面积、共模/差模噪声、阻抗匹配等基础原理,是实施有效抑制的前提。技术价值体现在降低辐射发射(RE)、传导发射(CE)超标风险,提升产品一次通过率与长期稳定性。典型应用场景包括开关电源设计、高速数字接口布局、工业嵌入式设备及医疗电子等对EMC要求严苛的领域。本文聚焦可落地的硬件级对策,涵盖回路面积控制、屏蔽策略、变压器漏磁管理、双线传输与阻抗匹配等关键实践,深度融合电流回路物理模型与PCB工程实现。

weixin_35019679的博客 86

数据库之三大范式

第一范式主要是确保数据表中每个字段的值必须具有原子性,也就是说数据表中每个字段的值不可再次拆分的最小数据单元; 第二范式要求,在满足第一范式的基础上,还要"满足数据表中的每一条数据记录,都是可唯一标识的(主键),而且所有非主键字段,都必须完全依赖主键,不能只依赖主键的一部分",如果知道主键的所有属性的值,就可以检索到任何元组(行)的任何属性的值,(要求中的主键,其实可以拓展为候选键).第三范式是在第二范式的基础上,确保数据表中的每一个非主键字段都和主键字段直接相关,也就是说,要求数据表中的所有非主键

joker19990512的博客 2188

肖特基二极管的反向恢复过程

本博客简述肖特基二极管反向恢复过程。

记得诚 1万+

数据库逻辑设计之三大范式通俗理解

一、第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解; 表:字段1、 字段2(字段2.1、字段2.2)、字段3 ...... 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可以再分成(出生年,出生月,出生日),它就不是一范式了,否则就是; 二、第二范式 2NF是对记录的惟一性,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖; 表:学号、课程号、姓名、学分; 这个表明显说明了两个事务:学生信息, 课程信息;由于非主键字段必须依赖主键,这里学分依赖课程号,姓.

悟鸣的技术博客 4671

瑞芯微RK3588部署YOLOv8模型

写下这篇博客进行记录,以防后面忘了怎么部署。

weixin_45303602的博客 3666

PyTorch实战(20)——生成对抗网络(Generative Adversarial Network,GAN)

自生成对抗网络 (Generative Adversarial Network, GAN) 提出以来,一直是一个活跃的研究和开发领域。本节探索了 GAN 的基本概念,重点解析了其两大核心组件——生成器与判别器的架构设计,深入阐述了 GAN 模型的整体工作机制,并使用 PyTorch 从零开始实现了深度卷积生成对抗网络 (Deep Convolutional GAN, DCGAN)。

盼小辉丶的博客 3555

数据库三大范式(通俗理解)

范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。 通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF),第三范式(3NF)。 下面就简单介绍下这三个范式。 ◆ 第一范式(1NF):强调的是列的原子性,即列不能够再

白鸽 1万+

YOLO小目标检测优化:9种实用方案,准确率直接提升15%

小目标检测是个系统工程,没有银弹,但有明确的优化路径。优先搞数据。Copy-Paste + 提升分辨率,这俩加起来成本最低、收益最大,能解决80%的小目标问题。别一上来就改模型结构。调参走在改结构前面。锚框聚类、损失加权、增强优化,这些都是零成本的,先做满了再说改模型的事。P2层是大杀器,但不要轻易用。加了P2层,TensorRT部署、后处理、速度都要跟着调,工程化工作量翻倍。数据和训练做到位还不够,再加也不迟。滑动窗口是兜底的。能从训练端解决的问题,就不要拖到推理端。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 187

关于数据库设计三大范式的通俗理解

在另一方面,适当的数据冗余在某些情况下可以提高系统的性能。但同时,我们也需要注意,过度的规范化可能会导致数据库的性能降低,因此在实际操作中,我们往往需要在规范化和性能之间做出平衡。在数据库设计中,尽管范式为我们提供了理想的设计准则,强调了数据的一致性和完整性,以及减少数据冗余的重要性,但在实际操作中,我们可能并不总是完全遵循这些范式。除此之外,还有更多的范式,如BCNF(巴斯-科德范式),4NF(第四范式)和5NF(第五范式或完全范式)等,它们对数据库的规范化有着更高的要求,但在实际应用中使用得并不广泛。

liweizhaox0的博客 1632

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数据库三大范式通俗理解及有关定义

数据库三大范式通俗理解

weixin_42309425的博客 763

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

关系型数据库设计:三大范式的通俗理解

关系型数据库设计:三大范式的通俗理解 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。 而通常我们用的最多的就是第一范式(1NF)、第二范式(2NF)、第三范式(3NF),也就是本文要讲的“三大范式”。 第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项。 举例说明: 在上面的表中,“家庭信息”和“学校信息”列均不满足原子性的要求,故不满足第一范式,调整如下: 可见,调整

qq_42434079的博客 389

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

mysql三范式通俗_三范式(数据库三大范式通俗理解)

范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。【中文名】: 范式【外文名】: paradigm【性 质】.第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系。例:如职工号,姓名,电话号码组成.通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三...

weixin_32789583的博客 1178

数据库设计的三大范式——明确概念和通俗理解

一、数据库名词 在理解三大范式之前,我们先明确一下数据库一些名词的概念,方便我们之后的理解。 实体——某类事物的集合,每一类数据对象的个体称为实体 属性——实体的一个特征,也称之为字段,数据库表中的列 元组——实体所有属性构成的集合,数据库表中的一行信息 关系——实体的元组构成的集合,数据库的表 码——码就是能唯一标识实体的属性。他是整个实体集的性质,而不是单个实体的性质。它包括超码,候选码,主...

左耳依然的博客 677
上一篇: java 多态 -- 三定义两方法
下一篇: 京东提前批面经 - 转
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值