前/言
Meeting summary report
数据库闭包是解锁数据关系的"万能钥匙",想象你在社交网络中:
你(用户A)直接认识用户B(AB)
用户B认识用户C(BC)
用户C认识用户D(CD)
属性闭包就是找出通过你的直接或间接关系能联系到的所有人(A的闭包={B,C,D})。
01
定义和步骤
01
基本定义
给定关系R和属性集X,X的闭包X⁺是在R中通过函数依赖能推导出的所有属性集合
核心要点:
从初始属性集X出发;
应用已知的函数依赖规则;
像滚雪球一样不断扩大属性集合;
直到没有新属性可以加入;
02
计算步骤(Arm公理)
A
案例一
B
案例二
02
作用和误区
01
闭包的三大核心用途
02
常见误区澄清
03
案例分析
01
实战练习
02
Armstrong公理
Armstrong公理:数据库中的"三招功夫"就像学武功有三招基本功一样,Armstrong公理是推导所有数据依赖关系的三大核心规则。
第一招:自反律(镜子法则)
口诀:"你拥有的东西,当然能决定它自己!"
规则:如果属性集Y是属性集X的子集(Y⊆X),那么 X Y
例子:
你知道一个人的(身份证号, 姓名),那当然能确定他的(姓名)
(身份证号, 姓名) 姓名
(就像照镜子:镜子里的一定是你自己)
第二招:增广律(组合拳法则)
口诀:"如果你能决定A,那加上其他属性也照样能决定A!"
规则:如果 X Y,那么 XZ YZ(Z是任意属性集)
例子:
已知「学号 姓名」,那么:
(学号, 课程号) (姓名, 课程号)
(就像:如果你能用拳头打碎木板(XY),那戴上手套(XZ)照样能打碎(YZ))
第三招:传递律(顺藤摸瓜法则)
口诀:"如果A决定B,B决定C,那A就能决定C!"
规则:如果 X Y 且 Y Z,那么 X Z
例子:
已知「学号 系别」,「系别 系主任」
学号 系主任
(就像:如果你认识班长(XY),班长认识班主任(YZ),那你自然能联系到班主任(XZ))
附赠:三大衍生招式
从这三招还能派生出实用技巧:
1.合并规则(XY 且 XZ XYZ)
学号姓名 + 学号年龄 学号(姓名,年龄)
2.分解规则(XYZ XY 且 XZ)
学号(姓名,年龄) 学号姓名 + 学号年龄
3.伪传递规则(XY 且 WYZ WXZ)
学号系别 + (系别,年份)辅导员 (学号,年份)辅导员
终极栗子
已知函数依赖:
学号 姓名
学号 系别
系别 系主任
用Armstrong公理证明:(学号,课程号) 系主任
证明过程:
学号 系别(已知)
系别 系主任(已知)
学号 系主任(传递律:1+2)
(学号,课程号) 系主任(增广律:3的左边加课程号)
文字丨手敲
领取专属 10元无门槛券
私享最新 技术干货