快捷搜索: 王者荣耀 脱发

数据库系统概论:判别一个分解的无损连接性

1. 无损连接定义

无损连接是指分解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不多出信息、又不丢失信息。

2. 判别无损连接的方法

  1. 定理判别(适合关系模式R分解为两个关系模式R1、R2时) 若关系模式R<U,F>中,被分解为p={R1<U1,F1>, R2<U2,F2>}是R的一个分解,若R1∩R2 → R1 - R2或者R1∩R2 → R2 - R1,则称p具有无损连接性
  2. 图示法:所有情况都适合—具体如例题

3. 例题

(1).题目

已知R<U,F>,U={A,B,C},F={B->C},R的一个分解为R1(A,B),R2(B,C) 判断分解p是否为无损连接

(2).定理判别法

首先计算 R1∩R2 为B,R2-R1为C,因为B->C因此分解是无损连接 所以为无损连接

(3).图示法

  1. 构造初始表(i行j列) 观察题目,含有A,B,C三个属性,两个分解模式R1(A,B),R2(B,C)因此构造的表是2行3列,即每一列对应一个属性,每一行对应分解中的一个关系模式 如图所示,一行对应一个关系模式,若属性在包含在本行的关系模式中,则将其标记为aj,否则填上bij。 本题中第一个关系模式R1(A,B),因此A,B包含在第一行,第二个关系模式R2(B,C)因此B,C包含在第二行
A B C a1 a2 b13 b11 a2 a3
  1. 对于F{X->Y}中每一个依赖关系,找到X所对应的列中具有相同符号的那些行,在Y所对应的列中若其中有ai,则全部改为ai,否则填上bij. 如本题: F中依赖关系为B->C,B所对应的第一行和第二行中都具有a2,同时C所对应的列中含有a3,则将b13改为a3 如图
A B C a1 a2 a3 b11 a2 a3
  1. 如果在某次更改之后,有一行成为a1,a2,…an,则算法终止,称分解具有无损连接性。 如本题分解之后,第一行变为a1,a2,a3则具有无损连接性。
经验分享 程序员 微信小程序 职场和发展