Thu t tốn 2.1: Chu n hĩa l p v 1FON F
Vào: L p đ i t ng m C(U) cĩ n thu c tính
Ra: Tách l p C v 1FONF khơng m t mát thơng tin
Ph ng pháp:
t D = C;
B c 1: N u l p D cĩ d ng i, ii và Ai khơng ph i là thu c tính khĩa thì ta tách l p D thành hai l p C và C1 1FONF nh sau:
(i) Class D tuple(A1: T1, A2: T2, …, Ai: set(tuple( X: TX)), …, An: Tn) Tách l p D thành 2 l p C và C1nh sau:
- 44 -
+ class C tuple(A1: T1, A2: T2, …, Ai: set(C1), …, An: Tn) + class C1 tuple(X: TX)
Các ph ng th c ph thu c vào A1, A2, A3, …, An đ c phân vào l p C, các
ph ng th c ph thu c vào t p thu c tính Aiđ c phân vào l p C1. Vi t l i các ph ng th c trong C, C1 cho phù h p d a vào t p thu c tính và ki u c a nĩ
trong l p đĩ.
(ii) class D tuple(A1: T1, A2: T2, …, Ai: tuple(B1: I1, B2: I2,…, Bi: set(tuple(X:
TX)), …, Bm: Tm), …, An: Tn) Tách D thành 2 l p C và C1nh sau:
+ class C tuple(A1: T1, A2: T2, …, Ai: tuple(B1: I1, B2: I2,…, Bi: set(C1)), …, Bm: Tm), … An: Tn)
+ class C1 tuple(X: TX)
Các ph ng th c ph thu c vào A1, A2, A3, …, An đ c phân vào l p C, các
ph ng th c ph thu c vào t p thu c tính Biđ c phân vào l p C1. Vi t l i các ph ng th c trong C, C1 cho phù h p d a vào t p thu c tính và ki u c a nĩ
trong l p đĩ.
B c 2: N u l p D cĩ d ng ii, iii và Ailà thu c tính khĩa thì ta tách l p D thành ba l p C, C1 và C2(đ i v i ii), thành 2 l p C, C1(đ i v i iii) nh sau:
(ii) class D tuple(A1: T1, A2: T2, …, Ai: tuple(B1: I1, B2: I2,…, Bi: set(tuple(X:
TX)), …, Bm: Tm), …, An: Tn) Tách D thành 3 l p C, C1 và C2 nh sau:
+ class C tuple(A1: T1, A2: T2, …, Ai: C1, …, An: Tn) + class C1 tuple(B1: I1, B2: I2,…, Bi: set(C2)), …, Bm: Tm) + class C2 tuple(X: TX)
Các ph ng th c ph thu c vào A1, A2, A3, …, An đ c phân vào l p C, các
ph ng th c ph thu c vào thu c tính Ai đ c phân vào l p C1, các ph ng
th c ph thu c vào t p thu c tính Bi đ c phân vào l p C2. Vi t l i các ph ng th c trong C, C1, C2 cho phù h p d a vào t p thu c tính và ki u c a
- 45 -
nĩ trong l p đĩ.
(iii) class D tuple(A1: T1, A2: T2, …, Ai: tuple(X: TX), …, An: Tn) Tách D thành hai l p C và C1nh sau:
+ class C tuple(A1: T1, A2: T2, …, Ai: C1, …, An: Tn) + class C1 tuple(X: TX)
Các ph ng th c ph thu c vào A1, A2, A3, …, An đ c phân vào l p C, các
ph ng th c ph thu c vào t p thu c tính Aiđ c phân vào l p C1. Vi t l i các ph ng th c trong C, C1 cho phù h p d a vào t p thu c tính và ki u c a nĩ
trong l p đĩ.
K t thúc;
M nh đ 2.1: Thu t tốn 2.1 là đúng đ n.
Ch ng minh: Ta c n ch ng minh theo hai tr ng h p t ng ng v i b c 1, 2
b c 1 c a thu t tốn: (*)
+ Theo đ nh ngh a 2.5 ta cĩ l p D = R(C, C1.Ai) vì v y r= (C, C1) là phép tách 2 khơng m t thơng tin c a D.
b c 2 c a thu t tốn: (**)
+ N u l p D thu c d ng (ii), theo b đ 2.3, ta cĩ r = (C, C1, C2) là phép tách 3 khơng m t thơng tin c a D.
+ N u l p D thu c d ng (iii), c ng theo đ nh ngh a 2.5 ta cĩ l p D = R(C, C1.Ai), vì v y r= (C, C1) là phép tách 2 khơng m t thơng tin c a D.
T (*) và (**) ta suy ra l p D đ c tách v 1FONF khơng m t thơng tin. < Các l p Ci n u ch a d ng chu n 1FONF, ta cĩ chuy n chúng v d ng chu n
1FONF b ng cách áp d ng thu t tốn 2.1. Theo b đ 2.3, l p C đ c tách thành các l p nh th là khơng m t thơng tin.
Gi s các ph ng th c c a l p C là tr u t ng, khi đĩ, đ ph c t p thu t tốn
2.1 ph thu c vào s l n tách l p D. Tr ng h p t i nh t là t i b c 2, l p D thu c
d ng (ii), s l n tách t i đa là (3 ´ n) v i n là s thu c tính c a l p đ i t ng m C. V y, đ ph c t p c a thu t tốn là O(n).
- 46 -
nh ngh a 2.13: M t l cđ CSDL h ng đ i t ng m đ c g i là 1FONF n u
m i l p trong l c đ CSDL h ng đ i t ng m đ u 1FONF.