
属性闭包求解算法——数据库考试复习
发布日期:2021-05-07 01:32:21
浏览次数:4
分类:技术文章
本文共 1201 字,大约阅读时间需要 4 分钟。
前言
属性闭包用于判定是否蕴含了某种函数依赖,如判断X→Y是否成立,转换为求X在函数依赖集上的属性闭包中是否包含了Y,如果包含则蕴含该关系,如果不包含则不蕴含此函数依赖。属性闭包是求解极小函数依赖集、候选码、判断是否保持函数依赖性、具有保持函数依赖性的3NF模式分解的关键步骤,务必熟练掌握
属性闭包求解算法
设R(U,F)是一关系模式,其中U是属性集,F为属性集上的函数依赖,X ⊆ U,求X的属性闭包,计为X F + _F^+ F+。算法如下:
① X ⊆ X F + _F^+ F+ ② 逐一考察F中的FD,如果存在V→W ∈ \in ∈F,且V中的全部属性都出现在当前的X F + _F^+ F+ 中,将属性组W并入X F + _F^+ F+ ; 当前的 X F + _F^+ F+ 包含全部属性U,或者按(2)重新遍历F而没有对当前 X F + _F^+ F+ 增加任何属性时算法结束示例
已知关系模式R<U,F>,其中U={A, B, C, D, E},F= {AB→C, B→D, C→E, EC→B, AC→B },求 (AB) F + _F^+ F+ ,(CE) F + _F^+ F+
解:求AB的属性闭包 (AB) F + _F^+ F+ ={AB} 扫描F中的函数依赖AB→C, AB ∈ \in ∈(AB) F + _F^+ F+ ,将C纳入,(AB) F + _F^+ F+={ABC} 扫描F中的函数依赖B→D,B ∈ \in ∈(AB) F + _F^+ F+ ,将D纳入,(AB) F + _F^+ F+={ABCD} 扫描F中的函数依赖C→E,C ∈ \in ∈(AB) F + _F^+ F+ ,将E纳入,(AB) F + _F^+ F+={ABCDE} (AB) F + _F^+ F+已经包含了所有属性,算法终止; (AB) F + _F^+ F+={ABCDE} 求CE的属性闭包 (CE) F + _F^+ F+={CE} 扫描F中的函数依赖AB→C, AB ∉ \notin ∈/(CE) F + _F^+ F+ ,(CE) F + _F^+ F+不变 扫描F中的函数依赖B→D,B ∉ \notin ∈/(CE) F + _F^+ F+ ,(CE) F + _F^+ F+不变 扫描F中的函数依赖C→E,C ∈ \in ∈(CE) F + _F^+ F+ ,将E纳入,(CE) F + _F^+ F+={CE} 扫描F中的函数依赖EC→B,EC ∈ \in ∈(CE) F + _F^+ F+ ,将B纳入,(CE) F + _F^+ F+={BCE} 扫描F中的函数依赖 AC→B,AC ∉ \notin ∈/(CE) F + _F^+ F+ ,(CE) F + _F^+ F+不变 扫描完成,算法终止。 (CE) F + _F^+ F+={BCE}发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月11日 08时48分58秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vue调试工具vue-devtools安装及使用
2019-03-04
CSS总结div中的内容垂直居中的四种方法
2019-03-04
[BZOJ4878]挑战NP-Hard
2019-03-04
vue指令之v-for
2019-03-04
[CF1278F]Cards
2019-03-04
用postman测试url参数
2019-03-04
Vue的is属性
2019-03-04
vue组件传参 props default 数组/对象的默认值应当由一个工厂函数返回
2019-03-04
vue爬坑之 父组件向子组件异步传参 子组件中拿不到值的解决方法
2019-03-04
js基础复习5-原型链与js的成员查找机制
2019-03-04
js基础复习8-call方法简单使用以及javascript继承
2019-03-04
【游记】被吊打DAY2
2019-03-04
微信公众号开发之素材管理
2019-03-04
修改dynamic web module的版本大小
2019-03-04
Node.js response 页面中文乱码
2019-03-04
gitee 修改个人域名 个人空间地址 URL
2019-03-04
C++11中bind的使用错误
2019-03-04
futex同步机制分析之三内核实现
2019-03-04
多线程的伪共享
2019-03-04