多值依赖属4nf的定义范围,比
函数依赖要复杂得多。在
关系模式中,函数依赖不能表示
属性值之间的一对多联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有间接的联系称为多值依赖的
数据依赖。
设R(U)是属性集U上的一个
关系模式。X,Y,Z是U的
子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,
当且仅当对R(U)的任一关系r,给定的一对(x,z)值有一组Y的值,这组值仅仅决定于x值而与z值无关。
若X→→Y,而Z为
空集,则称X→→Y为平凡的多值依赖;若Z不为空,则称其为非平凡的多值依赖。
有这样一个关系 <仓库管理员,仓库号,库存产品号> ,假设一个产品只能放到一个仓库中,但是一个仓库可以有若干管理员,那么对应于一个 <
仓库管理员,库存产品号>有一个仓库号,而实际上,这个仓库号只与库存产品号有关,与管理员无关,就说这是多值依赖。
为降低
数据冗余,作模式分解,使子模式的Z=Ø,仅有平凡多值依赖。对前例,子模式为R1(仓库,雇员),R2(仓库,物资)