数据库|关系的无损链接、函数依赖的判断

关系的无损链接、函数依赖的判断 1.关系的无损连接
首先什么是有损,什么是无损连接?
答:有损:不能还原无损:可以还原
无损连接分解:指将一个关系模式分解成若干个关系模式后,通过直燃链接和投影运算仍然能还原到原来的关系模式。
这里先讲判断无损连接的两种方法:
① 适用于分解为两个关系模式的运算
1.分别求出 R1∩R2 →(R1-R2)和R1∩R2 →(R2-R1);
2.然后看是否和函数依赖F有对应。若有对应,即为无损连接。
例如:
R = {A, B, C}, F={ A→B }, 则 P1 = { R1(AB), R2(AC) }、P2 = { R1(AB), R2(AC) }, 是不是无损分解?
R1∩R2 = A;
R1-R2 = B;
R2-R1 =C;
由①.1 可知:即:A→B 或 A→C
A→B和函数依赖F{ A→B } 有对应,即是无损连接。
② 表格法
直接看例子理解会好些
例如
将一个具有函数依赖: 学号→姓名,课程号→课程名,(学号,课程号)→ 分数的关系模式:成绩(学号,姓名,课程号,课程名,分数),分解为:成绩(学号,课程号,分数);学生(学号,姓名);课程(课程号,课程名)。让你判断分解是否具有无损连接性。
答:本题目关系划分为成绩、学生、课程三个关系,所以解决本题目适用于表格法。
1. 初始表格:

学号 姓名 课程号 课程名 分数
成绩 a1 b12 a3 b14 a5
学生 a1 a2 b23 b24 b25
课程 b31 b32 a3 a4 b35
注:
表格第一行:原关系中所拥有的一系列属性。
表格第一列:拆分分解成的关系名称。
a1:由题目知道成绩(学号,课程号,分数);学号在成绩中 ,所以用a,又因为第一列 所以是a1。
b12:姓名不在拆分分解成的成绩关系中,故用b,又因为在第一行第二列,所以b12。
其它以此类推。

2. 然后根据函数依赖进行表格变化,达到最终目的。
经变换后表格:
学号 姓名 课程号 课程名 分数
成绩 a1 a2 a3 a4 a5
学生 a1 a2 b23 b24 b25
课程 b31 b32 a3 a4 b35

注:
表格变换依据规则如下:
依据函数依赖中关系→学号,表中即 a1→a2, a1→b12 ; 即可以把 b12也换成 a2。最后看能否组成一行全部是 a 的序列。若能,则分解是无损的。
本题中第一行组成了全a序列,即说明分解是无损的。
函数依赖判断 函数依赖:是数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。
保持函数依赖即是保持分解前后的这种约束关系。

举个简单易懂的例子。
现有关系R(A,B ,C),函数依赖F{ A→B, B→C }。
(1)分解为R1 (A,B),R2(B,C),问是否保持函数依赖?
答:R1包含有 A→B, R2包含有 B→C。包含了函数依赖F中全部依赖关系,所以保持了函数依赖 。
(2)分解为R1 (A,B),R3(A,C),问是否保持函数依赖?
答:虽然R1包含有 A→B,但是R2并没有包含出 B→C的关系约束。即分解后整个关系并没有完整包含题目中函数依赖F中的函数依赖关系。故没有保持函数依赖 。


爱 Yang

【数据库|关系的无损链接、函数依赖的判断】

    推荐阅读