BAO ĐÓNG CÁC THUỘC TÍNH• Phân tách các phụ thuộc hàm trong , sao cho mỗiphụ thuộc hàm trong chỉ có một thuộc tính ở vếphải • Gọi X là tập hợp bao đóng các thuộc tính... SIÊU KHÓA• Siê
Trang 1Phụ thuộc hàm và Chuẩn hóa CSDL
Functional Dependency and Normal Forms
Trang 3PHỤ THUỘC HÀM
Ví dụ
Bạn có nhận xét gì về mối liên hệ giữa các thuộc tính?
Trang 4PHỤ THUỘC HÀM
Ví dụ
Trang 5PHỤ THUỘC HÀM
• Tồn tại hai mối liên hệ giữa các thuộc tính
Trang 6Nếu hai bộ của quan hệ R có giá trị giống nhau tại các thuộc tính A1,
A2, , An, thì chúng cũng phải có giá trị giống nhau tại các thuộc tính
B1, B2, , Bm.
A1, A2, , An → B1, B2, , Bm
Trang 7PHỤ THUỘC HÀM
Minh họa bằng hình ảnh
Hình 8.1 Ảnh hưởng của phụ thuộc hàm A->B đối với hai bộ t, u bất kỳ.
Trang 9PHỤ THUỘC HÀM
Ví dụ
TenDA Diadiem_DA, TenPB TenDA, TenNV Thoigian
Trang 11HỆ TIÊN ĐỀ AMSTRONG
• Giả sử quan hệ R thỏa mãn tập các phụ thuộc hàm
• Chứng minh ràng R cũng phải thỏa mãn phụ thuộc hàm
f
Mục tiêu
• Giả sử R thỏa mãn hai phụ thuộc hàm A B, và B C
• Chứng minh rằng R cũng thỏa mãn phụ thuộc hàm A C
• Chứng minh rằng R không thỏa mãn phụ thuộc hàm
C A
Ví dụ
Trang 12• Ví dụ: nếu C D thì ABC ABD
Luật 2: Luật tăng trưởng
• Nếu X Y và Y Z thì X Z
Luật 3: Luật bắc cầu
Trang 13HỆ QUẢ CỦA TIÊN ĐỀ AMSTRONG
Trang 15HỆ TIÊN ĐỀ AMSTRONG
Ví dụ
TenDA Thoigian ? TenDA, Ten NV Thoigian
Trang 17BAO ĐÓNG CÁC THUỘC TÍNH
• Phân tách các phụ thuộc hàm trong , sao cho mỗiphụ thuộc hàm trong chỉ có một thuộc tính ở vếphải
• Gọi X là tập hợp bao đóng các thuộc tính Tại thời điểm khởi tạo X = {A 1 , A 2 , , A n}
• Tìm một phụ thuộc hàm B 1 B 2 B m →C, sao cho tất
cả B 1 , B 2 , , B m đều nằm trong X, nhƣng C thì
Thuật toán tìm bao đóng
Trang 19Nếu B {A}+, thì kết luận tồn tại A B
Ngược lại, kết luận không tồn tại A B
Tính bao đóng của X
Nếu {X}+ chứa tất cả thuộc tính của R, thì X là siêu khóa.
Ngược lại, kết luận X không phải là siêu khóa
Trang 20BAO ĐÓNG CÁC THUỘC TÍNH
• Quan hệ R với các phụ thuộc hàm AB → C(1), BC
→ AD(2), D → E(3), và CF → B(4)
• Kiểm tra sự tồn tại của phụ thuộc hàm AB → D
• Kiểm tra sự tồn tại của phụ thuộc hàm D → A
Trang 21KHÓA CỦA QUAN HỆ
Định nghĩa
Tập hợp của một (hoặc nhiều) thuộc tính { A1, A2, , An} là khóa của quan hệ R nếu thỏa mãn đồng thời hai điều kiện sau đây:
1 Các thuộc tính đó xác định tất cả các thuộc tính khác của quan hệ.
2 {A1, A2, , An} không có bất kỳ tập con khác rỗng nào có thể xác
định tất cả các thuộc tính khác của quan hệ Khóa phải là nhỏ nhất.
Trang 22KHÓA CỦA QUAN HỆ
Ví dụ
Trang 23KHÓA CỦA QUAN HỆ
Ví dụ (tt)
Khóa của quan hệ là { TenDA , TenNV } vì:
1 { TenDA , TenNV } xác định hàm Thoigian
2 { TenDA } xác định hàm Diadiem_DA , TenPB ,
3 { TenDA }, { TenNV } không xác định hàm các thuộc tính còn lại của quan hệ
Trang 24KHÓA CỦA QUAN HỆ
Bài tập
Trang 25SIÊU KHÓA
• Siêu khóa là tập hợp các thuộc tính chứa khóa
• Mọi khóa đều là siêu khóa, siêu khóa không phải là khóa
Định nghĩa
• Khóa là {TenDA, TenNV}
• Siêu khóa là {TenDA, TenNV}, {TenDA, TenNV, TenPB}
Ví dụ
Trang 26THUẬT TOÁN TÌM KHÓA
• Input : Lƣợc đồ quan hệ R với các thuộc tính {A 1 , A 2 , ., A n} và tập phụ thuộc hàm định nghĩa trên R
• Output: Khóa của R
• Thuật toán:
• Khóa: = R
• Với i:= 1 to n (số thuộc tính)
Nếu Khóa – {A i } là một siêu khóa của R
Khóa: = Khóa - {A i }
Trang 27THUẬT TOÁN TÌM KHÓA
• Ví dụ: cho R(ABCDE); F = {AB C, C DE}
Trang 28THUẬT TOÁN TÌM NHIỀU KHÓA
• Cho lƣợc đồ quan hệ R(A 1 , A 2 , , A n) và F là tập phụ thuộc hàm định nghĩa trên R
• Thuộc tính chia làm 3 loại:
• Tập gốc: chỉ xuất hiện trong vế trái của phụ thuộc hàm hoặc không xuất hiện trong bất kỳ phụ thuộc hàm
• Tập ngọn: chỉ xuất hiện trong vế phải của phụ thuộc hàm
• Tập trung gian: các thuộc tính còn lại
Trang 29THUẬT TOÁN TÌM NHIỀU KHÓA
Nhận xét:
• Các thuộc tính ở nút ngọn không có trong khóa
• Các thuộc tính ở nút gốc chắc chắn phải xuất hiện
trong khóa
Thuật toán:
• Xác định các tập thuộc tính: gốc, ngọn, trung gian
• Xây dựng tổ hợp giữa tập gốc và trung gian, xét bao đóng để xác định khóa
Trang 30THUẬT TOÁN TÌM KHÓA
• Ví dụ: cho R(ABCDE); F = {AB C, C BD}
Trang 31BÀI TẬP 1
• Cho quan hệ R với các thuộc tính A,B,C,D,E,F
• Các phụ thuộc hàm AC, A D, D E, E F
• Tìm bao đóng của {A}+
• Tìm bao đóng của {A,B}+
Tìm bao đóng
Trang 33BÀI TẬP 3
• Cho quan hệ R với các thuộc tính A,B,C,D
• Các phụ thuộc hàm BC D, D A, A B
• Tìm tất cả các khóa của quan hệ R
• Tìm tất cả các siêu khóa không phải là khóa củaquan hệ R
Xác định khóa, siêu khóa
Trang 34BÀI TẬP 4
• Cho quan hệ R với các thuộc tính A,B,C,D
• Các phụ thuộc hàm A→B, A→C, C→D
• Tìm tất cả các khóa của quan hệ R
• Tìm tất cả các siêu khóa không phải là khóa của
quan hệ R
Xác định khóa, siêu khóa
Trang 35TƯƠNG ĐƯƠNG GIỮA CÁC PHỤ THUỘC HÀM
• Mọi phụ thuộc hàm của F đều có thể suy được từ
G và mọi phụ thuộc hàm của G đều có thể suyđược từ F
• Do vậy F và G là tương đương nếu F+ = G+
Hai tập phụ thuộc hàm F và G là tương đương nếu:
• F và G là tương đương nếu F phủ G và G phủ F
F phủ G nếu mọi phụ thuộc hàm của G đều suy được
từ F ( G + ⊆ F + )
Trang 36PHỤ THUỘC HÀM ĐẦY ĐỦ
• Cho phụ thuộc hàm F định nghĩa trên lƣợc đồ quan
hệ R Phụ thuộc hàm X Y là phụ thuộc hàm trên R
• X Y là phụ thuộc hàm đầy đủ nếu vế phải Y khôngphụ thuộc hàm vào bất kỳ tập con nào khác rỗng Zcủa X
• Z X, Z ≠ , Z Y
• Y là phụ thuộc hàm đầy đủ vào X
• Ví dụ: cho F = {AB→C, A→C} Ta nói AB→C khôngphải là phụ thuộc hàm đầy đủ vì A→C
Định nghĩa:
Trang 37PHỦ TỐI THIỂU
• F và G tương đương
• G chỉ có những phụ thuộc hàm có vế phải có mộtthuộc tính
• Các phụ thuộc hàm trong G là phụ thuộc hàm đầy đủ
Cho phụ thuộc hàm F định nghĩa trên lược đồ quan hệ R Phủ tối thiểu của F là tập phụ thuộc hàm G nếu:
• Mọi tập phụ thuộc hàm đều tương đương với một phủ tối thiểu hoặc nhiều phủ tối thiểu
Nhận xét:
Trang 38THUẬT TOÁN TÌM PHỦ TỐI THIỂU
• G: = F
• Phân rã vế phải của các phụ thuộc hàm trong G để
có tập phụ thuộc hàm chỉ có vế phải là một thuộc
tính
• Kiểm tra các phụ thuộc hàm đầy đủ với các phụ
thuộc hàm có vế trái từ hai thuộc tính trở lên?
• Loại bỏ các phụ thuộc hàm thừa
Input: tập phụ thuộc hàm F
Output: tập phủ tối thiểu G
Trang 40PHÉP CHIẾU PHỤ THUỘC HÀM
• Input: Quan hệ R, tập phụ thuộc hàm S, quan hệ R1
• Output: Tập phụ thuộc hàm trên R1
Trang 41PHÉP CHIẾU PHỤ THUỘC HÀM
• Bao đóng của tập rỗng và tập tất cả các thuộctính không thể phát sinh phụ thuộc hàm khônghiển nhiên
• Nếu bao đóng của một tập X nào đó là tập tất cả
các thuộc tính, thì bao đóng của mọi tập chứa X
đều không thể phát sinh phụ thuộc hàm mới
Chú ý
Trang 42Ví dụ: Cho trước quan hệ R(A,B,C,D) và tập phụ
thuộc hàm ={A →B, B→C, C→D} R1=A,C,D(R) Xác định các phụ thuộc tồn tại trong R 1
Không xét các tập hợp chứa thuộc tính A
Trang 43PHÉP CHIẾU PHỤ THUỘC HÀM
• Tìm phủ tối thiểu của T = {A→C, A→D, C→D}
• Vì A→D là kết quả của phép bắc cầu của A→C
và C→D, nên loại bỏ A→D không làm thay đổi
tính phủ của T
• T = {A→C, C→D} là phủ tối thiểu
Ví dụ (tiếp)
Trang 44Mất mát dữ liệu
Trang 45MỘT SỐ VẤN ĐỀ KHI THIẾT KẾ
CƠ SỞ DỮ LIỆU
Sự dƣ thừa dữ liệu
Trang 46MỘT SỐ VẤN ĐỀ KHI THIẾT KẾ
CƠ SỞ DỮ LIỆU
Sự xung đột dữ liệu
Trang 47MỘT SỐ VẤN ĐỀ KHI THIẾT KẾ
CƠ SỞ DỮ LIỆU
Sự mất mát dữ liệu
Trang 48MỘT SỐ VẤN ĐỀ KHI THIẾT KẾ
CƠ SỞ DỮ LIỆU
Phân tách quan hệ
Trang 49PHÂN TÁCH QUAN HỆ
• Sự phân hoạch = [S 1 , S 2, …, S k] là một phép
phân tách của quan hệ R(A 1 , A 2, …, A n) nếu thỏa
mãn hai điều kiện
• S i {A 1 , A 2 , …, A n}
• {A 1 , A 2 , …, A n } = S 1 S 2 … S k
Định nghĩa
Trang 51PHÂN TÁCH QUAN HỆ
• Sự phân tách = [S 1 , S 2, …, S k] của quan hệ
R(A 1 , A 2, …, A n) gọi là kết nối tự nhiên nếu:
Phép phân tách – kết nối tự nhiên
S1 (R)⋈ S2 (R)⋈ ⋈Sk (R) R
Trang 52PHÂN TÁCH QUAN HỆ
• Sự phân tách = [S 1 , S 2 , …, S k] của quan hệ
R(A 1 , A 2 , …, A n) gọi là không mất thông tin nếu:
Phép phân tách không mất thông tin
S1 (R)⋈ S2 (R)⋈ ⋈Sk (R) = R
Trang 53Phép phân tách – kết nối tự nhiên?
Phép phân tách không mất thông tin?
Trang 54PHÂN TÁCH QUAN HỆ
• Phép kết tự nhiên có tính giao hoán và kết hợp
• Nếu tR, thì t[S i] Si(R)
• Nếu tR, thì tS1 (R)⋈ S2 (R)⋈ ⋈Sk (R)
• S1 (R)⋈ S2 (R)⋈ ⋈Sk (R) = R khi và chỉ khi mọi
bộ trong phép kết tự nhiên đều nằm trong R
Phân tách không mất thông tin
Trang 55PHÂN TÁCH QUAN HỆ
• Bước 1: Xây dựng ma trận S: n dòng và m cột (Dòng i
tương ứng với R i ; Cột j tương ứng A i )
• Bước 2: Gán giá trị a tại thuộc tính có trong Ri
• Bước 3: Với mỗi phụ thuộc hàm X Y thuộc F:
• Thay đổi giá trị tại Y bằng a nếu thỏa phụ thuộc
Trang 56PHÂN TÁCH QUAN HỆ
• R(A,B,C,D), R 1= A,D (R),R 2= A,C (R),R 3= B,C,D (R)
• Kiểm tra phép phân tách không mất thông tin
Trang 57CÁC DẠNG CHUẨN CỦA MÔ HÌNH DỮ
Trang 58DẠNG CHUẨN THỨ NHẤT
• Một quan hệ R đƣợc gọi là ở dạng chuẩn thứ nhất
(1NF) khi và chỉ khi các thuộc tính chỉ chứa các giá trị
Trang 59DẠNG CHUẨN THỨ HAI
• Một quan hệ R đƣợc gọi là ở dạng chuẩn thứ hai (2NF) khi và chỉ khi nó ở dạng chuẩn thứ nhất
và mọi thuộc tính không khóa của R phụ thuộc
Định nghĩa
Trang 60DẠNG CHUẨN THỨ HAI
• Quan hệ Phan_cong(MaNV, MaDA, Thoigian,
TenNV, TenDA, Diadiem_DA) với các phụ thuộc hàm:
• MaNV, MaDA Thoigian
• MaNV TenNV
• MaDA TenDA, Diadiem_DA
• Phụ thuộc hàm nào trên đây vi phạm điều kiện chuẩn thứ hai?
Ví dụ
Trang 61DẠNG CHUẨN THỨ BA
• Quan hệ R đƣợc gọi là ở dạng chuẩn thứ ba
(3NF) khi và chỉ khi nó ở dạng chuẩn thứ hai và
mọi thuộc tính không khóa của nó đều không phụ
thuộc bắc cầu vào khóa chính
Định nghĩa 1
Trang 62DẠNG CHUẨN THỨ BA
• Quan hệ R đƣợc gọi là ở dạng chuẩn thứ ba
(3NF) khi và chỉ khi mọi phụ thuộc hàm không
hiển nhiên X →Y trong quan hệ R phải thỏa mãn
một trong hai điều kiện sau đây:
• X là siêu khóa,hoặc
• Các thuộc tính Y không nằm trong X đều là
thành viên của một khóa nào đó (không nhất
thiết phải cùng một khóa).
Định nghĩa 2
Trang 63DẠNG CHUẨN THỨ BA
• Quan hệ Phan_cong(MaNV, MaDA, Thoigian,
TenNV, TenDA, Diadiem_DA) với các phụ thuộc
Trang 64DẠNG CHUẨN THỨ BA
Ví dụ
Trang 65DẠNG CHUẨN BCNF
• Quan hệ R đƣợc gọi là ở dạng chuẩn Boyce –
Codd (BCNF) khi và chỉ khi với mọi phụ thuộc
hàm không hiển nhiên X → Y trên R, X là siêu
khóa của R
Định nghĩa
Trang 66DẠNG CHUẨN BCNF
Ví dụ
Trang 67DẠNG CHUẨN BCNF
Ví dụ
TenDA Diadiem_DA TenPB
Project A TP.Hà Nội Phòng giải pháp mạng truyền thôngProject B TP.Hà Nội Phòng phần mềm nước ngoài
Trang 69CÁC PHƯƠNG PHÁP CHUẨN HÓA CƠ SỞ
DỮ LIỆU QUAN HỆ
• Hạn chế dư thừa dữ liệu
• Không tổn thất thông tin
• Không bảo toàn phụ thuộc hàm
Phân tách quan hệ về dạng chuẩn BCNF
• Có thể dư thừa dữ liệu
• Không tổn thất thông tin
• Bảo toàn phụ thuộc hàm
Phân tách quan hệ về dạng chuẩn 3NF
Trang 70PHÂN TÁCH QUAN HỆ VỀ DẠNG CHUẨN BCNF
• Gọi đệ quy thuật toán này với (S1,R1) và (S2,R2)
Input: Quan hệ R 0 với tập phụ thuộc hàm S 0
Output: Tập quan hệ R i là kết quả của phép phân
tách từ R 0 , tất cả R i đều BCNF
Trang 71PHÂN TÁCH QUAN HỆ VỀ DẠNG CHUẨN BCNF
Ví dụ:
Trang 72PHÂN TÁCH QUAN HỆ VỀ DẠNG CHUẨN 3NF
• Input: Quan hệ R 0 với tập phụ thuộc hàm S 0
• Output: Tập quan hệ R i là kết quả của phép phân
Trang 73PHÂN TÁCH QUAN HỆ VỀ DẠNG CHUẨN 3NF
• Cho R(A,B,C, D, E)
• F = {AB C, C B, A D}
• Phân rã R thành các quan hệ đạt chuẩn 3NF
Ví dụ