开发公司【MySQL入门实战1】-数据库三大范式

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

文章目录

前言

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.在设计数据库结构的时候,必须遵守三范式。

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

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发