数据库基础:关系型数据库设计三大范式你能说的清楚吗?

yumo6661个月前 (03-25)技术文章20

对于初学者,数据库的三大范式那是一定要搞清楚,弄明白的,简单的说就是要建立结构合理,逻辑清晰的数据库。

第一范式:属性是最小单元,确保表中每列的原子性,不可分割;

举例说明:

学号

姓名

班级

10001

张三

五年二班

10002

李四

三年五班

上面的例子不符合第一范式,原因是班级不是最小单元,还可以拆分成年级、班级,修改后

学号

姓名

年级

班级

10001

张三

五年

二班

10002

李四

三年

五班

第二范式:满足第一范式的基础上,一张表中某一属性必须依赖所有主键才能获得,不能存在依赖某一个主键查出;

举例说明:假如学号和课程是主键

学号

姓名

系名

课程

分数

10001

张三

计算机系

计算机基础

89

10001

张三

计算机系

Java开发

69

10002

李四

计算机系

计算机基础

87

10002

李四

计算机系

Java开发

92

上面的例子符合第一范式,但是不符合第二范式,因为一个表中的某一属性必须完全依赖主键才能获得,例子中要想获得准确的分数,必须通过学号和课程才能获得,但是名字只需要通过学号就能获得,所以不是完全依赖于主键。修改后:拆分成两张表

学号

课程

分数

10001

计算机基础

89

10001

Java开发

69

10002

计算机基础

87

10002

Java开发

92

学号

姓名

系名

10001

张三

计算机系

10002

李四

计算机系

第三范式:首先满足第二范式,一张表的某一属性,必须直接依赖主键,不能出现这个属性依赖另一个非主键的属性,然后非主键属性依赖主键;

举例说明:假如学号是主键

学号

姓名

系名

系主任

10001

张三

计算机系

小明

10002

李四

计算机系

小明

10003

王五

电子工程系

小冬

上表中可以通过学号、系名找到系主任,但是系主任管理多个学生,不可能反推回去,也没有必要,造成数据的冗余。修改后

学号

姓名

系名

10001

张三

计算机系

10002

李四

计算机系

10003

王五

电子工程系

系名

系主任

计算机系

小明

计算机系

小明

电子工程系

小冬


以上就是我对关系型数据三大范式的理解,总结如下:第一范式的作用是要求每个关系的属性为原子性的,不可再分。即表中不能还有表。满足第二范式必须满足第一范式。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

如有不同见解,欢迎在评论区留言,共同成长,一同进步。

相关文章

数据库的三大范式

三大范式的概念及理解思路第一范式(1NF):指的是数据库表中的任何属性都具有原子性,不可再分解;第二范式(2NF):指的是对记录的唯一性约束,要求记录要有唯一标识,即实体的唯一性;第三范式(3NF):...

数据库系统学习基础篇——(一) 初识MySQL

写在最前:大家可能都知道数据库是非常重要的一门技术。无论是做Web开发、爬虫、还是数据分析,都需要用到数据库。当然,数据库的水平也直接决定着我们工资的上限。毕业后,我做过爬虫、Web开发、现在主要从事...

别再说你精通数据库,MySQL的设计和列类型选取真的很有讲究

总想写一篇MySQL的设计和列类型选取的文章,一直挤不出时间。天天晚上都要加班,正逢5.1放假,抽了几天就有了此文。如果对朋友们能有帮助的话,关注一波不过分吧?求关!选择更优的数据类型尽量选择存储空间...

到底是在讲什么“范式”

楔子今天开会,一直听大家在讲“范式”,听了很长时间才搞明白,原来大家讲的“范式”大都不一样,至于每一种“范式”讲的是什么,到底也没有搞明白。所以,我更愿意认为,第一个人提出来“范式”这个名词,然后大家...

2022年MySQL最新面试题 - MySQL数据库基础知识

0、概要1、平时MySQL主要用哪个版本2、数据库三大范式是什么3、MySQL有关权限的表都有哪几个4、MySQL的binlog有有几种录入格式?分别有什么区别?5、平时用到哪些关系型数据库和非关系数...