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

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

技术教程gslnedu2024-12-23 9:16:2216A+A-

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

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

举例说明:

学号

姓名

班级

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)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

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

点击这里复制本文地址 以上内容由朽木教程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

朽木教程网 © All Rights Reserved.  蜀ICP备2024111239号-8