Phụ thuộc hàm và chuẩn hóa quan hệ Bởi Ths Phạm Hoàng Nhung Một số hướng dẫn khi thiết kế cơ sở dữ liệu quan hệ Việc quan trọng nhất khi thiết kế cơ sở dữ liệu quan hệ là ta phải chọn ra tập các lược[.]
Phụ thuộc hàm chuẩn hóa quan hệ Phụ thuộc hàm chuẩn hóa quan hệ Bởi: Ths Phạm Hồng Nhung Một số hướng dẫn thiết kế sở liệu quan hệ Việc quan trọng thiết kế sở liệu quan hệ ta phải chọn tập lược đồ quan hệ tốt dựa số tiêu chí Và để có lựa chọn tốt, cần đặc biệt quan tâm đến mối ràng buộc liệu quan hệ, phụ thuộc hàm Để hiểu câu hỏi phải thiết kế sở liệu tốt, tìm hiểu ví dụ sau RESULT(StNo, StName, SubNo,SubName, Credit, Mark) Quan hệ RESULT( Kết học tập) có thuộc tính: StNo(Mã sinh viên), StName(Tên sinh viên), SubNo(Mã môn học), SubName(Tên môn học), Credit (Số đơn vị học trình) Mark (điểm thi sinh viên mơn học) Sau minh hoạ liệu quan hệ RESULT Minh họa liệu quan hệ RESULT 1/23 Phụ thuộc hàm chuẩn hóa quan hệ Quan hệ thiết kế chưa tốt Dư thừa liệu (Redundancy): Thông tin sinh viên môn học bị lặp lại nhiều lần Nếu sinh viên có mã St01 thi 10 mơn học thơng tin sinh viên bị lặp lại 10 lần, tương tự mơn học có mã Sub04, có 1000 sinh viên thi thơng tin mơn học lặp lại 1000 lần Không quán (Inconsistency):Là hệ dư thừa liệu Giả sử sửa ghi thứ nhất, tên sinh viên chữa thành Nga liệu lại khơng qn với ghi thứ (vẫn có tên Mai) Dị thường thêm (Insertion anomalies): Nếu muốn thêm thông tin sinh viên nhập trường (chưa có điểm mơn học nào) vào quan hệ khơng khố quan hệ gồm thuộc tính StNo SubNo Dị thường xố (Deletion anomalies): Giả sử xoá ghi cuối cùng, thơng tin mơn học có mã mơn học SubNo=Sub07 Nhận xét: Qua phân tích trên, ta thấy nên tìm cách tách quan hệ thành quan hệ nhỏ Trong chương nghiên cứu khái niệm thuật tốn để thiết kế lược đồ quan hệ tốt Phụ thuộc hàm(Functional Dependencies) • Phụ thuộc hàm (FDs) sử dụng làm thước đo để đánh giá quan hệ tốt • FDs khoá sử dụng để định nghĩa dạng chuẩn quan hệ • FDs ràng buộc liệu suy từ ý nghĩa mối liên quan thuộc tính Định nghĩa phụ thuộc hàm Cho r(U), với r quan hệ U tập thuộc tính Cho A,B ⊆ U, phụ thuộc hàm X → Y (đọc X xác định Y) định nghĩa là: ∀ t, t’ ∈ r t.X = t’.X t.Y = t’.Y (Có nghĩa là: Nếu hai có trị X có trị Y) Phụ thuộc hàm suy từ quy tắc liệu ta khảo sát yêu cầu toán Từ mã số bảo hiểm xã hội, ta suy tên nhân viên (Ssn→ Ename)Từ mã dự án, ta suy tên vị trí dự án (PNumber→{PName, PLcation}) 2/23 Phụ thuộc hàm chuẩn hóa quan hệ Biểu diễn FDs lược đồ quan hệ EMP_DEPT EMP_PROJ Hệ tiên đề Armstrong Cho lược đồ quan hệ r(U), U tập thuộc tính, F tập phụ thuộc hàm định nghĩa quan hệ r Ta có phụ thuộc hàm A → B suy diễn logic từ F quan hệ r trênU thỏa phụ thuộc hàm F thỏa phụ thuộc hàm A → B Tập phụ thuộc hàm: F = { A → B, B → C} Ta có phụ thuộc hàm A → C phụ thuộc hàm suy từ F Hệ tiên đề Armstrong sử dụng để tìm phụ thuộc hàm suy diễn từ F Hệ tiên đề Armstrong bao gồm:n Phản xạ: Nếu Y → X X → Y Tăng trưởng: Nếu Z → U X → Y XZ → YZ (Ký hiệuXZ X∪Z) Bắc cầu: Nếu X → Y Y → Z X → Z Giả bắc cầu: Nếu X → Y WY → Z XW → Z Luật hợp: Nếu X → Y X → Z X →YZ Luật phân rã: Nếu X → Y Z → Y X → Z Trong sáu luật a4, a5, a6 suy từ a1, a2, a3 3/23 Phụ thuộc hàm chuẩn hóa quan hệ Bao đóng tập phụ thuộc hàm • Ta gọi f phụ thuộc hàm suy dẫn từ F, ký hiệu F ├ f tồn chuỗi phụ thuộc hàm: f1, f2,…., fn cho fn=f fi thành viên F hay suy dẫn từ phụ thuộc hàm j=1,…,i-1 trước nhờ vào luật dẫn • Bao đóng F: ký hiệu F+ tập tất phụ thuộc hàm suy từ F nhờ vào hệ tiên đề Armstrong F+ định nghĩa: F + = { X →Y | F X →Y } Bao đóng tập thuộc tính X F Bao đóng tập thuộc tính X xác định tập phụ thuộc hàm F ký hiệu X+ tập hợp tất thuộc tính suy từ X Ký hiệu: X + = { Y | F ? X →Y } X+ tính tốn thơng qua việc lặp lặp lại cá quy tắc 1, 2, hệ tiên đề Armstrong Thuật tốn xác định bao đóng tập thuộc tính X+ X+ := X; repeat oldX+ := X+; for (mỗi phụ thuộc hàm Y →Z F) if Y ⊆ X+ then X+ ∪ Zuntil (oldX+ = X+ ); Cho tập phụ thuộc hàm F = { SSN→ENAME, PNUMBER→{PNAME, PLOCATION}, {SSN, PNUMBER} → HOURS} Suy ra: {SSN}+ = {SSN, ENAME} {PNUMBER}+ = {PNUMBER, PNAME, PLOCATION} {SSN, PNUMBER}+ = {SSN, PNUMBER, ENAME, PNAME, PLOCATION, HOURS} Như vậy, tập thuộc tính {SSN, PNUMBER} khoá quan hệ Khoá quan hệ Cho quan hệ r(R), tập K ⊂ R gọi khóa quan hệ r nếu: K+=R bớt phần tử khỏi K bao đóng khác R Như tập K ⊂ R khoá quan hệ K+=R ( K \A )+ ≠R , ∀ A ⊂ R ChoR = { A, B, C, D, E, G } tập phụ thuộc hàm: 4/23 Phụ thuộc hàm chuẩn hóa quan hệ F= { AB → C , D → EG , BE → C , BC → D , CG → BD, ACD → B, CE → AG} Ta thấy tập thuộc tính K1 = { A, B } , K2 = {B,E} , K3={C,G} , K4={C,E} , K5 = {C,D}, K6={B,C} khóa quan hệ Như vậy, quan hệ có nhiều khóa Thuật tốn tìm khố Ý tưởng: Bắt đầu từ tập U Closure(U+,F) = U Sau ta bớt dần phần tử U để nhận tập bé mà bao đóng U Thuật toán Input: Lược đồ quan hệ r(U), tập phụ thuộc hàm F Output: Khoá K Bước 1: Gán K = U Buớc 2: Lặp lại bước sau: Loại phần tử A khỏi K mà Closure( K -A,F ) =U Nhận xét • Thuật tốn tìm khóa Nếu cần tìm nhiều khóa, ta thay đổi trật tự loại bỏ phần tử K • Chúng ta cải thiện tốc độ thực thuật toán cách: Trong bước ta gán K=Left (là tập phần tử có bên tay trái phụ thuộc hàm) Cho lược đồ quan hệ R = { A,B,C,D,E,G,H,I} tập phụ thuộc hàm: F= { AC → B, BI → ACD, ABC → D , H → I , ACE → BCG , CG → AE } Tìm khố K? Ta có Left={A,B,C,H,E,G} Bước 1: K=Left={A,B,C,H,E,G} Bước Bước Tập thuộc tính A B C D E G H I Ghi ABCHEG x x x x x x x x 5/23 Phụ thuộc hàm chuẩn hóa quan hệ BCHEG x x x x x x x x Loại A CHEG x x x x x x x x Loại B CHG x x x x x x x x Loại E Như vậy, {C,H,G} khoá R Nếu muốn tìm tất khố R, ta cần thay đổi trật tự loại bỏ phần tử khoá K Tập phụ thuộc hàm tương đương Hai tập phụ thuộc hàm F G tương đương • Tất phụ thuộc hàm F suy từ G, • Tất phụ thuộc hàm G suy từ F Vì thế, F G tương đương F+ = G+ Nếu F G tương đương ta nói F phủ G hay G phủ F Vì thế, thuật tốn sau kiểm tra tương đương hai tập phụ thuộc hàm: • F phủ E: ∀ X → Y ∈ E, tính X+ từ F, sau kiểm tra xem Y∈ ∈ X+ • E phủ F: ∀ X → Y ∈ F, tính X+ từ E, sau kiểm tra xem Y∈ ∈X+ Tập phụ thuộc hàm tối thiểu Tập phụ thuộc hàm tối thiểu thoả mãn điều kiện sau: Chỉ có thuộc tính nằm phía bên tay trái tất phụ thuộc hàm F Không thể bỏ phụ thuộc hàm F mà có tập phụ thuộc hàm tương đương với F (tức là, khơng có phụ thuộc hàm dư thừa) Không thể thay phụ thuộc hàm X→A F phụ thuộc hàm Y→A, với Y⊂ ⊂X mà có tập phụ thuộc hàm tương đương với F (tức là, khơng có thuộc tính dư thừa phụ thuộc hàm) Nhận xét: • Tất tập phụ thuộc hàm có phụ thuộc hàm tối thiểu tương đương với • Có thể có nhiều phụ thuộc hàm tối thiểu 6/23 Phụ thuộc hàm chuẩn hóa quan hệ Thuật tốn: Tìm tập phụ thuộc hàm tối thiểu G F Đặt G:?F Thay tất phụ thuộc hàm X→{A1,A2,…,An} G n phụ thuộc hàm: X →A1, X →A2,…, X →An Với phụ thuộc hàm X → A G,với thuộc tính B X ((G?{X → A}) ∪ {( X ?{B}) →A} ) tương đương với G, thay X→ A (X ? {B}) → A G (Loại bỏ thuộc tính dư thừa phụ thuộc hàm) Với phụ thuộc hàm X → A G, (G?{X → A}) tương đương với G, loại bỏ phụ thuộc hàm X → A khỏi G.(Loại bỏ phụ thuộc hàm dư thừa) Các dạng chuẩn quan hệ Định nghĩa dạng chuẩn Dạng chuẩn 1(First Normal Form) Định nghĩa Một quan hệ dạng chuẩn giá trị tất thuộc tính quan hệ nguyên tử (tức có giá trị thời điểm) Ví dụ • Quan hệ sau dạng chuẩn Dữ liệu quan hệ DEPARTMENT vi phạm 1NF 7/23 Phụ thuộc hàm chuẩn hóa quan hệ • Chuyển quan hệ thành dạng chuẩn (bằng cách xác định tập thuộc tính {DNumber, DLocation} khố chính), ta có: Nhận xét • Quan hệ dạng chuẩn có tồn dư thừa liệu, quan hệ DEPARTMENT, phịng có nhiều địa điểm khác liệu thuộc tính (DName, DNumber, DMgrSsn) bị lặp lại nhiều lần • Chúng ta tách quan hệ DEPARTMENT thành quan hệ: Quan hệ DEPARTMENT tách thành quan hệ Mô tả liệu quan hệ Minh họa liệu DEPARTMENT DEPT_LOCATIONS Dạng chuẩn 2(Second Normal Form_2NF) Định nghĩa Một quan hệ dạng chuẩn 8/23 Phụ thuộc hàm chuẩn hóa quan hệ • Quan hệ dạng chuẩn • Tất thuộc tính khơng phải khóa phụ thuộc đầy đủvào khóa • Phụ thuộc đầy đủ: Phụ thuộc hàm Y →Z phụ thuộc hàm đầy đủ nếu: ∀ A∈ ∈Y, ( Y?{A}) →Z Sơ đồ mô tả Sơ đồ mơ tả NF2 Ví dụ Quan hệ EMP_PROJ khơng phải dạng chuẩn tồn phụ thuộc hàm FD2, FD3 phụ thuộc hàm phận (trái với phụ thuộc hàm đầy đủ) Quan hệ Emp_proj Quan hệ sau dạng chuẩn 9/23 Phụ thuộc hàm chuẩn hóa quan hệ Quan hệ EMP_DEPT dạng chuẩn Minh hoạ liệu quan hệ EMP_DEPT Quan hệ sau dạng 2NF Minh hoạ liệu quan hệ THESIS Nhận xét • Quan hệ dạng chuẩn có dư thừa thơng tin • Dạng chuẩn bị vi phạm quan hệ có khóa gồm thuộc tính Dạng chuẩn (Third Normal Form) Định nghĩa 10/23 Phụ thuộc hàm chuẩn hóa quan hệ Một quan hệ dạng chuẩn • Quan hệ dạng chuẩn • Và khơng có chứa phụ thuộc hàm phụ thuộc bắc cầu vào khố • Phụ thuộc hàm phụ thuộc bắc cầu: Phụ thuộc hàm Y→Z phụ thuộc hàm bắc cầu tồn hai phụ thuộc hàm:Y→X X →Z • Biểu diễn sơ đồ Dạng chuẩn 3NF Ví dụ Quan hệ EMP_DEPT khơng phải dạng chuẩn cịn tồn phụ thuộc hàm DNumber→DName, DMgrSsn phụ thuộc hàm phụ thuộc bắc cầu vào khố Quan hệ EMP_DEPT khơng phải dạng chuẩn Tách quan hệ thành quan hệ: EMPLOYEE DEPARTMENT quan hệ sau dạng chuẩn 11/23 Phụ thuộc hàm chuẩn hóa quan hệ Mơ tả liệu quan hệ EMPLOYEE DEPARTMET Nhận xét • Trong sở liệu tốt, quan hệ nên chuyển dạng chuẩn • Tuy nhiên, liệu có khả dư thừa quan hệ có hai tập khóa dự tuyển gối lẫn nhau, quan hệ có thuộc tính khơng khóa xác định thuộc tính khóa Dạng chuẩn Boyce _Codd(Boyce-Codd Normal Form) Định nghĩa Quan hệ R dạng chuẩn BCNF tất phụ thuộc hàm X →A R phải có X khố R Ví dụ Quan hệ sau dạng 3NF BCNF 12/23 Phụ thuộc hàm chuẩn hóa quan hệ Minh hoạ liệu quan hệ TEACH vi phạm chuẩn Boyce -Codd Để nhận quan hệ BCNF, ta tách quan hệ trên: Cách 1: R1(Student, Instructor) R2(Student, Course) Cách 2: R1(Couse, Instructor} R2(Course, Student) Cách 3: R1(Instructor, Course} R2(Instructor, Student) Việc tách quan hệ làm phụ thuộc hàm FD1 Phép phân rã lược đồ quan hệ Định nghĩa Phép phân rã lược đồ quan hệ R={A1, A2, , An}là việc thay lược đồ quan hệ R thành lược đồ {R1, , Rk}, Ri⊆ ⊆R R=R1 ∪ R2…∪ ∪ Rk Cho quan hệ R với phụ thuộc hàm sau 13/23 Phụ thuộc hàm chuẩn hóa quan hệ Lược đồ quan hệ R Ta phân rã thành lược đồ R1(MaSV, TenSV, Lop) Phép phân rã không mát thông tin Cho R lược đồ quan hệ, phép rã ρ=(R1,R2, ,Rn) D tập phụ thuộc liệu Phép phân rã ρ không mát thông tin thực phép toán kết nối tự nhiên quan hệ thành phần R1, R2,…,Rn ta nhận kết quan hệ ban đầu Ví dụ phép phân rã có mát thơng tin: Cho quan hệ Quan hệ mẫu MaSV MaMH Điem A A A B C Nếu ta phân rã quan hệ thành quan hệ: R1(MaSV, MaMH) R2(MaMH, Điem) sau: R1 R2: R1 MaSV MaMH A A A B 14/23 Phụ thuộc hàm chuẩn hóa quan hệ C R2 MaMH Điem A A A B C Thực phép kết nối tự nhiên quan hệ R1 R2: R1*R2= R1*R2 MaSV MaMH Điem A A A A A A A 3 A A B C Như vậy, nối tự nhiên bảng, ta nhận quan hệ không giống quan hệ ban đầu→ Phép phân rã mát thông tin 15/23 Phụ thuộc hàm chuẩn hóa quan hệ Vấn đề đặt người thiết kế phải tìm phép phân rã không làm mát thông tin (chi tiết trình bày phần sau) Bây tìm hiểu thuật tốn để kiểm tra phép phân rã có mát thơng tin hay khơng Thuật tốn kiểm tra phép phân rã khơng mát thơng tin Input • Lược đồ quan hệ R={A1, A2, , An} • Tập phụ thuộc hàm F • Phép tách ρ(R1, R2, , Rk) OutputKết luận phép tách ρ không mát thông tin Các bước thuật tốn Bước • Thiết lập bảng với n cột (tương ứng với n thuộc tính) k dịng (tương ứng với k quan hệ), cột thứ j ứng với thuộc tính Aj, dịng thứ i ứng với lược đồ Ri • Tại dịng i cột j, ta điền ký hiệu aj thuộc tinh Aj∈Ri.Ngược lại ta điền ký hiệu bij Bước • Xét phụ thuộc hàm F áp dụng cho bảng • Giả sử ta có phụ thuộc hàm X→Y∈F, xét dịng có giá trị thuộc tính X làm bằngcác giá trị chúng Y Ngược lại làm chúng ký hiệu bij Tiếp tục áp dụng pth cho bảng (kể việc lặp lại phụ thuộc hàm áp dụng) khơng cịn áp dụng Bước Xem xét bảng kết Nếu xuất dịng chứa tồn giá trị a1, a2 ,…,an kết luận phép tách ρ không mát thông tin Cho quan hệ 16/23 Phụ thuộc hàm chuẩn hóa quan hệ Minh họa liệu quan hệ EMP_DEPT Tách quan hệ thành quan hệ Quan hệ EMPLOYEE phân rã (tách) thành quan hệ Tập phụ thuộc hàm F 17/23 Phụ thuộc hàm chuẩn hóa quan hệ Tập phụ thuộc hàm F Kiểm tra phép tách không mát thông tin: Bước Bước EName SSN BDate Address DNumber DName DMgrSsn EMPLOYEE a1 DEPARTMENT b21 a2 a3 b22 b23 a4 a5 b16 b17 b24 a5 a6 a7 Bước 2: Xét phụ thuộc hàm DNumber→ DName, DMgrSsn Ta nhận thấy có giá trị a5 dòng thứ 2, nên ta làm giá trị a6, a7 cho dòng thứ Bước 3: Tồn dòng chứa giá trị a1, a2, a7 Kết luận, phép phân rã không mát thông tin Bước EName SSN BDate Address DNumber DName DMgrSsn EMPLOYEE a1 DEPARTMENT b21 a2 a3 b22 b23 a4 a5 a6 a7 b24 a5 a6 a7 Sinh viên thực phép nối tự nhiên quan hệ EMPLOYEE DEPARTMENT để kiểm tra có quan hệ ban đầu EMP_DEPT Chuẩn hoá quan hệ Chuẩn hoá quan hệ việc phân rã lược đồ quan hệ thành lược đồ dạng chuẩn BCNF cho bảo tồn phụ thuộc khơng mát liệu Thuật toán phân rã lược đồ quan hệ thành lược đồ quan hệ BCNF Input • Lược đồ quan hệ R 18/23 Phụ thuộc hàm chuẩn hóa quan hệ • Tập phụ thuộc hàm F Output Phép phân rã R không thông tin lược đồ quan hệ phép tách dạng BCNF phép chiếu F lược đồ Các bước thuật tốn • Ban đầu phép tách ρ bao gồm R • Nếu S lược đồ thuộc ρ S chưa dạng BCNF chọn phụ thuộc hàm X → A thỏa S, X khơng chứa khóa S A∉ ∉X {phụ thuộc hàm vi phạm định nghĩa dạng chuẩn BCNF} Thay S ρ S1 S2 sau S1 = XA, S2 = S\A • Q trình tiếp tục tất lược đồ quan hệ dạng BCNF Ví dụ Cho lược đồ quan hệ R(CTHRSG) Trong đó: • C: Course; T: Teacher; H: Hour; R: Room; S: Student; G:Group) • Và tập phụ thuộc hàm F ◦ C → T: Mỗi khố học (course) có thầy (teacher) ◦ HR →C: Tại thời điểm (Hour) phòng học (room) có khố học ◦ HT→ R: Tại thời điểm giáo viên phòng ◦ CS→G: Một sinh viên học course lớp ◦ HS → R: Một sinh viên, thời điểm định phòng Dựa vào thuật tốn tìm khố→Khóa R HS Yêu cầu: Tách lược đồ R thành lược đồ dạng BCNF 19/23 Phụ thuộc hàm chuẩn hóa quan hệ Biểu diễn q trình tách quan hệ R thành quan hệ BCNF Như vậy, quan hệ R tách thành quan hệ R1, R21, R221, R222 BCNF Thuật toán phân rã lược đồ quan hệ thành lược đồ 3NF Input • Lược đồ quan hệ R • Tập phụ thuộc hàm F, khơng làm tính tổng quát giả sử phủ tối thiểu Output 20/23 Phụ thuộc hàm chuẩn hóa quan hệ Phép tách không mát thông tin R thành lược đồ dạng chuẩn cho bảo toàn phụ thuộc hàm Các bước thuật tốn • Bước 1: Loại bỏ thuộc tính R thuộc tính khơng liên quan đến phụ thuộc hàm F.(khơng có mặt hai vế phụ thuộc hàm) • Bước 2: Nếu có phụ thuộc hàm F liên quan đến tất thuộc tính R kết R • Bước 3: Ngồi ra, phép tách ρ đưa lược đồ gồm thuộc tính XA ứng với phụ thuộc hàm X→A ∈F Nếu tồn phụ thuộc hàm X→A1, X→A2, …,X→An thuộc F thay XAi (1