数据库学习摘记 —— 关系模式的分解特性

分解:

设有关系模式R(U)和R1(U1), R2(U2), …, Rk(Uk),其中U={A1, A2, …, An},Ui U(i=1,2,…, k),且U=U1+U2+ …+Uk。令ρ={R1(U1), R2(U2), …, Rk(Uk)},ρ为R(U)的一个分解,也称为数据库模式,有时也称为模式集。

无损连接:

F是R(U)满足的一个函数依赖集,将R(U)分解成关系模式ρ={R1(U1),R2(U2) … Rk(Uk)},U=U1+U2+…+Uk。如果对R(U)中满足F的每一个具体关系r都有:

则称这个分解ρ相对于F 具有无损连接性,简称ρ为无损连接分解,即r为它自己在Ui上投影的自然连接。

无损连接的测试:

【设关系模式R(A,B,C,D,E)分解为ρ={R1(A,D), R2(A,B), R3(B,E), B4(C,D,E), R5(A,E)},其函数依赖集是F={A→C, B→C, C→D, DE→C, CE→A}】

如果R(U) 的分解为ρ={ Rl(U1),R2(U2)},其中U=U1∪U2,F为R(U)所满足的函数依赖集合,则分解ρ是无损连接的充分必要条件为 ( U1∩U2)→(U1-U2) 或者(U1∩U2)→(U2-U1)成立。

当模式R分解成两个关系模式Rl(U1)和R2(U2)时,如果其公共属性能函数决定U1或U2中的其它属性,这样的分解就是无损连接的。

   

【设关系模式R(A,B,C),F={A→B}】

R1={Rl(A,B),R2(A,C)}是无损连接的,而R2={Rl(A,B),R3(B,C)}不是无损连接。

函数依赖:

设关系模式R(U)的一个分解ρ={R1(U1),R2(U2), …, Rk(Uk)},F是R(U)满足的函数依赖集,且

函数依赖的测试:

检验一个分解是否保持函数 依赖,就是检验函数依赖集    是否覆盖函数依赖集F

设F是属性集U上的函数依赖集,Z是U上的一个子集,F在Z上的一个投影用ΠZ(F)表示,定义为:

ΠZ(F)={X→Y | (X→Y)∈F+且XYZ}

   

【设关系模式R(A,B,C,D),F={A→B, B→C,C→D,D→A},R的一个分解ρ={R1(A,B),R2(B,C), R3(C,D)}】

由函数依赖集F和分解ρ可知:

F1=Π{A,B}(F)={A→B,B→A},F2=Π{B,C} (F)={B→C,C→B},F3=Π{C,D} (F)={C→D,D→C}

G={A→B, B→A,B→C, C→B,C→D,D→C},F=F-G={D→A},Result=True

对于函数依赖D→A,即令X={D},Y={A},有X→Y,F=F-{D→A}=ф

由于Result=True,所以关系模式R的分解ρ保持函数依赖F。

性质

  • 若要求分解保持函数依赖,那么模式分解总可以达到3NF,但不一定能达到BCNF。
  • 若要求分解既保持函数依赖,又具有无损连接性,可以达到3NF,但不一定能达到BCNF。
  • 若要求分解具有无损连接性,那一定可达到4NF。

将一个关系模式R分解成3NF模式,且既保持函数依赖又具有无损连接性的算法:

  • 求出函数依赖集F的最小覆盖并仍记为F, 令ρ=ф
  • 若F中有函数依赖X→Y,满足XY=U, 则ρ=ρ∪{R(U)},则转f)。
  • 如果U中某些属性U1在F的所有函数依赖的左部和右部都不出现,则把这些属性构成一个关系模式R(U1),然后把这些属性从U中去掉,剩余的属性仍记为U,令ρ=ρ∪{R(U)}。
  • 对F中所有以X为左部的函数依赖X→Y1,X→Y2,…,X→Yk,构成关系模式 R(XY1Y2…Yk), 其函数依赖集为 { X→Y1,X→Y2,…,X→Yk},令ρ=ρ∪{R(XY1Y2…Y1)} ,F=F-{X→Y1, X→Y2, …, X→Yk}。
  • 若F= ф转f),否则转d)
  • 输出

设ρ={R1(U1), R2(U2),…, Rk(Uk)}是由上述算法得到的一个分解。设X是R(U)的一个候选键,若存在某个Ui 使XUi,则令т=ρ,否则 令т=ρ∪{Rx(X)}。

则 т 是R的一个分解,т 中所有模式都是3NF,且这个分解具有无损连接和保持函数依赖两个特性。

   

【设关系模式R(U),它满足的函数依赖集 F={A→B,AE→P, CD→A,CE→D, BC→D}已是最小函数依赖集】

ρ={R1(A,B), R2(A,E,P), R3(C,D,A), R4(C,E,D), R5(B,C,D)}

由于R的一个候选键属性集是{C,E}U4={C,E,D}

posted @ 2020-03-21 19:27  咕~咕咕  阅读(988)  评论(0编辑  收藏  举报