天天看点

数据库

数据库依赖及范式

部分函数依赖:设x,y是关系r的两个属性集合,存在x→y,若x’是x的真子集,存在x’→y,则称y部分函数依赖于x。

例如:通过ab能得出c,通过a也能得出c,通过b也能得出c,那么说c部分依赖于ab。

完全函数依赖:设x,y是关系r的两个属性集合,x’是x的真子集,存在x→y,但对每一个x’都有x’!→y,则称y完全函数依赖于x。

例如: 通过ab能得出c,但是ab单独得不出c,那么说c完全依赖于ab.

传递函数依赖:设x,y,z是关系r中互不相同的属性集合,存在x→y(y !→x),y→z,则称z传递函数依赖于x。

例如: 通过a得到b,通过b得到c,但是c得不到b,b得不到a,那么成c传递依赖于a

1、第一范式(1nf):一个关系模式r的所有属性都是不可分的基本数据项。

2、第二范式(2nf):满足第一范式,然后消除部分依赖。

3、第三范式(3nf): 满足第二范式,消除传递依赖。

     若关系模式属于第一范式,且每个属性都不传递依赖于键码,则r属于bc范式。

  通常bc范式的条件有多种等价的表述:每个非平凡依赖的左边必须包含键码;每个决定因素必须包含键码。bc范式既检查非主属性,又检查主属性。当只检查非主属性时,就成了第三范式。满足bc范式的关系都必然满足第三范式。还可以这么说:若一个关系达到了第三范式,并且它只有一个候选码,或者它的每个候选码都是单属性,则该关系自然达到bc范式。

  一般,一个数据库设计符合3nf或bcnf就可以了。在bc范式以上还有第四范式、第五范式。

  第四范式:要求把同一表内的多对多关系删除。

  第五范式:从最终结构重新建立原始结构。