动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

数据库设计三范式是什么

09-04 17:16 55浏览
举报 T字号
  • 大字
  • 中字
  • 小字

关于数据库相信在学习java编程的小伙伴们都不陌生,对于数据的管理查询等一系列的操作是重要的,所以为了减少数据的冗余,会在关系型数据库中有一定的规范,就是数据库设计三范式。今天为大家介绍一下数据库设计三范式是什么以及包括哪三个范式。

数据库设计三范式是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库设计关系型数据库时,遵从不同的规范要求,设计出合理的关系型数据库这些规范被称作范式越高的范式数据库的冗余度就越低。这是数据库设计三范式的基本定义。

下面来具体介绍数据库设计三范式包括的三个范式的内容:

1、第一范式

定义:要求有主键,数据库中不能出现重复记录,每一个字段是原子性不能再分;不符合第一范式示例:

存在问题有两个,一是数据存在重复记录,数据不唯一,没有主键;二是联系方式可以再分,不是原子性

关于数据库设计三范式的第一范式需要注意,每一行必须唯一,也就是每个表必须有主键,这是我们数据库设计的最基本要求,主要通常采用数值型或定长字符串表示,关于列不可再分,应该根据具体的情况来决定如联系方式,为了开发上的便利可能就采用一个字段了

2、第二范式

定义:第二范式是建立在第一范式基础之上,要求数据库中所有非主键字段完全依赖主键,不能产生部分依赖;(严格意义上说:尽量不要使用联合主键)

示例:

确定主键:

以上虽然确定了主键,但此表会出现大量冗余,主要涉及到的冗余字段为“学生姓名”和“教师姓名”,出现冗余的原因在于:学生姓名部分依赖了主键的一个字段学生编号,而没有依赖教师编号,而教师姓名部分依赖了主键的一个字段教师编号,这就是第二范式部分依赖。

解决方案如下:

学生信息表

教师信息表:

教师和学生的关系表:

学生编号(PK) fk→学生表的学生编号

 教师编号(PK) fk→教师表的教师编号

1001

001

1002

002

1003

001

1001

002

以上是一种典型的“多对多”的设计。

3、第三范式

定义:建立在第二范式基础之上,要求非主键字段不能产生传递依赖于主键字段。

以上是一种典型的“多对多”的设计。

从上表可以看出,班级名称字段存在冗余,因为班级名称字段没有直接依赖于主键,班级名称字段依赖于班级编号,班级编号依赖于学生编号,那么这就是传递依赖,解决的办法是将冗余字段单独拿出来建立表,如:

学生信息表:

学生编号(PK)

 学生姓名

班级编号(FK)

1001

张三

01

1002

李四

02

1003

王五

03

1004

04

班级信息表:

以上设计是一种典型的一对多的设计,一存储在一张表中,多存储在一张表中,在多的那张表中添加外键指向一的一方的主键。

关于数据库设计三范式还有大家需要知道的注意事项:1第二范式与第三范式的本质区别:在于有没有分出两张表;(2第二范式是说一张表中包含了多种不同实体的属性,那么必须要分成多张表,第三范式是要求已经分好了多张表的话,一张表中只能有另一张标的ID,而不能有其他任何信息,(其他任何信息,一律用主键在另一张表中查询);(3必须先满足第一范式才能满足第二范式,必须同时满足第一第二范式才能满足第三范式。

以上是对数据库设计三范式内容的介绍,在数据库中的关系必须满足一定的要求,就是要满足不同的范式,所以想使用好java数据库的话,数据设计三范式的内容是必须要掌握的。希望上面的内容可以帮助到大家,尤其是java零基础的朋友们,相信通过这篇文章对数据库设计三范式有了一定的认识和了解,后面再学习深入的知识会更得心应手一些。

0人推荐
共同学习,写下你的评论
0条评论
拉乌迷
程序员拉乌迷

6篇文章贡献26041字

作者相关文章更多>

推荐相关文章更多>

MySQL开发规范

达芬奇09-04 11:38

必须掌握的30种SQL语句优化

不写代码你养我啊08-23 11:30

ES(Elasticsearch)支持PB级全文搜索引擎入门教程

HelloWorld09-29 17:28

Java面试中的hadoop面试题及答案整理

兔子06-15 17:15

数据库分类之速成篇

呵呵呀06-17 18:54

发评论

举报

0/150

取消