数据库中的数据依赖

本文深入解析了函数依赖的各种类型,包括平凡函数依赖、非平凡函数依赖、全函数依赖、部分函数依赖、传递函数依赖和直接函数依赖,以及多值依赖和连接依赖的概念。详细解释了这些依赖如何影响数据模式设计,并提供了消除多值依赖的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

名称说明
函数依赖 

两个实例化的属性集X,Y,如果属性集X中的两个元组取值相同,必有对应的另外一个属性集Y中元组取值相同,则称Y函数依赖于X函数。

特别值得注意的是,如果属性集X中不存在两个取值相同的元组集合,则Y必定依赖于函数X,且函数X的属性集为超键。

平凡函数依赖如果Y依赖于X,同时Y是X的子集,那么称X -> Y 为平凡函数依赖
非平凡函数依赖Y不是X的子集。对于任意关系模式而言,平凡函数依赖是必然成立的,其并不反映新的语义特征,因此我们一般不讨论平凡函数依赖。
全函数依赖完全函数依赖表示的就是函数X的属性集构成了候选键。其中形式化的表示就是如果对于X的任何一个子集Z,都有Y不依赖于X,则称Y完全函数依赖于X。
部分函数依赖如果Y不完全函数依赖于X,则称Y部分函数依赖于X。
传递函数依赖如果Y函数依赖于X,Z函数依赖于Y,其Y不是X的子集,X不依赖于Y,则称Z传递依赖于X。
直接函数依赖否则称Z直接函数依赖于X。
多值依赖定义:对于某个关系上的三个属性A, B, C。如果属性B,C的取值都不单一,同时B的取值与C无关,也就是B依赖于A,随着A取值的变化可以取不同的值。
形式化描述:设R(U)是属性集U上的一个关系模式。X,Y,Z是的U的子集,并且Z=U-X-Y,如果对R(U)的任一关系r,都有如下性质:如果r中存在2个元组s、t,使得:s[X]=t[X] ,则r中必存在元组u,使得: (1) s[X]=t[X]=u[X] (2) u[Y]=t[Y] 且 u[Z]=s[Z] (即交换s、t在Y上的值得到的2个元组必在r中) 则称关系模式R满足多值依赖X→→Y。
注意事项:多值依赖会导致数据冗余和更新异常,因此在进行数据模式设计的时候,要消除多值依赖。一般使用的方法是建立两个关系,让每个关系只存储一个多值属性的数据。
连接依赖设关系模式R、Ri的属性集是U、Ui,UiU(1≤i≤n).若R每个容许的实例r均满足r=∏U1(r)∞...∞∏Un(r)则称R满足连接依赖,记作∞(R1,...,Rn).若其中某个Ui=U,则称连接依赖是平凡连接依赖。 多值依赖也是连接依赖。

https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E4%BE%9D%E8%B5%96/3192421?fr=aladdin

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值