函数依赖与 Armstrong公理

本文深入探讨了数据库设计中的函数依赖概念,包括其定义、如何判断函数依赖的存在、以及函数依赖的不同类型,如平凡和非平凡函数依赖。此外,还介绍了函数依赖集和其闭包的概念,以及Armstrong公理在推导函数依赖中的应用。

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

  1. 函数依赖的定义:
    如果存在模式(id,name),其中id是主码。
    那么函数依赖可以写为id->name
  2. 满足函数依赖(a->b)的条件
    对实例中的所有元组对t1和t2,如果t1[a]=t2[a],则t1[b]=t2[b]
  3. 函数依赖的好处
    可以表示不能用超码表示的约束。
    如stu(id,name,sex,apartment),其中id是主码,假设apartment只有两座(男女)。
    那么sex->apartment成立,因为男生只能住男生宿舍。所以性别可以约束公寓楼
  4. 平凡的函数依赖
    如果a包含b,那么函数依赖a->b称为平凡的
  5. 函数依赖集
    一个关系模式中包含的函数依赖的集合,一般用F表示
    如F={A->B,C->D,AB->E}
  6. 函数依赖集的闭包
    在F的基础上用Armstrong公理推出的所有函数依赖。
    一般用F+ 表示。
    函数依赖的左边右边都是R的子集。因为包含n个属性的集合有2n个子集,所以最多有2n.*2n个函数依赖。
  7. Armstrong公理
    • 自反律:若a为一属性集且a包含b,则a->b
    • 增补律:若a->b且r为一属性集,则ar->br
    • 传递律:若a->b,b->c,则a->c成立
    • 推论
      • 合并律:若a->b,a->c,则a->bc
      • 分解律:若a->bc,则a->b, a->c
      • 伪传递律:若a->b,bc->r,则ac->r

简单例子

ABCD
a1b1c1d1
a1b2c1d2
a2b2c2d2
a2b3c2d3
a3b3c2d4

可以说A->C(对于a3和c2,因为没有另外一个元组A的值是a3,所以a3可以唯一决定c2)
C->A不是满足的。
AB->C,AB->D成立

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值