【数据库基础】详解数据库第一范式、第二范式和第三范式

范式就是一张数据表结构所符合的某种设计标准的级别;这跟我们后面要学习的事务的隔离级别有点像,就是级别不同,标准就不同,后一个级别会解除前一个级别存在的部分问题.

要了解范式,我们先把以下几个概念搞清楚:

1,超键(super key): 在关系中能唯一标识元组的属性集

2,候选键(candidate key): 不含有多余属性的超键

3,主键(primary key):从一个关系的多个候选键中,选定一个作为主键

4,主属性: 任何一个候选键中的属性

比如我们有一个学生表如下:

针对这张表,超键/候选键/主键分别如下:

超键: 学号, 身份证号码, (学号,姓名), (学号,性别), (身份证号码,姓名),(身份证号码,性别)…..这些单个的属性或者组合属性,均能唯一标识元组的属性值;

候选键: 学号, 身份证号码;比如(学号,性别)这个超键,如果去掉了性别,学号也能唯一标识元组的属性,所以(学号,性别)就不属于候选键.

主键: 学号;(在学号或者身份证号码里面任意挑选一个,均可以作为主键)

非主属性:不包含在任何一个候选码(键)中的属性称为非主属性

说完了超键/候选键/主键,咱们来说一下函数依赖.

函数依赖(一个或者一组属性的值可以决定其他属性的值,),依然拿学生表为例来说明什么是部分依赖以及传递依赖:

1,部分依赖

在学生表中,(学生编号,课程编号)作为主键,可以唯一标识每一条元组;

  • 比如(101,a) 就可以标识:人工智能1班的谢贱同学a科目考了80;
  • 但是,学生姓名/班级编号/院系可以直接通过(学生编号)来确定,并不需要通过(学生编号,课程编号)来确定;
  • 于是,学生姓名/班级编号/院系对(学生编号,课程编号)有部分函数依赖;
  • 所以,我们称之为非主属性对键有部分函数依赖;

2,传递依赖

  • 学生编号可以唯一确定这个同学他所在的院系,但是中间存在传递过程;
  • 传递过程,需要通过学生编号来先确定这个同学所在的班级,通过班级来确定这个同学所在院系;
  • 院系对学生编号存在传递函数依赖;

好了,知道了什么是部分依赖什么是传递依赖,我们再来解释什么是第一、二、三范式:

1,第一范式

定义: 关系中每一个数据不可再分(不能以集合/序列等作为属性),也就是关系中没有重复的列(比如电话号码这个属性既存在一个手机号又存在一个家庭号码,这种情况就不属于第一范式,除非把手机号作为一个列,家庭号码也作为单独一列。);

但是第一范式存在以下问题:

1) 数据冗余(比如学生编号、学生姓名、班级编号、院系等属性重复)

2) 插入数据异常 (比如新增一个名称为体育的院系,假如这个系没有学生,就不能插入)

3) 删除数据异常 (删除全部学生的信息, 院系也会被删除)

4) 修改数据异常 (假如存在学生转系的情况,修改会很繁琐)

2,第二范式

定义: 在1NF基础之上,消除非主属性对键的部分依赖,则称它为符合2NF;(把学生编号,课程标号,成绩单独拿出来作为一个表)

第二范式针对第一范式改进的地方:

1) 数据冗余减少了

2) 如果转系的话,只需要修改一次就可以

没有改进的地方:

1) 插入数据异常 (新增一个名称为体育的院系,假如这个系没有学生,依然增加不了)

2) 删除数据异常 (删除全部学生的信息, 院系也会被删除)

3,第三范式:

定义: 在2NF基础之上,消除非主属性对键的传递依赖,称为符合3NF;(要确定这个学生的院系,首先要经过学号来确定班级,通过班级来确定院系,所以院系对学号存在传递依赖;把院系拿出来单独作为一个表就可以了)

第三范式改进的地方:

1) 数据冗余降低了

2) 删除某个系全部学生,这个系不会受影响,依然存在

3) 可以插入一个没有学生的院系

以上就是关于第一范式、第二范式和第三范式的详细解释。

发表回复

相关推荐

2024年非京籍人员办理北京一老一小医保指南~

今天小编就大家都很关心的“一老一小”问题进行梳理解答,希望对大家有所帮助。

· 5秒前

健康低卡——牛油果拌飯

一年前在公眾號最開始寫的文章,慢慢發到這裡,有些青澀和簡單,卻也代表著成長。牛油果和飯拌在一起,是什麼味道瞭?好吃,...

· 1分钟前

pr流畅剪辑4k视频,需要什么硬件配置及流程?

常言道,“拍得了4k,却编辑不了4k,编辑得了4k,却看不了4k。”就是指4k对后期编辑、监看的压力巨大。怎样选择硬件才能够剪辑 ...

· 2分钟前

我所知道真实的美国生活(一)

我是2017年1月移民到的美国,第二天就赶上了特朗普宣誓就职美国第45届总统。在美国生活了5年半,经历了特朗普上任就职、中美 ...

· 2分钟前

《中国推介》河南省巩义市:诗圣故里 河洛巩义

https://www.zhihu.com/video/1621459022871207936

· 2分钟前