Dạng chuẩn 3: BCNF (Boyce Codd Normal Form)

Một phần của tài liệu Cosodulieu unicode Đại cương cơ sở DL (Trang 65 - 67)

1.1 .1Khái niệm về cơ sở dữ liệu

5.5. Dạng chuẩn 3: BCNF (Boyce Codd Normal Form)

5.5.1 Định nghĩa

Một quan hệ R ở dạng chuẩn BCNF nếu mọi định thuộc đều là khĩa.

Thuộc tính X được gọi là định thuộc nếu X định trị hàm 1 thuộc tính khác nghĩa là X cĩ phụ thuộc hàm với thuộc tính khác.

Ví dụ : R (S#, P# , SNAME, QTY)

S#, P#  QTY

SNAME, P#  QTY

S#  SNAME

SNAME  S#

 R khơng phải dạng chuẩn BCNF

Nếu muốn đạt dạng chuẩn BCNF ta phải tách R thành 2 quan hệ R1 và R2: R1 (S#, P# , Qty)

R2 (S# , Sname)

5.5.2 Giải thuật phân rã bảo tồn thơng tin thành dạng chuẩn BCNF

Bổ đề 1

Giả sử R là một lược đồ quan hệ với tập phụ thuộc hàm F. Gọi  =(R1,R2, ..., Rn) là một phân rã của R bảo tồn thơng tin tương ứng với F và giả sử  =(S1, S2) là một phân rã của R1 bảo tồn thơng tin tương ứng với R1(F). Khi đĩ phân rã của R thành tập (S1, S2, R2, ... ,Rn) là bảo tồn thơng tin tương ứng với F.

Bổ đề 2

Mọi quan hệ cấp 2 ( Chỉ cĩ hai thuộc tính) đều ở dạng chuẩn BCNF Nếu R khơng ở dạng chuẩn BCNF, ta sẽ tìm được 2 thuộc tính A,B trong R sao cho (R-AB) -> A hay (R -AB) ->B

Giải thuật phân rã bảo tồn thơng tin thành dạng chuẩn BCNF

Vào: Lược đồ quan hệ R và tập phụ thuộc hàm F

Ra: Một phân rã bảo tồn thơng tin sao cho các lược đồ quan hệ con nhận được ở dạng chuẩn BCNF ứng với hình chiếu của F trên lược đồ này.

Phương pháp: Trọng tâm của giải thuật là phân rã lược đồ quan hệ R thành hai lược đồ quan hệ. Một lược đồ quan hệ cĩ tập thuộc tính XA, nĩ cĩ dạng BCNF và phụ thuộc hàm X -> A là đúng. Lược đồ quan hệ thứ hai R-A, do đĩ phân rã R-A, XA là bảo tồn thơng tin. Thực hiện đệ qui thủ tục phân rã với R-A cho đến khi đạt được lược đồ quan hệ đáp ứng với điều kiện bổ đề 2b để lược đồ quan hệ này ở dạng BCNF. Thế thì bổ đề 1 bảo đảm rằng lược đồ quan hệ này cộng với các lược đồ quan hệ BCNF được tạo ra từ mỗi đệ qui là bảo tồn thơng tin.

Chương trình chính

Z := R; // T là phần cịn lại của R sau mỗi đợt phân rã Repeat

decompose((T,R1,R2); //T được phân rã thành R1=XA và R2=T-A (X->A) if R1 then Bổ sung R1 vào phân rã ;

T := R2; until R1 = ;

Bổ sung T vào phân rã .

Chương trình con Decompose(T,R1,R2)

if T khơng chứa cặp thuộc tính{A,B}sao cho A  (T -AB)+F Then Trả lại R1 := ; R2 := T; // T Đã ở dạng BCNF

else Begin

Chọn ra cặp {A,B} như vậy; // A  (T -AB)+F

R1 := T -B; // R1 = XA và thoả X ->A nhưng chưa chắc ở BCNF While R1 cịn chứa cặp thuộc tính{A,B}sao cho A  (T -AB)+F Do R1 := R1 - B;

Return R1, R2 := T-A; end;

  

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

Một phần của tài liệu Cosodulieu unicode Đại cương cơ sở DL (Trang 65 - 67)

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

(90 trang)