关系数据理论,这一章主要是在前面学过的关系表上面进行优化,因为在实际操作的过程中会遇到一些问题,进而提出一些规范化的概念和理论。
首先再提一下前面学过的关系模式:
关系模式由五部分组成:R(U, D, DOM, F)
R是符号化的元组语义
U为一组属性
D为属性组U中的属性所来自的域
DOM为属性到域的映射
F为属性组U上的一组数据依赖
数据依赖
因为在实际构建表完,进行一些基于基本表的操作时,出现一些问题,例如:
(1)数据冗余(2)更新异常
(3)插入异常(4)删除异常
基于上面的一些不好的性质,进一步提出啦规范化的概念及标准。
一、规范化
1.函数依赖
定义:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在: 两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X→Y。
简单来说就是X可以确定Y。
(1)平凡函数依赖与非平凡函数依赖
X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。
(2)完全函数依赖与部分函数依赖
定义:在R(U)中,如果 X → Y X \rightarrow Y X→Y ,并且对于X的任何一个真子集X’, 都有 X ′ ↛ Y X' \not\rightarrow Y X′→Y,则称Y对X完全函数依赖,记作 X ⟶ F Y X \stackrel {F} {\longrightarrow} Y X⟶FY。 若 X → Y X \rightarrow Y X→Y ,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作 X ⟶ P Y X \stackrel {P} {\longrightarrow} Y X⟶PY。
(4)传递函数依赖
在R(U)中,如果X→Y(Y⊈X),Y↛X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖。记为:X → Z。
特别地,这里如果 Y → X Y \rightarrow X Y→X,则 Z 直接依赖于 X 啦,而不是传递函数依赖啦。
2.码
设K为R中的属性或属性组合。若 K → U,则K为R的候选码。
如果 U 部分函数依赖于 K,即 K ⟶ P U K \stackrel {P} {\longrightarrow} U K⟶PU,则 K 为超码。候选码是最小的超码,即 K 的任意一个真子集都不是候选码。
若候选码多余一个,则选择其中的一个为主码。
(1)主属性与非主属性
包含在任何一个候选码中的属性称为主属性,不包含在任何候选码中的属性称为非主属性或非码属性。极端的,整个属性组都是码,称为全码。
(2)外码
关系模式 R中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码,也称外码。
3.范式
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
(1)第一范式
二维表每个分量必须是不可分开的数据项。满足了这个条件的关系模式一般就属于1NF。
(2)第二范式
关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码。
(3)第三范式
设关系模式R∈1NF,若R中不存在这样的码X,属性组Y及非属性组Z(Z ⊉ Y)使得X→Y,Y→Z成立,Y↛ X,则称R∈3NF。
(4)BCNF
关系模式R∈1NF,若X → Y且 Y ⊈ X 时X必含有码,则R∈BCNF。即在R中,每一个决定因素都包含码。
一般来说,满足下述条件:
4.多值依赖
设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
(1)4NF
关系模式R∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R∈4NF。
简单介绍一下闭包的概念:
闭包(记作X+ )就是由一个属性直接或间接推导出的所有属性的集合。
最后,在简单介绍一下规范化小结。
还有几个重要的定理和推论。
最后,再附上第六章作业的照片,完结。
总结:
这一章还是需要多思考和复习的,对于 NF 的定义,码和函数依赖的一些概念的确立,尤其是对候选码的选取尤为关键,这其中有一些技巧,主属性和非主属性的确定也因此而确立,以及第几范式的归属,和对模式进一步的分解,分解至何种程度比较好等等,还得多复习,多记忆。