数据库系统中如何运用函数依赖FD推断出关系集合的键

  • 首先说明什么是关系的“键”和“超键”

1、键中的属性函数决定了关系集合中所有其他属性;

2、键的真子集不能函数决定关系集合中所有其他的属性(就是说,键必须是最小的,不是唯一的)。

以上是我在关系类型数据库系统学习中的总结。关于键的学术一点的定义可以看下面这篇博客

https://blog.csdn.net/soswzg/article/details/74367157

3、包含“键”的集合就是“超键”了,可见超键没有必要是最小的,也不是唯一的。 

  • 推断关系集合键的需要的另一个知识点——“属性集合的闭包”

1、属性集合闭包的作用:用来推导出隐藏的函数依赖关系,也就是从给出的FD推断出其他的FD;

2、属性集合闭包的计算:

 • 假设A={A1, A2, …, An}是一个属性集合,FD是 一个函数依赖的集合,则基于FD的A的闭包B 也是一个属性集合,使得所有满足FD中函数依 赖的元组都满足以下函数依赖(由FD推导出): A1 A2 … An-> B,

• A的闭包记为A+,或者{A1, A2, …, An}+。

• 研究基于函数依赖FD的A的闭包,可以分析A 的全部函数依赖,确定某个关系模式的超键, 并作为进一步研究函数依赖FD的闭包的基础。 

基于FD的属性集合闭包计算方法 

 • 基于FD集合的 {A1, A2, …, An}+计算方法如下:

(1) 设X是结果的属性集合,X初始化为{A1, A2, …, An}。

(2) 在FD集合中查找B1 B2 … Bm-> C表达式, 使得B1, B2, …,Bm在X中,C不在X中。若找到, 则C加入X。

(3) 重复步骤(2),直到X不再扩展。则可得: X= {A1, A2, …, An}+ 

• 闭包的应用:当计算出基于某个FD集合的某个属性 集合的闭包,就可以判断该FD集合在该属性集合中 所有隐含的函数依赖关系。 

下面给出例题

假设关系R(A, B, C, D, E, F)存在FD: AB->C, BC->AD, D ->E和CF-> B,求{A, B}+ ?

解答:设X = {A, B},  由AB->C可得 X = {A, B, C};

由BC -> AD可得 X = {A, B, C, D};

由D -> E可得X = {A, B, C, D, E} 

{A, B}+ = {A, B, C, D, E}  

  • 重点来了——闭包和键 

在由【美】Jeffrey D.Ullman、Jennifer Widom编写的《关系数据库系统基础教程》一书中对闭包和键有着这样的关系定义:


当且仅当A1 A2 ......An是关系的超键时,{A1 A2 ......An}+才是这个关系所有属性的集合。只有这样,A1 A2 ......An才能函数决定其他的所有属性。

如果要验证{A1 A2 ......An}是否为一个关系的键,可以?

①检查{A1 A2 ......An}+是否包含了关系集合的所有属性;

②再检查从{A1 A2 ......An}+移除一个属性后的集合X,使得X+包含关系的所有属性。

我对书上这个定义的理解就是将超键不断缩小到键的过程。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值