软考 数据库系统工程师 考点笔记

Armstrong 公理

Armstrong 公理系统设关系模式 R,其中 U 为属性集,F 是 U 上的一组函数依赖,那么有如下推理规则:

① 自反律: 若 Y⊆X⊆U,则 X→Y 为 F 所蕴含;

② 增广律: 若 X→Y 为 F 所蕴含,且 Z⊆U,则 XZ→YZ 为 F 所蕴含;

③ 传递律: 若 X→Y,Y→Z 为 F 所蕴含,则 X→Z 为 F 所蕴含。

根据上面三条推理规则,又可推出下面三条推理规则:

④ 合并规则: 若 X→Y,X→Z,则 X→YZ 为 F 所蕴含;

⑤ 分解规则: X → YZ,则 X → Y,X → Z

⑥ 复合规则: A->B,C->D,则 AC->BD

⑦ 伪传递规则: 若 X→Y,WY→Z,则 XW→Z 为 F 所蕴含;

⑧ 分解规则: 若 X→Y,Z⊆Y,则 X→Z 为 F 所蕴含。

如何求无损连接

设有关系模式 R (U,V,W,X,Y,Z),其函数依赖集:F={U→V,W→z,Y→U,WY→X},

现有下列分解:ρ={UVY,WXYZ}

R (UVY) ∩ R (WXYZ) 得出 Y

R1 - R2 得出 UV

R2 - R1 得出 WXZ

此处注意 R1 - R2,以 R1 为基准,相同项去除,保留不同项

现在只要证明 Y → UV 或 Y → WXZ 是否至少有一个成立

根据 F={U→V,W→z,Y→U,WY→X}

因为 Y→U U→V 即 Y → UV 成立

Y → WXZ 现有条件无法推出 但 Y → UV 成立 即可判断为无损连接

(额外的操作) 当两者得出交集时,通过交集判断是不是候选码,是候选码表示也是无损的

如何求函数依赖

对于属性集 ABCDEF 和函数依赖集 {A→BC,CD→E,B→D,BE→F,EF→A},拆分为

{ABCD,EFA}

U1=ABCD,F1 += {A→BC,B→D}

U2=EFA,F2 += {EF→A}

丢失了 CD→E,BE→F,因此没有保持函数依赖。

如何求闭包(求候选码)

计算关系 R 的属性集 X 的闭包的步骤以下:

第一步:设最终将成为闭包的属性集是 Y,把 Y 初始化为 X;

第二步:检查 F 中的每个函数依赖 A→B,若是属性集 A 中全部属性均在 Y 中,而 B 中有的属性不在 Y 中,则将其加入到 Y 中;

第三步:重复第二步,直到没有属性能够添加到属性集 Y 中为止。最后获得的 Y 就是 X+。

例 1, 设关系 R (A,B,C,D,E,G),

有函数依赖集 F={AB→C,BC→AD,D→E,CG→B},求 AB 的闭包。

解:首先从 AB 出发,令 X=(A,B),

因为函数依赖 AB→C 左边的全部属性都在 X 中,

因此能够把右边的 C 添加到 X 中,这时 X={A,B,C}。

其次考虑函数依赖 BC→AD,左边 B、C 均在 x 中,右边 D 不在 X 中,将其添加到 X 中,此时 X={A,B,C,D}。

再考虑函数依赖 D→E,同理可将 E 添加到 X 中,此时 X={A,B,C,D,E}。

上述方法再不能向 x 中添加属性,因此获得 (A,B) sup+={A,B,C,D,E}。

本章仅本人理解,如有错误,请大力指点!

推荐软考 微信小程序刷题软件

猜你喜欢

转载自blog.csdn.net/oldfish_/article/details/130923188