非常详细的范式讲解(1NF/2NF/3NF/BCNF)|编程一对一教学(下)

简介: 范式在计算机方面运用广泛,在计算机二级三级均涉及到,今天就来讲讲范式。要是能够认真的看完,相信一定能够理解的。在讲范式之前,我们先来了解有关范式的基本概念,听懂了有利于后面的学习。

3. 范式


范式是符合某一种级别的关系模式的集合。下图就是表现范式级别(低范式包含高范式)。

满足高范式的同时,也一定满足低范式。


10.png

3.1 一范式——1NF


一关系模式 R 的所有属性都是不可分的基本数据项(即表中不能再有表)。则 R∈1NFs。第一范式是对关系模式的最低要求,如果一个关系模式不满足 1NF 则不能称为关系模式。

例如,以下这个关系就不满足 1NF,因为“成绩”还能在分为“期中成绩”和“期末成绩”。

1.png

当然,S-L-C 满足 1NF,它中的元素都是不能再分。


3.2 二范式——2NF


R∈1NF,并且不存在非主属性部分依赖于R的候选码,则 R∈2NF

这里还有很多的说法,还可以说每一个非主属性都完全函数依赖于 R 的候选码

例如上述例子

2.png

sdept 和 sloc 部分函数依赖于 S-L-C 的候选码 (sno,cno),所以 S-L-C 不满足 2NF。


则会出现问题:


1.插入异常:假设学号 sno=123,专业 sdept=IS,宿舍 sloc=N 的学生还没有选课(则表示 cno 为空),则该学生无法将学生信息录入进系统。(因为 cno 为主属性,不能为空)。

2.删除异常:假设一学生只选了一节课,但是现在他想将这门课退了,则将需要将这门课在这名学生系统中删除,但是在删除时,会把该学生的其它信息也会删除(因为 cno 为主属性)。

3.数据冗余大:假设一学生选了10节课,则 sdept 和 sloc 也会重复 10 次。

4.修改复杂:因为数据冗余大,则修改也会复杂。

所以 S-L-C 不是一个很好的关系模式,所以我们需要将 S-L-C 分解,消除 sdept 和 sloc 对(sno,cno)的部分函数依赖。

3.png

得到 S-C 和 S-L,其中 S-C 的候选码为(sno , cno),非主属性 grade 完全函数依赖于(sno , cno)所以 S-C∈2NF,同理非 S-L 的非主属性 sdept 完全函数依赖于候选码 sno,同理,sloc 完全函数依赖于候选码 sno,所以 S-L∈2NF。


分解完毕,现在就解决上述的问题了。


综上,2NF 要注意非主属性对候选码的函数依赖,如果存在着部分函数依赖,则不满足 2NF,反之,满足 2NF。


3.3 三范式——3NF


简单的说,在满足 2NF 的基础上,关系模式中不存在传递函数依赖

例如在上述例子中的 S-L,存在 sno→sdeptsdept→sloc,并且有 sno→sloc,所以存在函数传递依赖,不满足 3NF。

并且在2NF任然存在问题,以上述S-L为例:

插入异常:若刚成立一个专业(sdept),但是还没有学生(sno),则无法向数据库中录入sdept 和 sloc。

删除异常:若一个专业的学生全部毕业,需要将学号删除时,则 sdept 和 sloc 也会被删除。

数据冗余大:若同一个专业的学生住在一起(即 sloc 都相同),就会有很多的 sloc 重复。

修改复杂:因为数据冗余大,所以要修改时很复杂。

所以 S-L 也不是一个很好的关系模式,需要将其分解,也就是让 S-L 满足3NF。


解决办法:消除传递函数依赖。

4.png

这样就解决了 2NF 存在的问题了。

这里补充一个知识点:

  1. 所有高范式成立,则低范式也一定成立,即若 R∈3NF,则一定 R∈2NF
  2. R∈3NF,则 R 的每一个非主属性既不部分函数依赖于候选码,也不传递函数依赖于候选码


3.4 BCNF


没有任何属性(主属性和非主属性)对候选码的部分函数依赖和传递函数依赖

以下例子,

5.png

因为候选码为(S,T)和(S,J),所以主属性为(S,T,J),不存在非主属性。所以一定满足3NF。

但是这里存在 主属性对候选码的部分函数依赖,所以不满足 BCNF。


3.5 4NF 和 5NF


当然还有 4NF 和 5NF,原理和以上的一样,不是很重要。

这里就简单的了解一下,

4NF:当 R∈BCNF消除非平凡且非函数依赖的多值依赖

5NF:当 R∈4NF,消除不是由候选码所蕴含的连接依赖。如果关系模式R中的每一个连接依赖均由 R 的候选码所隐含


总结


在范式的学习中,一定要把知识点弄清,例如部分函数依赖,完全函数依赖,候选码,主属性等等。把原理搞懂了,很有利于后面的学习。其实搞懂了范式还是非常简单的。






目录
相关文章
|
9月前
|
SQL Oracle 关系型数据库
第三范式(3NF)
第三范式(3NF)是关系数据库设计中的规范化级别之一。它建立在第一范式(1NF)和第二范式(2NF)的基础上
226 1
|
9月前
|
存储 SQL 数据库
第一范式(1NF)
第一范式(1NF)是关系数据库设计中的基本规范化级别。它要求每个表中的每个列都只包含原子值,也就是说,每个列中的数据不可再分。
223 2
|
9月前
|
存储 SQL 数据库
第二范式(2NF)
第二范式(2NF)是关系数据库设计中的规范化级别之一。它建立在第一范式(1NF)的基础上,并要求满足以下两个条件:
275 1
|
JavaScript 数据库 Python
数据库系统概论——函数依赖、码和范式(1NF、2NF、3NF、BCNF)详解
关系模式由五部分组成,即它是一个五元组: R(U,D,DOM,F)R(U, D, DOM, F)R(U,D,DOM,F)关系模式R(U,D,DOM,F)R(U, D, DOM, F)R(U,D,DOM,F)中,DDD和DOMDOMDOM与逻辑结构设计关系不大,因此,将关系模式简化为一个三元组:当且仅当UUU上的一个关系rrr 满足FFF时,rrr称为关系模式R(U,F)R(U, F)R(U,F)的一个。设R(U)R(U)R(U)是一个属性集UUU上的关系模式,XXX和YYY是UUU的子集。若对于R(U)R(
313 0
数据库系统概论——函数依赖、码和范式(1NF、2NF、3NF、BCNF)详解
|
存储 关系型数据库 数据库
无敌!关系型数据库范式分析,第一范式、第二范式、第三范式、BC范式、第四范式、第五范式
无敌!关系型数据库范式分析,第一范式、第二范式、第三范式、BC范式、第四范式、第五范式
447 0
无敌!关系型数据库范式分析,第一范式、第二范式、第三范式、BC范式、第四范式、第五范式
非常详细的范式讲解(1NF/2NF/3NF/BCNF)|编程一对一教学(上)
范式在计算机方面运用广泛,在计算机二级三级均涉及到,今天就来讲讲范式。要是能够认真的看完,相信一定能够理解的。
134 0
非常详细的范式讲解(1NF/2NF/3NF/BCNF)|编程一对一教学(上)
非常详细的范式讲解(1NF/2NF/3NF/BCNF)|编程一对一教学(中)
范式在计算机方面运用广泛,在计算机二级三级均涉及到,今天就来讲讲范式。要是能够认真的看完,相信一定能够理解的。 在讲范式之前,我们先来了解有关范式的基本概念,听懂了有利于后面的学习。
121 0
|
安全 Linux 开发者
iptables 的使用概念 | 学习笔记
快速学习iptables 的使用概念
iptables 的使用概念 | 学习笔记
|
算法 关系型数据库 5G
本书的目的和篇章结构 | 带你读《5G-NR信道编码》之五
2017 年 12 月,在葡萄牙里斯本的 3GPP RAN#78 次会议上,5G-NR 的第一 个版本获得通过 [17]。这标志着 5G 第一阶段的标准化工作已经完成(eMBB 部分)。 作为 5G 物理层的关键技术,先进的编码将对满足 5G 主要场景的性能指标发挥重 要作用。根据作者的了解,目前,无论是国外还是国内,尚未有一本能比较全面介 绍 5G 信道编码的书,这本书的目的就是给读者呈现 5G 信道编码的丰富画面。
本书的目的和篇章结构  | 带你读《5G-NR信道编码》之五
|
数据库
解析范式(1NF-4NF)
最近又翻了下《数据库系统概论》,看了一节很基本的关于范式的介绍,虽然很理论化,但还是有必要了解一下
1687 0