打赏

数据库函数依赖与范式

  • 数据库基本概念

实体:客观世界可以相互区别的事务。

属性:实体所具有的某种特性。

元组:数据表中的一行。

候选码/主码:数据表中可以唯一确定一个元组的一个或一组属性叫候选码。如果候选码有多个,则选定一个作为主码。

主属性:包含在任何一个候选码中的属性称为主属性。

非主属性:不包含在任何候选码中的属性称为非主属性或非码属性。

最简单的情况,单个属性是码;最极端的情况,整个属性组是码,成为全码。

  • 函数依赖

函数依赖不是指关系关系模式R的某个或某些关系满足的约束条件,而是指R的一切关系均要满足的约束条件。

设R(U)是属性U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作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->Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖。
在R(U)中,如果X->Y(Y⊄X),Y不确定X,Y->Z,Z⊄Y则称Z对X传递函数依赖。

  • 范式

关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件。最基本的条件是关系的每一个量必须是一个不可分的数据项。规范化的关系简称为范式(Normal Form),NF。

第一范式(1NF)

每一个属性分量必须是不可分的数据项。

第二范式(2NF)

若R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF。

第三范式(3NF)

设关系模式R<U,F>∈1NF,若R中不存在这样的码X,属性组Y及非主属性Z(Y不包含Z)使得X->Y,Y->Z成立,X不决定Y,则称R<U,F>∈3NF。

任何非主属性都直接依赖于主属性,不能传递依赖于主属性。

BCNF

关系模式R<U,F>∈1NF,若X->Y且X不包含Y时X必含有码,则R<U,F>∈BCNF。也就是说,关系模式R<U,F>中,若每一个决定因素都包含码,则R<U,F>∈BCNF。

BCNF在3NF的基础上,任何非主属性不能对候选码的子集依赖(在3NF的基础上,消除主属性对候选码的部分函数依赖和传递函数依赖。

第四范式(4NF)

关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X->->Y(X不包含Y),X都含有码,则称R<U,F>∈4NF。

多值依赖的概念:

多值依赖就是属性之间的一对多关系,记为K->->A。

平凡的多值依赖:全集U=K+A,一个K可以对应于多个A,即K->->A。

非平凡的多值依赖:全集U=K+A+B,一个K可以对应于多个A,也可以对应于多个B,A与B互相独立,即K->->B,K->->A。

第四范式是在BCNF的基础上,清除非平凡且非函数依赖的多值依赖(把同一表中的多对多的关系删除)。

关系数据库中的关系是要满足一定条件的,满足不同程度要求的为不同范式。
1NF->2NF消除非主属性对码的部分函数依赖。
2NF->3NF消除非主属性对码的传递函数依赖
3NF->BCNF消除主属性对码的部分和传递函数依赖
BCNF->4NF消除非平凡且非函数依赖的多值依赖

posted @ 2023-02-05 17:25  不像话  阅读(183)  评论(0编辑  收藏  举报