Chứng minh.

Một phần của tài liệu giáo án môn cơ sở dữ liệu (Trang 54 - 56)

Lấy 1 quan hệ r thỏa mãn F

do P là phép tách không mất thông tin nên r= ΠR1(r) ∞ ΠR2(r) ∞ ... ∞ ΠRn(r) Đặt r1 = ΠR1(r), do đó r1 thỏa mãn F1= ΠR1(F), mặt khác do phép tách Q=(S1,S2) của R1 là không mất thông tin nên

r1=ΠS1(r1) ∞ ΠS2(r1)

= ΠS1(ΠR1(r)) ∞ ΠS2(ΠR1(r)) = ΠS1(r) ∞ ΠS2(r)

Vậy ta có: r= ΠR1(r) ∞ ΠR2(r) ∞ ... ∞ ΠRn(r)

= ΠS1(r) ∞ ΠS2(r) ∞ ΠR2(r) ∞ ... ∞ ΠRn(r)

điều này chứng tỏ phép tách P’= {S1,S2,R2,..,Rn} cũng không mất thông tin.

Từ bổ đề này ta suy ra phương pháp tách một lược đồ quan hệ thành các lược đồ ở dạng chuẩn BCNF

Cho lược đồ quan hệ R và tập phụ thuộc hàm F.Nếu R không ở dạng chuẩn BCNF thì tìm được ít nhất là một phụ thuộc hàm X→A, A∉X và X không phải là siêu khóa( X không suy ra R). Khi đó tách R thành 2 lược đồ quan hệ sau:

R-A và XA

Khi đó ta có R-A ∩XA = X X→A=(XA-(R-A))

Do đó phép tách là không mất thông tin.

Nếu lược đồ R1 ở dạng chuẩn BCNF đối với ΠR1(F) thì đưa R1 vào phép tách. Ngược lại thì R1 chưa ở dạng chuẩn BCNF đối với ΠR1(F) thì tiếp tục quá trình trên .

Ở đây R1= R-a hoặc R1=XA

Bổ đề:2

1. Mọi lược đồ quan hệ chỉ có 2 thuộc tính đều ở dạng chuẩn BCNF

2. Nếu lược đồ quan hệ R không ở dạng chuẩn BCNF thì có thể tìm ra được hai thuộc tính A và B sao cho (R-AB ) → A đúng trong R

Chứng minh.

Xử lý thông tin trong CSDL

Trang 9

Nếu R = AB thì tập phụ thuộc hàm trên R có thể là F1= {A→B}, F2 = { B→A}, F3= { A→B, B→A}.

Đối với F1 ta có A→B, B∉A , A là khóa msuy ra R ở dạng BCNF Đối với F2 ta có B→A, A∉B, B là khóa suy ra R ở dạng BCNF Đối với F3 ta có hoặc A hoặc B là khóa suy ra R ở dạng chuẩn BCNF

2. Nếu lược đồ quan hệ R không ở dạng chuẩn BCNF thì có thể tìm ra được hai thuộc tính A và B sao cho (R-AB ) → A đúng trong R

Nếu R không ở dạng chuẩn BCNF thì tồn tại một phụ thuộc hàm X→A, A∉X và X không phải là khóa (X không suy ra R), thì trong R phải tồn tại ít nhất một thuộc tính B không thuộc XA( nếu không thì XA=R và X→R). Như vậy (R-AB)→A lad đúng trong R

(Vì X ⊆ R_AB do A∉X và B∉X)

Thuật toán tách không mất thông tin thành các lược đồ ở dạng BCNF

Đầu vào:

Lược đồ quan hệ R

Tập phụ thuộc hàm F trên R Đầu ra:

Phép tách P = { R1, R2,...,Rn } của R không mất thông tin Có nghĩa là Mp(r)= r với mọi r thỏa mãn F

Phương pháp: Chương trình chính:

Z:=R { Bắt đầu phép tách gán Z= R} Repeat

Tách {Thủ tục tách} Z thành Z-A và XA ở đây Xa ở dạng chuẩn BCNF và X→A Đưa XA vào phép tách

Z:=Z-A

Until Z không thể tách được bởi bộ đề đã nêu Đưa Z vào phép tách

Thủ tục Tách

IfZ không chứa A,B sao cho A∈(Z-AB)+ then Return Else

Begin

Lấy cặp A,B thỏa mãn A∈(Z-AB)+

Y:=Z-B

While Y còn chứa A,b sao cho A∈(Z-AB)+ do Y:= Y-B Z:=Y Return Ví dụ: Xét lược đồ quan hệ U= CTHRSG Ơí đây:

Xử lý thông tin trong CSDL Trang 10 Trang 10 C: môn học (ngoại ngữ) T: Giáo viên H: Giờ học R: phòng học G: trình độ S: Sinh viên Ta có tập phụ thuộc hàm F={ C→T, RH→C, HT→R, CS→G, HS→R } trong đó các phụ thuộc hàm được giải thích như sau:

C→T: mỗi môn học chỉ có một giáo viên

RH→C: Tại một phòng học ,ở một giờ nhất định thì chỉ học một môn học HT→R: Mỗi giáo viên , tại một giờ nhất định chỉ ở một phòng nhất định

CS→G: Mỗi sinh viên học môn ngoại ngữ nào đó chỉ ở một trình độ nhất định HS→R: Mỗi sinh viên tại một giờ học tại một phòng nhất định

Yêu cầu:

Dùng thuật toán đã trình bày , tách lược đồ quan hệ U trên thành các lược đồ quan hệ ở dạng BCNF và phép tách không mất thông tin.

Ta có U= CTHRSG

Một phần của tài liệu giáo án môn cơ sở dữ liệu (Trang 54 - 56)