关系数据理论(范式)

文章目录

  • 前言
  • 一、函数依赖
    • 1.函数依赖的定义
    • 2.函数依赖的类型
    • 3.通过函数依赖理解候选码、主码、主属性
    • 4.冗余的函数依赖带来的问题
  • 二、范式和规范化
    • 1.范式和规范化的存在意义
    • 2.常考范式
    • 3.多值依赖和4NF
    • 4. 规范化总结
  • 三、最小覆盖与模式分解算法


前言

范式与规范化是数据库考试必考的内容,相关内容在课本的第6章关系数据理论。本文试图以最通俗易懂的语言整理这一部分的笔记,麻烦看官老爷点赞关注支持一下动力猿吧!


一、函数依赖

1.函数依赖的定义

首先要知道,函数依赖是数据依赖的一种。

数据依赖是一个关系内部属性与属性之间的约束关系,这种约束关系是通过属性间值的相等与否体现出来的数据间相关联系。数据依赖是现实世界属性间相互联系的抽象。数据依赖是多种多样的,教材中只讲了最重要的两个:函数依赖(Functional Dependency,FD)和多值依赖(Multi- Valued Dependency, MVD)。

函数依赖其实很容易理解,它极为普遍地存在于现实生活中。比如描述一个学生关系,可以有学号(Sno)、姓名 (Sname)、系名(Sdept)等几个属性。由于一个学号只对应一个学生,一个学生只在一个系学习。因而当“学号”值确定之后,学生的姓名及所在系的值也就被唯一地确定了。属性间的这种依赖关系类似于数学中的函数y=f(x),自变量x确定之后,相应的函数值y也就唯一地确定了。

函数依赖的定义如下:
在这里插入图片描述例如 Sname= f(Sno),Sdept=f(Sno),即Sno函数决定 Sname,Sno函数决定Sdept,就说 Sname和 Sdept函数依赖于Sno,记作Sno→Sname, Sno→Sdep。

2.函数依赖的类型

(1)平凡的函数依赖:X→Y,但Y ⊆ \subseteq X。对于任关系模式,平凡函数依赖都必然成立(X属性肯定能确定X属性自身啊),因此是废话。所以我们只讨论非平凡的函数依赖。

(2)非平凡的函数依赖:X→Y,但Y ⊈ \nsubseteq X。X称为这个函数依赖的决定属性组,也称为决定因素。

一些记号和术语:关系数据理论(范式)_第1张图片

(3)完全函数依赖: 在R(U)中,如果X→Y,并且对于X的任何一个
真子集X’,X’→Y都不成立,则称Y对X完全函数依赖,记作X → F \overset{F}{\rightarrow} FY。

(4)部分函数依赖:若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖(partial functionaldependency),记作X → P \overset{P}{\rightarrow} PY。

(5)传递依赖:在R(U)中,如果X→Y(Y ⊈ \nsubseteq X),但Y→X不成立,Y→Z(Y ⊈ \nsubseteq X),但Z→Y不成立,则称Z对X传递函数依赖,记作X → 传递 \overset{传递}{\rightarrow} 传递Z。

3.通过函数依赖理解候选码、主码、主属性

关系数据理论(范式)_第2张图片

4.冗余的函数依赖带来的问题

关系数据理论(范式)_第3张图片

上面关系模式的函数依赖就是冗余的,我们看冗余的函数依赖会产生什么问题:

关系数据理论(范式)_第4张图片

但这些问题并非无法解决,如果我们可以把这个单一的模式分解成三个关系模式:
S(Sno,Sdept,Sno→Sdept);
SC(Sno,Cno,Grade,(Sno,Cno)→Grade);
DEPT(Sdept,Mname,Sdept→Mname);
这三个模式都不会发生插入删除更新异常,数据的冗余能得到很好的控制。

二、范式和规范化

1.范式和规范化的存在意义

由上面可知,冗余的函数依赖必须进行处理,也就是分解不好的关系模式,这实际上就是对关系模式进行规范化。

规范化:为了控制由于冗余带来的问题而要求将一个低一级范式的关系模式通过模式分解转化为若干个高一级范式的关系模式的集合,这一过程称之为规范化(Normalization)。

范式顾名思义比较规范,是数据库中满足一定要求的关系。满足最低要求的叫第一范式简称1NF,随着数字的增高要求逐渐变严格。

2.常考范式

(1)1NF
关系数据理论(范式)_第5张图片

(2) 2NF
在这里插入图片描述
1NF规范化为2NF:关系数据理论(范式)_第6张图片

(3)3NF
在这里插入图片描述
2NF规范化为3NF:
关系数据理论(范式)_第7张图片关系数据理论(范式)_第8张图片

(4)BCNF
关系数据理论(范式)_第9张图片3NF规范化为BCNF:
关系数据理论(范式)_第10张图片在这里插入图片描述

3.多值依赖和4NF

考试题绝大部分只考到BCNF,多值依赖和4NF考到的可能性微乎其微,但这里还是简单总结一下。

通过上面的分析,一个模式中的关系模式如果都属于BCNF, 那么在函数依赖的范畴内, 它已实现了彻底的分离, 已消除了插入和删除异常。

尽管如此,一个属于BCNF的关系模式仍有可能存在一些问题,比如下面的关系模式,虽然属于BCNF,但数据的冗余十分明显,对数据的增删也很不方便(增删一名教师或者参考书)。
关系数据理论(范式)_第11张图片

仔细观察发现,每个课程名都确定一组教师名或者参考书名。
关系数据理论(范式)_第12张图片
我们把这类情况概括为一种新的数据依赖,称之为多值依赖。

(1)多值依赖
关系数据理论(范式)_第13张图片
关系数据理论(范式)_第14张图片

(2)4NF
关系数据理论(范式)_第15张图片
BCNF规范化为4NF:
关系数据理论(范式)_第16张图片关系数据理论(范式)_第17张图片

4. 规范化总结

规范化目的: 消除插入、删除异常,修改复杂和数据冗余等问题

规范化实质:概念单一化。即若多余一个概念就把它“分离”出去,最终使一个关系描述一个概念、一个实体或者实体间的一种联系。

规范化过程:通过对关系模式分解来实现。

关系数据理论(范式)_第18张图片

三、最小覆盖与模式分解算法

还未在真题中出现过,有待之后整理。


你可能感兴趣的:(数据库系统概论,数据库,oracle)