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