关系模式可以形式化地表示为R(U,D,dom,F); U:属性集,D:表示属性的域,dom:属性像域的映射集合,F:表示属性之间数据的依赖关系集合。
1.函数依赖分为以下几种:
函数依赖定义:假设有关系模式R(U),X和Y都是U的子集,如果R(U)中任一可能的关系r中,不存在两行记录在X上的值相同而在Y上的值不同,则称属性子集X函数决定属性子集Y,或者称Y函数依赖于X,记为X->Y.
(1)平凡函数依赖与非平凡函数依赖:在关系模式R(U)中,对于U的子集X和Y,如果X——>Y,但是Y不是X的子集,则称X->Y是非平凡函数依赖,若Y是X的子集,则称X->Y是平凡函数依赖。
提示:对于任一关系模式,平凡函数依赖都是必然成立的。
(2)完全函数依赖与部分函数依赖:在关系模式R(U)中,如果X->Y,并且对于X的任何一个真子集XX,都有XX不决定Y,则称Y完全函数依赖于X,记作X-(F)Y。如果X->Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X记作X(P)Y。
提示:如果Y对X部分函数依赖,X中的“部分”就可以确定对Y的关联,从数据依赖的观点来看,X中存在“冗余”属性。实际上,部分依赖与传递依赖是产生冗余和异常的两个重要原因。
(3)传递函数依赖
在关系模式R(U)中,如果X->Y,Y->Z,且Y不决定X,Z不属于X,则称Z传递函数依赖于X,记作X->(T)Z。
提示:传递函数依赖定义中之所以要加上条件Y不决定X,是因为如果Y->X,则X<->Y,这实际上是Z直接依赖于X,也就是直接函数依赖,而不是传递函数依赖。
2范式理论:
第一范式1NF:要求属性不可分,第一范式是设计数据库表的最低要求。如联系方式 :电环:XXX;邮箱:liu@qq.com。这个就不符合1NF。
第二范式2NF:要求在满足1NF基础上,每个非主属性完全函数依赖于候选键。
第三范式3NF:要求在满足2NF基础上,关系模式R(U,F)中的所有非主属性对任何候选键都不存在传递依赖。则称关系R是属于第三范式的模式。
注释:此文参考了杨少敏和王红敏编写的Oracle11g教程。