【MySQL入门实战1】-数据库三大范式
创始人
2024-03-15 16:15:39
0

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.概述
    • 📣 2.第一范式
    • 📣 3.第二范式
    • 📣 4.第三范式
    • 📣 小结
    • ✨ 每日一练

前言

MySQL入门实战将持续推出MySQL入门的技能和相关运维经验给大家

📣 1.概述

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则,在关系型数据库中这种规则就被称为范式。范式是符合某一种设计要求的总结。因此要设计一个结构合理的关系型数据库,就必须要满足下面这三大范式。

📣 2.第一范式

第一范式也称不可再分

数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。第一范式(1NF)主要是确保数据表中每个字段的值必须具有原子性,也就是说数据表中每个字段的值为不可再次拆分的最小数据单元。

表1-1
在这里插入图片描述

📢 如表1-1所示,这张表实际上就不满足1NF,因为班级这列是可以继续被拆分的。

表1-2
在这里插入图片描述
📢 如表1-2所示,这个表中不能有可以被继续拆分的列,即表中的每一个属性列都具有原子性。

📣 3.第二范式

第二范式即消除部分依赖。

第二范式(2NF)是指在第一范式的基础上,确保数据表中除了主键之外的每个字段都必须依赖主键,非主键列完全依赖于主键,而不能是依赖于主键的一部分,如表1-3.

表1-3
在这里插入图片描述

注意:不是所有属性字段都完全依赖联合主键的,它们或许只依赖主键中的一部分,这种部分依赖的关系是不满足2NF的,表1-3中的例子中,由于商品的名称和价格字段不依赖于商品类别的主键id,所以不符合第二范式,因此我们需要进行拆表。可以将其修改成如下表1-4 category和表1-5 goods所示的表设计,商品信息goods表通过商品类别id字段与数据表category中商品类别category_id字段进行关联。

表1-4
在这里插入图片描述

符合第二范式的category数据表的设计,如表1-4

表1-5
在这里插入图片描述

符合第二范式的goods数据表的设计,如表1-5

📣 4.第三范式

第三范式即消除部分依赖。

在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。第三范式(3NF)是需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

表1-6 不满足3NF的表
在这里插入图片描述

注意:表1-6中主键是"学号",直接依赖于"学号"的有"姓名"和"课程号"。“课程名称"直接依赖于"课程号”,间接依赖于"学号"。因此,我们需要为课程号和课程名称单独创建一个表出来,下面是结果

表1-7,符合第三范式的学生表的设计
在这里插入图片描述
表1-8,符合第三范式的课程表的设计
在这里插入图片描述

📣 小结

三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看业务需求和性能,需求>性能>表结构,所以不能一味的去追求范式建立数据库关联。要尽量遵守三范式,如果不遵守,必须有足够的理由,事实上我们经常会为了性能而妥协数据库的设计。

✨ 每日一练

以下关于三个范式说法错误的是:()
A.第一范式中,数据库表中的字段都是单一属性的,不可再分。
B.第二范式中,在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。
C.第三范式中,在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。
D.在设计数据库结构的时候,必须遵守三范式。

❤️❤️❤️ 请在评论区留下你的答案,我会做出详细的解答。

在这里插入图片描述

相关内容

热门资讯

【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
ChatGPT 怎么用最新详细... ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...