MySql数据库三大范式与反范式详细解说

(三)MySQL之库表设计篇:一、二、三、四、五范式、BC范式与反范式详解! 在本篇中详细阐述了DB库表设计时的一些思想,也就是范式与反范式设计理论,这些理论仅仅只是一套方法论,实际开发过程中,还是需要根据业务来设计出最合适的结构。在文中提及了六种范式,但一般项目中仅需满足到第三范式或BC范式即可,因为这个度刚刚好,再往后就会因为过于精细化设计,导致整体性能反而下降。控制到第三范式的级别,一方面数据不会有太多冗余,第二方面也不会对性能影响过大。同时,如若打破范式的设定能对业务更有利,那也可以违背范式原则去设计。 阅读详情

简介

三大范式是为了在设计中更好的解决数据冗余,数据有效性检查,提高存储效率考虑。提出的三大范式。但其实在工程项目中,有时候为了效率考虑,很多时候并不会按照三大范式来设计数据库。
下面我们来了解一下数据库的三大范式与反范式。

第一范式 (1NF)

每个表的每一列都要保持它的 原子性 也就是表的每一列都是不可分割的
      违反第一范式的示范:
在这里插入图片描述

      进行修改后:
在这里插入图片描述

第二范式 (2NF)

要在满足第一范式的基础上,每个表都要保持 唯一性 也就是表的非主键字段要完全依赖主键字段。
    我们可以从上图看出表中与学生主键完全依赖的字段有,课程,和分数。
    而其他的字段只是与主键有一点点的依赖关系所以我们把它分拆为两张表:
在这里插入图片描述

在这里插入图片描述

在完成了第二范式之后我们可以发现我们消除了很多的冗余数据

第三范式 (3NF)

要在满足第一和第二范式的基础上,表中不能产生传递依赖,要消除表中的
冗余性然后我们再次对表进行拆分修改

在这里插入图片描述
以上就完成了三大范式的要求

反范式

没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,减少了查询时的关联,提高查询效率。

MySQL数据库设计范式与反范式详解 1 第一范式 该范式是为了排除 重复组 的出现,因此要求数据库的每个列的值域都由原子值组成;每个字段的值都只能是单一值。1971年埃德加·科德提出了第一范式。即表中所有字段都是不可再分的。 1.1 实例 重复组通常会出现在会计账上,每一笔记录可能有不定个数的值。 举例来说: “数量”就是所谓的重复组了,而在这种情况下这份资料就不符合第一范式。 再比如,如下联系方式是一个复合属性,就违反了该范式,在数据库中是无法分离出来的。 1.2 解决方案 想要消除重复组的话,只要把每笔.. 阅读详情

相关推荐

MySQL——三大范式与数据库设计

前言 本文内容主要参考自《MySQL DBA 修炼之道》书中的第四章,算是原书的实践与补充。 上次主要讲了MySQL的索引与 EXPLAIN 的用法,是MySQL中非常重要的一部分,这次将进入下一部分,有关数据库的设计。 I. 三大范式 α. 范式含义 范式是数据库规范化的手段,那么啥又是数据库规范化 ? 数据库规范化通俗的来讲就是经过合理的设计,将大表分成很多有关联关系的小表,这样来去除数据的冗...

等一杯咖啡的博客 1001

服务端指南 数据存储篇 | MySQL(07) 范式与反模式

数据库范式是为解决关系数据库中数据冗余、更新异常、插入异常、删除异常问题而引入的。简单的理解,数据库范式可以避免数据冗余,减少数据库的空间,并且减轻维护数据完整性的麻烦。 原文地址:服务端指南 数据存储篇 | MySQL(07) 范式与反模式博客地址:blog.720ui.com/ 第一范式(1NF) 第一范式,强调属性的原子性约束,要求属性具有原子性,不可再分解。 举个例子,活动表(活动编码...

weixin_33862514的博客 382

MySQL 进阶:设计优化 - 反范式设计

反范式设计是指在数据库设计中故意增加冗余数据,以提高数据库的性能和查询效率。通过对数据进行分组和聚合,使得某些数据在查询时可以直接从磁盘中读取,而不需要进行额外的查询操作。范式设计和反范式设计是数据库设计中的两种重要方法。范式设计通过减少数据冗余、提高数据一致性和完整性,确保数据库结构的合理性。反范式设计通过引入冗余数据,优化查询性能和简化业务逻辑,满足特定的业务需求。在实际应用中,需要根据具体的业务需求和性能要求,灵活选择范式设计和反范式设计。

墨夶的博客 1680

MySQL三大范式和反范式

1. 第一范式 确保数据表中每列(字段)的原子性。 如果数据表中每个字段都是不可再分的最小数据单元,则满足第一范式。 例如:user用户表,包含字段id,username,password 2. 第二范式 在第一范式的基础上更进一步,目标是确保表中的每列都和主键相关。 如果一个关系满足第一范式,并且除了主键之外的其他列,都依赖于该主键,则满足第二范式。 例如:一个用户只有

彳亍 4461

RT-Thread stm32h7使用串口DMA

stm32h7在rtthread中无法使用串口DMA,通过更改驱动代码使其支持串口DMA

qq_35141454的博客 2285

【项目实战-MATLAB】:基于机器学习的虹膜识别系统设计

虹膜识别主要包括虹膜定位、虹膜裁剪、极坐标变换、归一化、HOG特征提取、虹膜识别六个主要步骤。本系统采用MATLAB作为开发工具实现 主要算法:霍夫变换预处理 HOG特征提取 SVM进行识别

qq_45047246的博客 6537

数据库的设计规范(MySQL三大范式及反范式化)

在关系型数据库中,关于数据表设计的基本原则,规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。想要设计一个结构合理的关系型数据库,必须满足一定的范式(规则)。范式的英文名称是Normal Form,简称NF。它是英国人E.F.codd(埃德加·弗兰克·科德)在上个世纪70年代提出关系数据库模型后总结出来的。范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。1981年,科德因在关系型数据库方面的贡献获得了图灵奖。

qq_56880706的博客 1279

从零到一:手把手教你用C#开发AGV调度系统(附避坑指南)

本文详细介绍了如何使用C#开发高效的AGV调度系统,涵盖从环境搭建到核心算法实现的完整流程。重点解析了动态路径规划、多机协同等关键技术,并提供了实用的避坑指南和性能优化建议,帮助开发者快速构建工业级车辆控制调度系统。

blockchain9miner的博客 741

MySQL三大范式

第二范式(2NF)是在第一范式的基础上进一步规范数据库表结构,要求表中的非主属性完全依赖于主键,而不能存在部分依赖。2NF的主要目的是消除数据冗余和异常操作,提高数据的更新效率和一致性。完全函数依赖:在2NF中,表中的每个非主属性必须完全依赖于主键,而不能仅依赖于主键的一部分。例如,在一个学生选课表中,主键为(学号,课程号),学生的姓名、性别等属性应完全依赖于学号,而不能仅依赖于课程号。消除部分依赖:2NF要求消除表中的部分依赖关系,即将具有部分依赖的非主属性分离到新的表中。

1680

Vivado安装教程:多版本共存的配置技巧

详解Vivado安装教程中的多版本共存配置技巧,帮助用户在同一系统中管理不同版本的Vivado开发环境,提升开发效率与兼容性,适用于需要切换版本的FPGA开发者。

weixin_35257663的博客 1774

中国城市统计年鉴1991-2024面板数据真正无缺失值填补指标说明

大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。

yushibing717的博客 928

MySQL-数据库设计

12.1 数据库三范式 基本概念: 三范式就是设计数据库的规则。 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。 范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF) , 其余范式以此类推。 一般说来,数据库只需满足第三范式(3NF)就行了。 12.1.1 第一范式 1NF 基本概念 原子性, 做

hxy1625309592的博客 307

从3D相机数据到三维模型:Halcon实战深度图、亮度图与点云转换全流程

本文详细解析了如何利用Halcon将3D相机采集的深度图、亮度图转换为三维点云模型的完整流程。通过实战案例分享,涵盖数据格式处理、点云生成方法(SDK接口与纯Halcon实现)、三维模型可视化优化等关键技术,帮助工程师解决工业检测中的实际难题,提升三维重建精度与效率。

weixin_42525005的博客 394

数据库三大范式是什么,又为什么要反范式?

数据库三大范式是指关系型数据库设计中的三个基本规范,分别为第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。总结起来,数据库的三大范式是关系型数据库设计中的基本规范,用于避免数据冗余、更新异常和数据不一致。在实际应用中,需要根据具体情况进行范式化或反范式化的设计,权衡范式化的好处和复杂性,以及考虑查询性能和数据一致性的需求。推荐您阅读本专栏其他内容,MySQL的100个知识点,相信不会让您失望。如果你对上面的功能有疑问,随时欢迎与我交流。

黑夜开发者的博客 2886

滑模控制理论(SMC)概述

滑模控制理论(SMC)概述一、背景二、数学理论三、高维拓展四、分析 一、背景 滑模控制理论(Sliding Mode Control, SMC)是一种建立在现代控制理论基础上的控制理论,主要数学核心为李雅普诺夫函数。 滑模控制的核心思想是建立一个滑模面,将被控系统拉取到滑模面上来,使系统沿着滑模面运动。滑模控制的一个优势是无视外部扰动和不确定参数,采用一种比较“暴力”的方式达到控制的目的。 其思想和反步法有些类似,但数学实现起来更加方便而不抽象。相比反步法,滑模控制没有复杂的数学计算,也不会出现“微分爆炸”

高能阿博特的博客 6万+

Ardupilot chibios主函数学习(1)

目录 文章目录目录摘要第一部分chibios主函数**(1)主回调函数入口****(2)主回调函数入口****(3)主回调函数入口****(4)主回调函数入口**1.函数hal.scheduler->init()分析 摘要 本节主要记录自己学习Ardupilot的 chibios代码过程,欢迎批评指正。 第一部分chibios主函数 (1)主回调函数入口 AP_HAL_MAIN_...

陌城烟雨 4243

MySQL性能调优(一):数据库基础知识(范式化/反范式化设计、数据类型优化、索引、B+Tree)

范式来自英文Normal Form,简称NF。实际上你可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别。就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF),在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 4万+

WINCC7.3破解文件

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

数据库设计规范——反范式

有的时候不能简单按照规范要求设计数据表,因为有的数据看似冗余,其实对业务来说十分重要。这个时候,就要遵循业务优先的原则,首先满足业务需求,再尽量减少冗余。如果数据库中的数据量比较大,系统的UV和PV访问频次比较高,则完全按照MySQL的三大范式设计数据表,读数据时会产生大量的关联查询,在一定程度上会影响数据库的读性能。如果想对查询效率进行优化,反范式优化也是一种优化思路。此时,可以通过在数据表中增加冗余字段来提高数据库的读性能。规范化 vs 性能为满足某种商业目标 , 数据库性能比规范化数据库更重要。

YouPromise的博客 812

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

「MySQL库表设计」数据库的三大范式、反范式及其案例精讲

数据库的库表设计,在很多时候我们都是率性而为,往往在前期的设计中考虑并不全面,同时对于库表结构的划分也并不明确,所以很多时候在开发过程中,代码敲着敲着会去重构某张表结构,甚至大面积重构多张表结构,这种随心所欲的设计方式,无疑给开发造成了很大困扰。​ 但实际上设计库表结构时,也有一些共同需要遵守的规范,这些规范在数据库设计中被称为“范式”,理解并掌握这些设计时的规范,能让咱们在项目之初,设计的库表结构更为合理且优雅。数据库范式中,声名远扬的有三大范式,但除此之外也有一些其他设计规范。

frozenpenguin的博客 2824

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

MySQL范式和反范式

MySQL范式与反范式

2302_80908313的博客 1302

运维开发.MySQL.范式与反范式化

在数据库设计中,范式(Normalization)是用于 减少数据冗余 和 提高数据完整性的规则。本文介绍MySQL中常用的三大范式,以及如何反范式化。

jclee95的个人博客 1518

MySQL八股-[MySQL的三范式?反范式?]

快速复习MySQL中的三范式等知识点与面试可能提问点

2301_80372427的博客 1555

【MySQL】数据库的三大范式

第一范式要求数据库表中的每个字段都是原子性的,不可再分。第二范式在满足第一范式的基础上,要求非主键字段必须完全依赖于主键,而不是依赖于主键的一部分。第三范式在满足第二范式的基础上,要求所有非主键字段必须直接依赖于主键,不能存在传递依赖。BCNF是对3NF的进一步改进,它要求所有决定因素必须是候选键。

Guiat的博客 1235

Mysql--实战篇--数据库设计(范式和反范式,数据表设计原则)

通过逐步应用范式化的原则,我们可以有效地减少数据冗余、提高数据一致性和可维护性。每个范式级别都解决了特定类型的数据冗余问题。1NF:确保每个字段都是不可再分的基本数据项,并且每个表都有唯一的主键。(即:每个字段仅存储1个值,不能存多个值)2NF:消除非主属性对部分主键的依赖,确保所有非主属性完全依赖于整个主键。(即:组合主键的情况时会出现,一般较少)3NF:消除传递依赖,确保所有非主属性只依赖于主键。(即:间接通过非主键属性才能和主键产生关联的情况)

weisian的博客 3万+

数据库设计之范式与反范式

范式设计 什么是范式? 范式来自英文Normal Form,简称NF。要想表之间设计—个好的关系,必须使关系 满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求 得严格。满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入 (insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据 库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三 范式(3NF)、巴

morris 2582

数据库三范式及反范式设计、对比(详解版)

范式来自英文Normal Form,简称NF。实际上你可以把它粗略地理解为 一张数据表的表结构所符合的某种设计标准的级别。就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF),在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。

qq_45607784的博客 1668
上一篇: SpringBoot底层原理
下一篇: Solr的增量更新和全量更新对比
少i年
博客等级 码龄8年 4453粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值