Baocao Chuanhoa

2,237 views

Published on

Published in: Education, Technology
  • Be the first to comment

  • Be the first to like this

Baocao Chuanhoa

  1. 1. LÝ THUYẾT CHUẨN HOÁ Nhóm 4 Trần Tấn Từ Lê Quang Chiến Trương Khắc Tùng Quách Xuân Hưng Võ Hoài Trung
  2. 2. Chuẩn hoá là gì ? <ul><li>Cho lược đồ quan hệ R = <U, F>, 1 phân tách  còn được xem là có ý nghĩa nếu nó giảm được dư thừa dữ liệu. Lý thuyết chuẩn hoá sẽ xác định các dạng chuẩn của 1 lược đồ quan hệ. </li></ul><ul><li>Quá trình phân tách 1 lược đồ thành các lược đồ con sao cho các lược đồ con đều thuộc 1 dạng chuẩn nào đó được gọi là quá trình chuẩn hoá. </li></ul>
  3. 3. Các dạng chuẩn lược đồ quan hệ <ul><li>Dạng chuẩn 1NF </li></ul><ul><li>Dạng chuẩn 2NF </li></ul><ul><li>Dạng chuẩn 3NF </li></ul><ul><li>Dạng chuẩn BCNF </li></ul><ul><li>Dạng chuẩn 4NF </li></ul><ul><li>Dạng chuẩn 5NF </li></ul>Phụ thuộc đa trị Phụ thuộc kết nối
  4. 4. Dạng chuẩn 1NF <ul><li>Định nghĩa: Một lược đồ R được gọi là thuộc dạng chuẩn 1NF (ký hiệu: R  1NF) nếu miền giá trị của các thuộc tính trong R chỉ chứa những giá trị nguyên tố (không thể phân chia được nữa) </li></ul><ul><li>Quy ước: Tất cả các lược đồ quan hệ được xét đều thuộc 1NF. </li></ul>
  5. 5. Dạng chuẩn 2NF <ul><li>Các khái niệm </li></ul><ul><li>- Định nghĩa 1 (thuộc tính khoá) : </li></ul><ul><li>Cho R= <U, F>. Khi đó, thuộc tính A được gọi là thuộc tính khoá nếu A thuộc khoá K nào đó của R. </li></ul>- Ví dụ R = <U, F>, với U = ABCD F = {AB  C, C  D}  K = {AB}  R có 2 thuộc tính khoá: A và B và R có thuộc tính không khoá : C và D
  6. 6. Dạng chuẩn 2NF (tiếp) <ul><li>- Định nghĩa 2 (Phụ thuộc hàm đầy đủ) : Cho R = <U, F>. Khi đó, X  Y  F được gọi là 1 phụ thuộc hàm đầy đủ nếu : Z  X sao cho Z  Y  F+ </li></ul>Nhận xét: Nếu X  U  F+ là 1 phụ thuộc hàm đầy đủ khi X là khoá của R. Ví dụ : NKBH = <U,F> với U = {NG, SP, MH, ĐG, SL} F = {SP, MH  U, MH  ĐG}  {SP, MH}  ĐG  F+ không là phụ thuộc hàm đầy đủ (vì  MH  {MH, SP}: MH  ĐG  F+)
  7. 7. Dạng chuẩn 2NF (tiếp) <ul><li>- Định nghĩa 2NF : Cho R = <U, F>. Khi đó, R được gọi là thuộc 2NF (ký hiệu: R  2NF) nếu với mọi thuộc tính không khoá A là phụ thuộc hàm đầy đủ vào mọi khoá của R. </li></ul>(  A - không khoá,  X  K: X  A  F+ là phụ thuộc hàm đầy đủ) Ví dụ: Xét lược đồ quan hệ nêu trên NKBH có 2 thuộc tính khoá: SP và MH. Suy ra các thuộc tính không khoá: NG, ĐG, SL. Theo trên ta có : {SP, MH}  ĐG  F+ không là phụ thuộc hàm đầy đủ.  NKBH  2NF
  8. 8. Dạng chuẩn 2NF (tiếp) <ul><li>- Nhận xét : + Nếu mọi khoá của lược đồ quan hệ R chỉ có 1 thuộc tính thì R thuộc 2NF. + Ta có thể chứng minh rằng : R 2NF   X  A  F+, với X  K ( K là khoá của R thì: . hoặc A là thuộc tính khoá. . hoặc A  X (X  A là phụ thuộc hàm tầm thường) </li></ul>
  9. 9. Dạng chuẩn 3NF <ul><li>- Định nghĩa: (R  3NF) Cho R = <U, F>. Khi đó R được gọi là thuộc 3NF (ký hiệu: R  3NF) nếu  X  A  F+ với A  X thì: + Hoặc X là siêu khoá + Hoặc A là thuộc tính khoá </li></ul>- Ví dụ: NKBH = <U, F>, với U = {STT, NGAY, MH, TH, ĐG, SL}, F = {STT  U, MH  TH, MH  ĐG}  NKBH  2NF (do lược đồ có 1 khoá duy nhất là STT chỉ có 1 thuộc tính) nhưng NKBH  3NF vì :
  10. 10. Dạng chuẩn 3NF (tiếp) <ul><li>NKBH có: K = {STT} </li></ul><ul><li>Ta có MH  TH  F+ nhưng: + MH không là siêu khoá </li></ul><ul><ul><li> + TH không là thuộc tính khoá </li></ul></ul>- Phân tách NKBH thành 2 lược đồ con: +HANG = <U1, F1>, với U1 = {MH, TH, ĐG} và F1 = {MH  U1} +NK = <U2, F2>, với U2 = {STT, NGAY, MH, SL} và F2 = {STT  U2} rõ ràng HANG và NK thuộc dạng chuẩn 3NF
  11. 11. Dạng chuẩn 3NF (tiếp) <ul><li>- Nhận xét : </li></ul><ul><li>+ Nếu R  3NF thì R  2NF. </li></ul><ul><li>+ Ta có thể chứng minh rằng: . R  3NF  phụ thuộc bắc cầu: X  Y  F+ và Y  A  F+ </li></ul><ul><li>với: + X là khoá (X_khoá) </li></ul><ul><li>+ Y không là siêu khoá </li></ul><ul><li>+ A là thuộc tính không khoá và A  XY </li></ul><ul><li>Hay: </li></ul><ul><li>. R  3NF   X_khoá Y, mà Y  A_không khoá </li></ul>
  12. 12. Thuật toán 1 : Phân tách thành các lược đồ con 3NF bảo toàn thông tin <ul><li>Vào: R = <U, F> </li></ul><ul><li>Ra:  = (R1, R2, …, Rk) với Ri  3NF (i = ) </li></ul><ul><li> và  là bảo toàn thông tin. </li></ul><ul><li>Phương pháp: </li></ul><ul><ul><li>Bước 1: Kiểm tra R  3NF? ( X  Y  A?) </li></ul></ul><ul><ul><ul><li>Nếu R  3NF: không phân tách và dừng </li></ul></ul></ul><ul><ul><ul><li>Nếu R  3NF: (  X  Y  A) phân tách R thành 2 lược đồ con:  = (YA, UA) </li></ul></ul></ul><ul><ul><ul><li>Bước 2: Kiểm tra lần lượt các lượt các lược đồ con có thuộc 3NF không, nếu không thuộc thì lại phân tách tiếp cho đến khi nào tất cả các lược đồ con đều thuộc dạng chuẩn 3NF. Bấy giờ chúng ta sẽ có 1 cây phân tách (cây nhị phân) mà các nút lá là các lược đồ con thuộc 3NF. </li></ul></ul></ul>
  13. 13. Thuật toán 1 : Phân tách thành các lược đồ con 3NF bảo toàn thông tin (Tiếp) <ul><li>procedure Phantach(U, F); </li></ul><ul><li>begin </li></ul><ul><li>if (  X  Y  A (phụ thuộc bắc cầu)) then </li></ul><ul><li>begin </li></ul><ul><li>Phantach(YA,F1); </li></ul><ul><li>Phantach(UA,F2); </li></ul><ul><li>end; </li></ul><ul><li>end; </li></ul>Lưu ý: Nếu phân tách  = (U1, …, Un) tồn tại Ui là tập con của Uj (i  j) thì ta loại bỏ lược đồ tương ứng với tập thuộc tính Ui.
  14. 14. Thuật toán 1 : Phân tách thành các lược đồ con 3NF bảo toàn thông tin (Tiếp) <ul><li>Ở ví dụ trên  {STT}  {MH, TH}  ĐG </li></ul><ul><li>  = ({MH, TH, ĐG}, {STT, NGAY, MH, TH, SL}) </li></ul><ul><li> 3NF  3NF </li></ul><ul><li>{MH,TH} {STT,NGAY,MH,SL} </li></ul><ul><ul><ul><ul><ul><li>  3NF  3NF </li></ul></ul></ul></ul></ul><ul><li>  = ({MH,TH, ĐG},{STT,NGAY,MH,SL}) </li></ul><ul><li>Lưu ý: Thuật toán trên không duy nhất </li></ul>
  15. 15. Thuật toán 2 : Phân tách 3NF bảo toàn thông tin và bảo toàn phụ thuộc hàm <ul><li>Vào : R = <U, F> </li></ul><ul><li>Ra:  = (R0, R1, R2, …, Rk) với Ri 3NF (i = ) </li></ul><ul><li> là bảo toàn thông tin và bảo toàn phụ thuộc hàm. </li></ul><ul><li>Phương pháp: </li></ul><ul><li>Bước 1: Xác định phủ tối thiểu của F: </li></ul><ul><li>F’ = {Xi  Ai | i = } </li></ul><ul><li>Bước 2: Tìm 1 khoá X bất kì của R. </li></ul><ul><li>Bước 3: Xác định lược đồ con R0 =<U0, F0> với U0 = X </li></ul><ul><li>Bước 4: Lần lượt xác định các lượt đồ con Ri = <Ui, Fi> với Ui = XiAi (i = ) </li></ul><ul><li>Bước 5: Nếu  i  j mà Ui  Uj (i, j = ) thì loại bỏ Ri. </li></ul><ul><li>Quá trình này sẽ tiếp tục cho đến khi không thể loại bỏ được một Ri nào nữa. </li></ul>
  16. 16. Thuật toán 2 : Phân tách 3NF bảo toàn thông tin và bảo toàn phụ thuộc hàm (tiếp) <ul><li>Ví dụ: </li></ul><ul><li>Cho R = <U,F> </li></ul><ul><li>với U = ABCD, F = {A  B, B  C, CD  A, AC  D} </li></ul><ul><li>Bước 1: Ta có 1 phủ tối thiểu của F là: </li></ul><ul><li>F = {A  B, B  C, CD  A, A  D} </li></ul><ul><li>Bước 2: Ta có A là 1 khoá của R. </li></ul><ul><li>Bước 3: R0 = <U0, F0> với U0 = A , F0 =  </li></ul><ul><li>Bước 4: </li></ul><ul><li>R1 = <AB, {A  B }> </li></ul><ul><li>R2 = <BC, {B  C}> </li></ul><ul><li>R3 = < ACD, {CD  A, A  D, A  C}> </li></ul><ul><li>R4 = <AD, {A  D}> </li></ul><ul><li>Bước 5: Loại R0 và R4 </li></ul><ul><li>Kết luận:  = (AB, BC, ACD) </li></ul>
  17. 17. Dạng chuẩn BCNF <ul><li>Định nghĩa: (R  BCNF) </li></ul><ul><li>Cho R = <U, F>. Khi đó: R  BCNF  X  A  F+ với A  X thì: X là siêu khoá. </li></ul>Ví dụ: Cho R = <U, F>, với U = CSZ và F = {CS  Z, Z  C} Xét r  R: => Dư thừa dữ liệu r = C VN VN Mỹ Mỹ Mỹ Mỹ X S Hue HN A B C D A Z 84 84 1 1 2 2 99
  18. 18. Dạng chuẩn BCNF (tiếp) Rõ ràng R  3NF (vì R có 2 khoá: CS và SZ), nhưng R vẫn dư thừa. = r C VN Mỹ Mỹ X Z 84 1 2 99 S Hue HN A B C D A Z 84 84 1 1 2 2 99 Không dư thừa Không dư thừa
  19. 19. Ở ví dụ trên R  BCNF vì  Z  C  F+ với Z không là siêu khoá. Nhưng: R1 = <U1, F1> với U1 = CZ và F1 = {Z  C} R2 = <U2, F2> với U2 = SZ và F2 =  Ta có R1, R2  BCNF. <ul><li>Nhận xét: </li></ul><ul><ul><li>R  BCNF  R  3NF </li></ul></ul><ul><ul><li>Ta có thuật toán để phân tách 1 lược đồ quan hệ thành các lược đồ con thuộc BCNF và phân tách này bảo toàn thông tin như sau: </li></ul></ul>Dạng chuẩn BCNF (tiếp)
  20. 20. <ul><ul><ul><li>Vào: R = <U, F> </li></ul></ul></ul><ul><ul><ul><li>Ra:  = (R1, R2, …, Rk) với Ri  BCNF (i = ) </li></ul></ul></ul><ul><li> là bảo toàn thông tin </li></ul><ul><ul><ul><li>Phương pháp: Dựa vào giải thuật sau: </li></ul></ul></ul><ul><li>procedure PT(U,F) </li></ul><ul><li>begin </li></ul><ul><li>if (  X  A  F+ với A  X và X không là siêu khoá) then </li></ul><ul><li>begin </li></ul><ul><li>PT(XA,F1); </li></ul><ul><li>PT(UA,F2); </li></ul><ul><li>end; </li></ul><ul><li>end; </li></ul>Thuật toán để phân tách 1 lược đồ quan hệ thành các lược đồ con thuộc BCNF bảo toàn thông tin
  21. 21. Người ta đã chứng minh: không tồn tai 1 giải thuật phân tách 1 lược đồ quan hệ thành các lược đồ con thuộc BCNF vừa bảo toàn thông tin vừa bảo toàn phụ thuộc hàm
  22. 22. <ul><ul><ul><ul><li>XIN CHÂN THÀNH CÁM ƠN ! </li></ul></ul></ul></ul>

×