首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《三》 数据库闭包

/

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的左边加课程号)

文字丨手敲

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Of1oiBEQ5IbQd3LaGOtPI2gA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券