PHÉP KẾT NỐI BẢO TOÀN TT tt Thuật Toán Kiểm Tra Tính Kết Nối Bảo Toàn Thông Tin tt Khi làm cho 2 ký hiệu này bằng nhau, ta gặp 3 trường hợp sau đây: nếu một trong hai ký hiệu là AJ thì
Trang 1Môn CƠ SỞ DỮ LIỆU
cơ sở dữ liệu
Trang 31 PHÉP KẾT NỐI BẢO TOÀN T.TIN
Cơ Sở Lý Thuyết
Nếu Q là một lược đồ quan hệ được tách thành các
lược đồ con Q1,Q2, ,Qk và F là tập phụ thuộc
hàm, nói rằng phép tách (phân rã ) là phép tách có bảo toàn thông tin đối với F nếu với mỗi quan hệ r trên Q thỏa F:
Q =Q1(r) * Q2 (r)* * Qk(r)
Tức là r được tạo nên từ phép kết nối tự nhiên của các hình chiếu của nó trên Qi ( i =1 k)
Trang 41 PHÉP KẾT NỐI BẢO TOÀN TT (tt)
Thuật Toán Kiểm Tra Tính Kết Nối Bảo Toàn Thông Tin
Dữ liệu vào: Lược đồ quan hệ Q(A1,A2,…An) và tập các phụ thuộc
hàm F, phép tách = {Q,Q,…,Qk}
Dữ liệu ra: Phép tách có bảo toàn thông tin hay không?
(1)Thiết lập bảng với k + 1 dòng, n + 1 cột Cột j ứng với thuộc tính
AJ(i=1 n), hàng i ứng với lược đồ quan hệ Qi(i=1…k) Tại ví trí
hàng i, cột j ta điền ký hiệu Aj nếu AJ Qi,
Đầu tiên đặt t=1 và đặt vào các ô còn lại của bảng ký hiệu bt theo chiều
từ trái sang phải và từ trên xuống dưới, sau đó tăng t lên một đơn vị
và lặp lại thao tác điền bt như trên Cho đến khi mọi ô của bảng điều
Trang 51 PHÉP KẾT NỐI BẢO TOÀN TT (tt)
Thuật Toán Kiểm Tra Tính Kết Nối Bảo Toàn Thông Tin (tt)
Khi làm cho 2 ký hiệu này bằng nhau, ta gặp 3 trường hợp sau đây:
nếu một trong hai ký hiệu là AJ thì cho ký hiệu kia trở thành AJ,
nếu hai ký hiệu là bk hoặc bl thì có thể cho chúng trở thành bt hoặc bt (với t=min (k,l)),
nếu cả hai ký hiệu là aj thì giữ nguyên (lúc đó chỉ số j của các ký hiệu này phải giống nhau)
Chú ý rằng bước này có thể được lặp lại (cho các phụ thuộc hàm) cho đến khi không còn áp dụng được nữa (nghĩa là cho đến khi nào ở một lần duyệt qua tất cả các phụ thuộc hàm trong F mà bảng không có sự thay đổi nào
(3)Xét bảng kết quả, nếu thấy trong bảng này có một hàng chứa toàn aj (i=1 n) thì kết luận đó là phép tách bảo toàn thông tin, ngược lại thì là phép tách mất mát thông tin
Trang 61 PHÉP KẾT NỐI BẢO TOÀN TT (tt)
Ví dụ:
Trang 7Z(Q) là tập các phụ thuộc hàm X Y F+ sao cho XY Z Ta
nói phân rã p bảo toàn tập phụ thuộc hàm F nếu hợp của tất cả các phụ thuộc hàm trong Qi(F) với i=1 k suy ra được tất cả các phụ thuộc
hàm trong F
Lý do p cần bảo toàn tập F đó là vì các phụ thuộc hàm trong F có thể được xem là các ràng buộc toàn vẹn cho quan hệ Q Nếu các phụ
thuộc hình chiếu không suy ra được F thì khi biểu diễn Q qua p ,
chúng ta có thể thấy rằng giá trị hiện hành của các Qi biểu diễn một quan hệ Q không thỏa F, ngay cả nếu p là phép tách không mất thông tin ứng với F Khi đó mỗi thao tác cặp nhật trên mỗi Ri sẽ cần phải
thực hiện một phép nối để kiểm tra lại rằng các ràng buộc không bị vi phạm
Dữ liệu vào: Một phân rã p={Q1,Q2,…Qk} và một tập các phụ thuộc hàm F(f1,f2,…,fm}
Dữ liệu ra: phép tách p có bảo toàn phụ thuộc hàm hay không ?
Trang 82 PHÉP TÁCH BẢO TOÀN PTH (tt)
Phép tách bảo toàn phụ thuộc hàm
Về nguyên tắc,chúng ta có thể dễ dàng kiểm tra xem một
phân rã p = {Q1,Q2,…Qk} có bảo toàn tập phụ thuộc F hay không Chúng ta chỉ cần tính F+ rồi chiếu nó trên tất cả các thành phần Qi Sau đó lấy hợp của các tập phụ thuộc kết quả rồi kiểm ra xem tập này có tương đương với F hay không ?
Tuy nhiên trong thực tế, tính F+ là một công việc hết sức
khó khăn vì số lượng các phụ thuộc chứa trong nó thường là hàm mũ theo kích thước của F Nhưng có một cách để kiểm tra tính bảo toàn này mà không cần phải tính F+; phương pháp này có chi phí thời gian tỷ lệ với hàm đa thức theo
kích thước của F.
Trang 9 Chúng ta định nghĩa phép toán Q trên tập các thuộc tính Z ứng với
một tập phụ thuộc F là phép thế Z bằng Z ((Z Q)+ Q) trong đó bao đóng luôn được lấy ứng với F, phép toán này nối Z với những thuộc tính A sao cho (Z Q) A QF Do đó chúng ta tính X+ ứng với G bằng cách khởi đầu với X, qua danh sách các Qi, chúng ta lần lượt thực hiện các phép toán Qi với mỗi i, nếu tại một lần lặp nào đó
không có một phép toán Qi nào làm thay đổi các tập thuộc tính hiện
có thì chúng ta đã thực hiện xong; tập kết quả là X+
Nếu Y là một tập con của Z, là kết quả của thực hiện các phép trên thì
X Y G+ , nếu mỗi phụ thuộc hàm trong F đều thuộc G thì là đúng, ngược lại là sai
*Chú ý: Một phân rã có thể bảo toàn thông tin nhưng không chắc bảo toàn tập phụ thuộc hàm F và ngược lại
Trang 103 TIẾP CẬN PHÂN RÃ ĐỂ TK CSDL
Theo quan điểm của cách tiếp cận này, các quan hệ con của cấu trúc
cơ dở dữ liệu ban đầu sẽ lần lượt được phân rã thành những quan hệ con với số thuộc tính ít hơn, sao cho cấu trúc kết quả đạt các tiêu
chuẩn đề ra ở mức cao nhất Quá trình phân rã là một quá trình được lặp lại đối với các quan hệ con nào được đánh giá là còn có thể phân rã
*PHÂN RÃ MỘT LƯỢC ĐỒ Q THÀNH CÁC LƯỢC ĐỒ CON DẠNG chuẩn BCK VA BẢO TOÀN THÔNG TIN
Cơ Sở Lý Thuyết
Bổ đề 1:
Giả sử Q là một lược đồ quan hệ với tập phụ thuộc hàm F, gọi
p={Q1,Q2,…,Qk } là một phân rã của Q có nối không mất ứng với Q nếu Q1 được phân rã thành hai lược đồ con (S1.S2) có nối không mất, thì phân rã của Q thành (S1,S2,Q2,…,Qk) cũng có nối không mất ứng với F
Trang 11Bổ đề 2:
a)Mỗi lược đồ có hai thuộc tính đều ở dạng chuẩn BCK
b)Nếu Q không đạt dạng chuẩn BCK thì chúng ta có thể tìm được các thuộc tính A và B trong Q sao cho (Q - AB)+ A
và phụ thuộc (Q - AB)+ B có thể đúng trong trường hợp này (nhưng đó là điều không quan trọng).
từ đây ta có thể phát biểu thêm mệnh đề đảo cho mệnh đề này như sau:
b')Nếu trong Q không tìm được các thuộc tính A và B sao cho (Q - AB)+ A và phụ thuộc (Q - AB)+ B thì Q đã đạt chuẩn BCK
Trang 123 TIẾP CẬN PHÂN RÃ …(tt)
Thuật Toán 1
Input: Cho lược đồ quan hệ phổ quát Q và tập phụ thuộc hàm F
Output: Lược đồ CSDL tương ứng đạt dạng chuẩn BCK
Để phân rã [Q,F] ta thực hiện theo thủ tục đệ qui như sau:
Trang 13While Not TimAB(Q,F)
p = p <Q,F>Q,F>
Kết thúc chương trình chính
Trang 143 TIẾP CẬN PHÂN RÃ …(tt)
Thuật Toán 2
phân rã(Q,F)
Xét f X Y F là phụ thuộc hàm làm cho [Q,F] vi phạm dạng chuẩn BC
{
Tách Q thành Q1 và Q2 theo quy tắc sau:
Q1=Q[XY]; F1 = X Y
Q2=Q[Q+ - Y] và cập nhật lại F=[F - [các phụ thuộc hàm có liên quan đến Y]
Phân rã (Q2,F) // công việc này tiếp tục cho đến khi XY
Q2+
}
Trang 15 -Nếu có những thuộc tính của R không nằm trong một phụ thuộc nào của F - dù ở
vế phải hay vế trái của F thì ta loại chúng ra khỏi Q.
-Nếu có một phụ thuộc hàm nào của F mà liên quan đến tất cả các thuộc tính của Q thì kết quả ra chính là Q ( Q không thể phân rã)
-Cứ mỗi phụ thuộc hàm X A F thì XA là một lược đồ cần tìm
Trang 163 TIẾP CẬN PHÂN RÃ …(tt)
*PHÂN RÃ LƯỢC ĐỒ Q THÀNH CÁC LƯỢC ĐỒ CON DẠNG CHUẨN 3 VỪA BẢO TOÀN PHỤ THUỘC VỪA BẢO TOÀN
THÔNG TIN
Có thể phân rã một lược đồ thành các lược đồ con đạt dạng chuẩn BCK
có nối không mất, và chúng ta cũng có thể phân rã một lược đồ thành 3NF bảo toàn phụ thuộc hàm Liệu chúng ta có thể tìm được một phân
rã thành 3NF mà có cả hai đặc tính là bào toàn tập phụ thuộc và có tính kết nối không mất thông tin hay không ? Chúng ta có thể làm
được điều đó thông qua phương pháp rất đơn giản (mà hiệu quả ) sau đây:
Tìm một phân rã p của Q có dạng 3NF như vừa mới phân tích ở trên ,và tìm một khóa X của Q, thì X p là một phân rã của Q mà tất cả các
lược đồ quan hệ đều có tính kết nối không mất và bảo toàn phụ thuộc, phân rã cuối cùng là X p, nghĩa là X chỉ thêm vào p nếu X chưa có trong p
Trang 17Đánh giá các thuật toán phân rã
Thuật toán không quan tâm về chất lượng của các phụ thuộc hàm trong tập F ban đầu, nghĩa là có hay không những phụ thuộc hàm không đầy đủ, có hay không những phụ thuộc
hàm bắc cầu.
Tất cả các quan hệ kết quả đều đạt chuẩn BC
Tùy theo thứ tự các phụ thuộc hàm được xem xét, trong
quá trình phân rã, mà kết quả có thể khác nhau Số lượng
các quan hệ con cũng có thể khác nhau.
Thuật toán không quan tâm đến việc xác định khóa của các quan hệ con.
Kết quả có thể chứa một quan hệ con mà ngữ nghĩa của nó
có thể không có ích cho ứng dụng
Trang 184 TIẾP CẬN TỔNG HỢP ĐỂ TK CSDL
Cách tiếp cận tổng hợp không đòi hỏi người thiết kế phải phác thảo một cấu trúc dữ liệu ban đâu, chỉ cần xác định danh sách các thuộc
tính cần được quan tâm và danh sách các quy tắc quản lý của môi
trường ứng dụng được diễn đạt dưới dạng các phụ thuộc hàm
Mục tiêu của cách tiếp cận này là các quan hệ con tối thiểu đạt chuẩn
3 và bảo toàn tiêu chuẩn bảo toàn phụ thuộc hàm
Một số khái niệm liên quan
Điều kiện bảo toàn thông tin: Cho lược đồ quan hệ phổ quát Co( Q,F), giả sử <Q,F>Q,F> được phân rã thành lược đồ CSDL C ={<Q,F>Qi,Fi>} C là bảo toàn thông tin đối với Co khi và chỉ khi tồn tại một quan hệ Qj
C sao cho khóa của Qj là khóa của Q
Điều kiện bảo toàn phụ thuộc hàm
Co và C được gọi là bảo toàn phụ thuộc hàm nếu thỏa đồng thời:
1 ( QI )+ = Q+
2 ( FI )+ = F+
Trang 19 Tách vế phải của các phụ thuộc hàm sao cho các phụ thuộc hàm chỉ
có một thuộc tính ở vế phải (như thuật toán tìm phủ tối thiểu)
Bước 1:
f F biến f thành một phụ thuộc hàm đầy đủ như trong thuật toán tìm phủ tối thiểu(như thuật toán tìm phủ tối thiểu)
Bước 2:
Loại bỏ tất cả các phụ thuộc hàm dư thùa, ta được một phủ tối
thiểu(như thuật toán tìm phủ tối thiểu)
Gọi tập phụ tối thiểu thu được của bước này là PTT
Trang 204 TIẾP CẬN TỔNG HỢP … (tt)
Thuật toán (tt) Bước 3:
1/ Gom những phụ thuộc hàm thuộc PTT thành những nhóm Ni có cùng
vế trái.(Ni là mảng 2 chiều, nội dung của nhóm là chỉ số của những phụ thuộc hàm có trong PTT)
Thuật toán gom nhóm những phụ thuộc hàm có cùng vế trái:
2/Tìm các siêu khóa đại diện cho mỗi nhóm Ni: Lấy vế trái của phụ
thuộc hàm thứ nhất của nhóm i (tức là N(1,i ) làm siêu khóa của Ni và gọi đó là Ki (Ki cũng là một mảng 2 chiều)
Trang 21j ) có các siêu khóa đại diện tương ứng là Ki , Kj
{ Nếu KI Kj { Đưa nhóm Nj vào trong nhóm Ni
H = H {Ki Kj ; Kj Ki}
Loại bỏ nhóm Nj }}
3 Loại bỏ khỏi PTT những phụ thuộc hàm thuộc H+ đồng thời loại bỏ khỏi nhóm Fi những phụ thuộc hàm có trong tập H
Trang 224 TIẾP CẬN TỔNG HỢP … (tt)
Thuật toán (tt) Bước 5:
1/ Tìm tập phụ thuộc hàm PTT2 sao cho: (PTT2 H)+ (PTT1 H)+
{ nhóm FI có siêu khóa đại diện là Ki
{ Nếu X Ki PTT thì Đưa f vào nhóm Fi } }
Trang 234 TIẾP CẬN TỔNG HỢP … (tt)
Thuật toán (tt)
Bước 6:
Thành lập lược đồ CSDL C = {<Q,F>QI , Fi>}
Với Fi là các phụ thuộc hàm có trong nhóm FI
và Qi là các thuộc tính có tham gia vào các phụ thuộc hàm trong FI
là phép tổng hợp trên là bảo toàn thông tin và bảo toàn phụ thuộc
hàm, nếu không thì cần thêm một quan hệ Q* mới vào lược đồ CSDL vừa tìm được với Q* là một khóa, F* là tập rỗng
Trang 244 TIẾP CẬN TỔNG HỢP … (tt)
Thuật toán (tt)
Thuật toán cho bước 7 là:
SI , Kj (Si là siêu khóa của một nhóm, Kj là một khóa của quan hệ phổ quát
{ Nếu Kj Si thì
{ Bảo toàn thông tin và bảo toàn phụ thuộc hàm =đúng
Break; } }
Nếu bảo toàn thông tin và bảo toàn phụ thuộc hàm thì
Bảo toàn thông tin và bảo toàn phụ thuộc hàm Ngược lại
"Không bảo toàn thông tin hoặc không bào toàn phụ thuộc hàm, cần thêm một quan
hệ sau:"
C = C Q(Q*,F*)
Với Q* ={Một khóa của quan hệ phổ quát }
F* =
Trang 25Kết quả đến bước 2: PTT(F) = F
Bước 3: Gom nhóm cùng vế trái
Nhóm 1={1,4}; Nhóm 2={2}; Nhóm 3={3,7}; Nhóm 4={5} Nhóm 5={6}
Trang 264 TIẾP CẬN TỔNG HỢP … (tt)
Bước 4: Gom các nhóm có khóa tương đương
H ={GH CD,CD GH}
Nhóm 1={1,4,3,7}; Nhóm 2={2}; Nhóm 4={5}; Nhóm 5={6}
Tìm PTT1: Loại khỏi nhóm Fi những phụ thuộc hàm còn trong H
Nhóm 1={1}; Nhóm 2={2}; Nhóm 4={5}; Nhóm
5={6}
BH C}