数据库原理系统设计、七个算法-上

1.1 函数依赖的定义

设有关系模式 R(U) ,X和Y是属性集U的子集,函数依赖(FD),是形成 X->Y的命题,即只要r是R的当前关系,对Y中任意的两个元组1s和t,都有 s[X] = t[Y] 蕴涵 t[Y] = s[Y],那么FD X->Y在关系模式中成立。

1.2 算法1 求属性集的闭包

例: 属性集U为ABCD, FD集为 {A->B, B->C , D->B}, 求A+,AD+,BD+

  • 设 X^0 = A ,.i = 0
  • A->B , X^1 = X^0 U {B} = {A,B} , i = 1
  • B->C , X^2 = X^1 U {C} = {A,B,C} , i = 2
  • 结果集中没有子集能够函数决定其他属性便结束。
  • A+ = ABC

1.3 算法2 求最小函数依赖

例:关系模式R(ABC)的FD集, F={A->BC,B->C,A->B,AB->C},求最小依赖集。

  • A->B , A->C , B->C ,A->B, AB->C
  • 将右侧化为单属性
  • AB->C, A->C,B->C
  • 去除多余函数依赖
  • A->C, B->C <=> AB->C
  • 整理后

1.4 算法3 无损分解测试

设关系模式R(ABCD),R分解成 p={AB,BC,CD},如果R上成立的函数集是F1 = {B-A, C->D},那么p相对于 F1是否是无损分解?如果 F2={A->D,C->D}呢?

  • 构建 m(p) 表
m(p)ABCD
ABa1a2b13b14
BCb21a2a3b24
CDb31b32a3a4

将第一列A与第一行AB判断包含关系,如果在表中第一列第一行写入a1(第几列便是写数字几)

  • 依照F1集对表进行修改

  • m(p) 表依照F1集修改后

m(p)ABCD
ABa1a2b13b14
BCa1a2a3a4
CDb31b32a3a4

依照函数依赖性质进行修改后,得出存在一行全为 a(n表示列)的元组时,该模式为无损分解。

  • m(p) 表依照F2集修改后
m(p)ABCD
ABa1a2b13b14
BCb21a2a3a4
CDb31b32a3a4

得出不存在一行全为 a(n表示列)的元组时,该模式为有损分解。


  1. 表示关系模式中一行记录。 ↩︎

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李同学va

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值