函数依赖与范式

函数依赖与范式

在数据库设计过程中,往往遇到数据冗余、修改异常、插入异常和删除异常等问题,为了设计一个好的数据库,人们定义了一些好的关系模式标准,称它们为规范的关系模式(简称范式,NF)。目前共定义了多个范式,分别为1NF、2NF、3NF、BCNF、4NF和5NF.但实际应用中,一般只要达到3NF.
  
函数依赖是数据库的一种约束,决定了关系模式属于哪种范式。为了理解方便,需要先了解一下函数依赖的有关概念。

1.函数依赖
  
设R(U)是属性U上的一个关系模式,X和Y是U的子集,r为R的任一关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X→Y.

如果有X→U在关系模式R(U)上成立,并且不存在X的任一真子集X′使X′→U成立,那么称X是R的一个候选键(候选码)。也就是X值唯一决定关系中的元组。一个表可以有多个候选键,可以任
意指定其中的一个为主键(主码),其他的候选键称作备用键。

如果一个关系的所有属性组合成一个键,则称该关系为全码关系属于任何一个候选键的属性称为主属性,不属于任何一个候选键的属性称为非主属性。

在R(U)中,如果X→Y,并且对于X的任何一个真子集X′,都有X′→Y不成立,则称Y对X完全函数依赖。若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖。

在R(U)中,如果X→Y(Y不是X的真子集),且Y→X不成立,Y→Z,则称Z对X传递函数依赖

闭包

在关系模式R(U,F)中被F逻辑蕴含的函数依赖全体叫做F的闭包,记做F+.

设F为属性集U上的一组函数依赖,X是U的子集,那么相对于F属性集X的闭包用X+表示,它是一个从F集使用推理规则推出的所有满足X→A的属性A的集合:X+={属性A|X→A在F+中}

如果G+=F+,就说函数依赖集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价。

2.范式

有了上述的函数依赖概念之后,我们再介绍范式的概念。

(1)第一范式(1NF):如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称 R是1NF的模式,r是规范化的关系。关系数据库研究的关系都是规范化的关系。
  
(2)第二范式(2NF):若关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么称R是2NF的模式。也就是说,只要有任何1个非主属性部分依赖于任何1个候选键,则就不是2NF.
  
(3)第三范式(3NF):如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,则称R是3NF的模式。也就是说,只要有任何1个非主属性传递依赖于任何1个候选键,则就不是3NF.
  
(4)BC范式(BCNF):若关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。也就是说,只要有任何1个属性(注意:3NF中指的是非主属性,而这里指的是任何属性,也就是包括主属性)传递依赖于任何1个候选键,则就BCNF.

你可能感兴趣的:(软件设计知识点之操作系统)