数据依赖,通过对一个关系中属性间值的相等与否体现出来的数据间的相互关系;是现实世界属性间相互联系的抽象;是数据内在的性质;是语义的体现。
数据依赖的类型:函数依赖(FD),多值依赖(MVD)。
关系模式中存在的问题:数据冗余太大;更新异常;插入异常;删除异常。原因:由存在于模式中的某些数据依赖引起的。解决方法:通过分解关系模式来消除其中不合适的数据依赖。
规范化理论是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖。
函数依赖,设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等,则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。X称为这个函数依赖的决定属性集(Determinant)。Y=f(X)。
函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖。
在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但Y 不属于 X,则称X→Y是非平凡的函数依赖。若X→Y,但Y 属于 X, 则称X→Y是平凡的函数依赖。
在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’ 不决定 Y, 则称Y完全函数依赖于X,记作X F→ Y。若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作X P→ Y。
在关系模式R(U)中,如果X→Y,Y→Z,且Y 不属于 X,Y!→X,则称Z传递函数依赖于X。注: 如果Y→X, 即X←→Y,则Z直接依赖于X。
设K为关系模式R<U,F>中的属性或属性组合。若K F→ U,则K称为R的一个侯选码(Candidate Key)。若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。
关系模式 R 中属性或属性组X 并非R 的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码。
范式是符合某一种级别的关系模式的集合;关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。
某一关系模式R为第n范式,可简记为R∈nNF。
如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。第一范式是对关系模式的最起码的要求,不满足第一范式的数据库模式不能称为关系数据库;但是满足第一范式的关系模式不一定是一个好的关系模式。
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题,但并不能完全消除各种异常和数据冗余。
关系模式R<U,F>中若不存在这样的码X、属性组Y及非主属性Z(Z 不属于 Y), 使得X→Y,Y !→ X,Y→Z,成立,则称R ∈ 3NF。若R∈3NF,则R的每一个非主属性既不部分函数依赖于候选码,也不传递函数依赖于候选码。采用投影分解法将一个2NF的关系分解成多个3NF的关系,可以在一定程度上解决原关系中存在的问题,但不能完全消除。
设关系模式R<U,F>∈1NF,如果对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么R∈BCNF。每一个决定属性集都包含候选码;R中的所有属性都完全函数依赖于码。没有任何属性对码的部分函数依赖和传递函数依赖。如果R∈3NF,且R只有一个候选码,则R必属于BCNF。所有非主属性完全函数依赖于每个候选码;所有主属性完全函数依赖于每个不包含它的候选码;没有任何属性完全函数依赖于非码的任何一组属性。
关系数据库的规范化理论是数据库逻辑设计的工具;一个关系只要其分量都是不可分的数据项,它就是规范化的关系,但只是最基本的规范化;规范化可以有多个不同级别。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化。
关系模式规范化的基本步骤。1NF→2NF,消除非主属性对码的部分函数依赖;2NF→3NF,消除非主属性对码的传递函数依赖;3NF→BCNF,消除主属性对码的部分依赖和传递依赖;BCNF→4NF,消除非平凡且非函数依赖的多值依赖。整体思想:消除决定属性集非码的非平凡函数依赖。
规范化的基本思想:消除不合适的数据依赖;各关系模式达到某种程度上的“分离”;采用“一事一地”的模式设计原则;所谓规范化实质上是概念的单一化。
对于满足一组函数依赖 F 的关系模式R<U,F>,其任何一个关系r,若函数依赖X→Y都成立, 则称F逻辑蕴含X →Y。
一套推理规则,是模式分解算法的理论基础。用途:求出给定关系模式的码;从一组函数依赖求得蕴含的函数依赖。
Armstrong公理系统。关系模式R<U,F>来说有以下的推理规则: Al.自反律(Reflexivity):若Y 属于 X 属于 U,则X →Y为F所蕴含。 A2.增广律(Augmentation):若X→Y为F所蕴含,且Z 属于 U,则XZ→YZ为F所蕴含。A3.传递律(Transitivity):若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。
导出规则。合并规则:由X→Y,X→Z,有X→YZ。(A2, A3)伪传递规则:由X→Y,WY→Z,有XW→Z。(A2, A3)分解规则:由X→Y及 Z属于Y,有X→Z。(A1,A3)
根据合并规则和分解规则,X→A1 A2…Ak成立的充分必要条件是X→Ai成立(i=l,2,…,k)。
在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作 F的闭包,记为F+。
设F为属性集U上的一组函数依赖,X属于U, XF+ ={ A|X→A能由F 根据Armstrong公理导出},XF+称为属性集X关于函数依赖集F 的闭包。
设F为属性集U上的一组函数依赖,X,Y 属于 U,X→Y能由F 根据Armstrong公理导出的充分必要条件是Y 属于 XF+。
如果G+=F+,就说函数依赖集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价。F+ = G+ 的充分必要条件是F 属于 G+,和G 属于 F+。
如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。F中任一函数依赖的右部仅含有一个属性;F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价;F中不存在这样的函数依赖X→A,X有真子集Z使得F-{X→A} ∪ {Z→A}与F等价。
每一个函数依赖集F均等价于一个极小函数依赖集Fm。此Fm称为F的最小依赖集。
三种模式分解的等价定义:分解具有无损连接性;分解要保持函数依赖;分解既要保持函数依赖,又要具有无损连接性。
关系模式R<U,F>的一个分解:ρ={ R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>},U=U1∪U2∪…∪Un,且不存在 Ui 属于 Uj,Fi 为 F在 Ui 上的投影。
函数依赖集合{X→Y | X→Y 属于 F+∧XY 属于 Ui}的一个覆盖 Fi 叫作 F 在属性 Ui 上的投影。
关系模式R的一个分解 ρ={ R1,R2, …,Rn}。若R与R1、R2、…、Rn自然连接的结果相等,则称关系模式R的这个分解ρ具有无损连接性(Lossless join)。具有无损连接性的分解保证不丢失信息;无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题。
设关系模式R被分解为若干个关系模式R1,R2,…,Rn(其中U=U1∪U2∪…∪Un,且不存在Ui 属于 Uj,Fi为F在Ui上的投影),若F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴含,则称关系模式R的这个分解是保持函数依赖的(Preserve dependency)。
如果一个分解具有无损连接性,则它能够保证不丢失信息;如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况;分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖。同样,保持函数依赖的分解也不一定具有无损连接性。
判别一个分解的无损连接性。建立一个n列k行的表。填入ai,或bij;对每个函数依赖做下列操作:找到Xi所对应的列中具有相同符号那些行,若其中有ai ,则全部改成ai ;否则全部行号最小的bij 。若某个bij被更改,那么该表中其它相同bij均做相同的更改;比较扫描后有无变化,无变化则终止。若表中有全a行,则分解具有无损连接性。