数据库:模式分解

模式分解

1.模式分解的定义
关系模式R<U , F>的一个分解是指
p = {R1<U1 , F1> , R2<U2 , F2>, … , Rn<Un , Fn>}
其中U = U1 U U2 U… U Un ,并且没有Ui belong to Uj 1≤i,j ≤n, Fi是F在Ui上的投影。

模式分解的要求

一个关系模式分解成若干个关系模式,则分解前后的模式要等价(即分解后没有信息的丢失)。

等价的标准常用的有:

  • (1)分解要具有无损连接性
  • (2)分解要保持函数依赖
  • (3)分解既要保持函数依赖又要具有无损连接性

无损连接性:分解后,进行自然连接,要能还原。

保持函数依赖:不能让函数依赖消失。

无损连接的判别

关系模式R<U , F>分解为关系模式R1<U1, F1> , R2<U2 , F2>是具有无损连接性的分解的充分必要条件是:

(U1∩U2 -> U1-U2) belong to F+,

或者

(U1∩U2 -> U2-U1) belong to F+。

思考一下,交集表示的是公共部分,如果公共部分能够决定各自私有部分,那么必定自然拼接后可以复原。

eg:

R(U,F) U = A B D
F = {A -> B }

P1 = {R1(AB),R2(AC)}

U1 ∩ U2 = A
U1 - U2 = B
U2 - U1 = C
A -> B valid

函数依赖的保持

也就是分解后的所有关系的函数依赖的集合的并集,与闭包相等。

设={R1<U1 , F1>, R2<U2 , F2>, … , Rn<Un , Fn>}是关系模式R<U, F>的一个分解
如果F+=(F1UF2U…UFn)+,则称是保持函数依赖的分解

一些结论

  • (1)分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定保持函数依赖,保持函数依赖的分解不一定具有无损连接性。一个关系模式的分解可能有三种情况。
  • (2)若要求分解具有无损连接性,那么分解后的模式一定能达到BCNF。
  • (3)若要求分解保持函数依赖,那么分解后的模式总可以达到3NF,但不一定能达到BCNF。
  • (4)若要求分解既具有无损连接性,又保持函数依赖,则分解后的模式可以达到3NF,但不一定能达到BCNF。

猜你喜欢

转载自blog.csdn.net/interval_package/article/details/125111522