Phân rã nối không mất thành BCNF.

Một phần của tài liệu Tài liệu cơ sở dữ liệu (Trang 38 - 40)

- Ví dụ2: Cho quan hệ R= (ABCDGH ), khoá là AB và tập phụ thuộc hàm

Phân rã nối không mất thành BCNF.

Thuật toán:

INPUT: Lược đồ quan hệ R, tập phụ thuộc hàm F.

OUTPUT: Một phân rã của R có nối khơng mất, sao cho mỗi lược đồ quan hệ trong phân rã có dạng BCNF.

Phương pháp: Phân rã lược đồ R thành hai lược đồ.

Lược đồ 1: Có tập các thuộc tính XA, có dang BCNF và phụ thuộc X -> A đúng. Lược đồ 2: R – A.

Lặp lại phân rã trên với R – A ở vị trí ủa R cho đến khi khơng thể phân rã được nữa hoặc lược đồ chỉ cịn 2 thuộc tính.

Bổ đề:

Mỗi lược đồ có 2 thuộc tính đều có dạng BCNF.

Nếu R khơng có dạng BCNF thì ta có thể tìm được các thuộc tính A và B trong R sao cho (R – AB) -> A.( có thể (R – AB) -> B cũng đúng). Điều ngược lại có thể khơng đúng. Chương trình: Chương trinh chính: BEGIN : Z := R; REPEAT

Phân rã Z thành Z – A và XA /* gọi thủ tục con */ Thêm XA và phân rã;

UNTIL Không thể phân rã Z Thêm Z vào phân rã.

END.

Thủ tục phân rã:

BEGIN

IF Z khơng chứa AB sao cho A Ỵ (Z – AB)+THEN RETURN Z có dạng BCNF và khơng phân rã được ELSE

BEGIN

Tìm một căp A và B; Y:=Z;

WHILE Y chứa A và B sao cho (Y – AB) -> A DO Y := Y – B;

RETURN phân rã Z –A và Y /* Y là XA trong CT chính*/ END;

END;

Ví dụ:

Cho lược đồ quan hệ R(U) = CTHRSG và tập phụ thuộc hàm F = {C -> T, HR -> C, CS-> G, HS -> R}

Áp dụng thuật tốn:

• Y = CTHRSG, A = C, B =T, C Ỵ (HRSG)+=> Y = CHRSG • Y = CHRSG, A = R, B = C, R Ỵ (HSG)+=> Y = HRSG • Y = HRSG ,A = R, B = G, R Ỵ (HS)+=> Y = HRS

• Khơng phân rã được nữa, HRS là một lược đồ trong phân rã. • Z = CTHRSG – R = CTHSG

• Y = CTHSG, A = T, B = H, T Ỵ (CSG)+=> Y = CTSG • Y = CTSG, A = T, B = S, T Ỵ (CS)+=> Y = CTG • Y = CTG, A = T, B = G, T Ỵ (C)+=> Y = CT • CT là một lược đồ trong phân rã.

• Z = CSHG

• Tiếp tục với Y = CSHG • …..

• Cuối cùng được phân rã (HRS, CT, CSG, CHS)

Một phần của tài liệu Tài liệu cơ sở dữ liệu (Trang 38 - 40)

Tải bản đầy đủ (PDF)

(80 trang)