1.1 .1Khái niệm về cơ sở dữ liệu
4.6. Phép tách các lược đồ quan hệ
4.6.3 Phân rã bảo tồn phụ thuộc
4.6.3.1 Định nghĩa phụ thuộc hàm được bao trong một lược đồ quan hệ
Một phụ thuộc hàm f: X->Y dược gọi là phụ thuộc hàm được bao trong lược đồ quan hệ R nếu XY R+
Một phụ thuộc hàm f: X->Y dược gọi là phụ thuộc hàm được bao trong lược đồ cơ sở dữ liệu D = { R1, R2,..., Rp} nếu f được bao trong Rj, i [1..p].
f G+, f được gọi là bị ép thoả trong lược đồ cơ sở dữ liệu D. f (F+ - G+), f được gọi là khơng bị ép thoả trong lược đồ cơ sở dữ liệu D.
Gọi G là tập tất cả các phụ thuộc hàm được bao trong D ta nĩi tập phụ thuộc hàm F được gọi là bị ép thoả trong D nếu FG.
Ví dụ: Cho D= { R1, R2, R3 } với R1(A,B,C), R2(B,C,D), R3(D,E) Xét F ={ A -> BC, C -> A, A -> D, D -> E, A -> E}
Ta nhận thấy phụ thuộc hàm A->D và A->E khơng được bao trong D nhưng F bị ép thoả trong D vì ta tìm được tập G={ A-> BC, C ->A, D->E, C -> D} gồm các phụ thuộc hàm được bao trong D và G F.
4.6.3.3 Điều kiện phân rã bảo tồn phụ thuộc
Một phân rã là bảo tồn phụ thuộc F nếu F bị ép thoả trong với tư cách là một lược đồ cơ sở dữ liệu.
4.6.3.4 Giải thuật kiểm tra phân rã cĩ bảo tồn phụ thuộc
Cho lược đồ quan hệ R, tập phụ thuộc hàm F định nghĩa trên R và phân rã = {Rj} j =1.. n.
Giải thuật Eclosure(X,F, )
Vào: tập thuộc tính X, Tập phụ thuộc hàm F, phân rã Ra : X+ F Phương pháp: 1. Y := 2. While Y <> X do Begin Y:=X; for Rj do X := X U ((X Ri)+F Ri); End; 3. Return X; Giải thuật Enforce(F, )
Vào : Tâp phụ thuộc hàm F, phân rã Ra : Đúng, Sai
Phương pháp:
1. For fF, f khơng được bao trong , f: X->Y do if Not Y Eclosure(X,F, ) then return False; 2. Return true;
={(AB),(BC),(CD)}. Kiểm tra phân rã cĩ bảo tồn phụ thuộc F khơng?
Ta nhận thấy chỉ cĩ phụ thuộc hàm D -> A khơng được bao trong . Áp dụng giải thuật Enforce(F, ) ta kiểm tra Y cĩ chứa trong Eclosure(D)?
Tính tốn ta được Eclosure(D)=ABCD tức A Eclosure (D). Suy ra phân rã bảo tồn phụ thuộc trong F.