Tài liệu CƠ SỞ DỮ LIỆU
Trang 1Chương 8 PHỤ THUỘC HÀM VÀ CÁC DẠNG CHUẨN
Trang 2Nội dung chi tiết
Chất lượng của một lược đồ csdl quan hệ
Phụ thuộc hàm
Các dạng chuẩn
Trang 3Chất lượng của một lược đồ csdl quan hệ
Ngữ nghĩa của các quan hệ
Thể hiện sự dư thừa thông tin
Trang 4Chất lượng của một lược đồ csdl quan hệ
Thiết kế một lược đồ quan hệ tốt và xấu?
Đánh giá(không theo chuẩn) một lược đồ quan hệ dựa trên tiêu chí:
- Ngữ nghĩa của các thuộc tính.
- Giảm giá trị trùng lắp trong các bộ.
- Giảm giá trị Null trong các bộ.
- Không cho phép các bộ dữ liệu sai(không xác định)
Định nghĩa các dạng chuẩn được xem là cách đánh giá(theo chuẩn)
- Được giới hạn trên chuẩn của lược đồ quan hệ
Trang 5Ngữ nghĩa của thuộc tính
Làm thế nào để hiểu được giá trị thuộc tính được lưu trữ trong một bộ?
- Thiết kế một lược đồ để dễ dàng giải thích nghĩa của nó.
- Giữ cho các thuộc tính trên quan hệ hoặc thực thể không được trùng lắp.
Trang 6Sự trùng lắp dữ liệu
Khi một phần của dữ liệu có thể suy ra từ một số phần dữ liệu khác thì ta nói có sự trùng lắp dữ liệu
Trang 7Khó khăn trong việc thiết kế dữ liệu quan hệ
Thiết kế dữ liệu quan hệ đòi hỏi chúng ta hướng tới
việc thu thập một tập các lược đồ quan hệ tốt.
Việc thế kế “tồi” có nguy cơ dẫn tới việc trùng lắp thông tin
Lending-schema là một sự thiết kế tốt hay tồi ?
Lending-schema
Trang 8Khó khăn trong việc thiết kế dữ liệu quan hệ
Tại sao Lending-Schema là một sự thiết kế tồi?
- Sự trùng lắp dữ liệu: branch-name, branch-city,assets
- Tốn không gian
- Cập nhật dữ liệu phức tạp
Làm thế nào để chuyển đổi lược đồ Lending thành một một lược đồ tốt:
- Phân rã lược đồ
Trang 9Sự phân rã lược đồ
Sự phân rã là chia quan hệ gốc thành một vài quan
hệ nhỏ hơn Mục đích của sự phân rã này là làm giảm sự trùng lắp thông tin
Hai đặc tính quan trọng cần phải duy trì trong suốt quá trình phân rã:
- Sự bảo toàn thông tin: có thể tìm được bất kỳ thể hiện nào của quan hệ gốc từ các quan hệ được phân rã.
- Bảo toàn phụ thuộc: các ràng buộc trên quan hệ gốc
phải được đảm bảo còn giữ trên các quan hệ được phân rã.
Trang 10Sự phân rã
Phân rã Lending-schema thành 2 lược đồ:
- Branch-schema = (branch-name, branch-city,assets)
- Loan-info-schema = (customer-name, loan-number, branch-name, amount)
Luật bảo toàn: tất cả các thuộc tính trong lược đồ gốc phải được tìm thấy trong các lược đồ phân rã
Trang 11Cập nhật khó khăn
Thêm: phải thêm chính xác dữ liệu, nếu không sẽ dẫn đến sự mâu thuẩn với các dữ liệu đã nhập
Xóa: có khả năng sẽ làm mất thông tin
Sửa: phải sửa luôn các giá trị của các bộ liên quan
Trang 12Ví dụ
Xét quan hệ Phim
Tênphim Nămsx Thờilượng Loạiphim Xưởngsx Diễnviên
Star Wars 1977 124 color Fox Carrie Fisher
Star Wars 1977 124 color Fox Harrison Ford
Mighty Ducks 1991 104 color Disney Emilio Esteves
Wayne’s World 1992 95 color Paramount Dana Carvey
Wayne’s World 1992 95 color Paramount Mike Meyers
Bỏ sót cập nhật
Xóa luôn phim Thêm chính xác
Giải pháp: các thao tác thêm, xóa, sửa phức tạp cần
Trang 13Giá trị Null trong các bộ
Có thể có các thuộc tính không áp dụng cho các bộ của quan hệ Vì thế:
- Nhiều giá trị Null được lưu trong nhiều bộ.
- Tốn nhiều không gian lưu trữ.
- Không chắc chắn cho ra kết quả mong muốn khi sử dụng chúng trong hàm Sum, Count
Giá trị NULL có thể xảy ra ở các trường hợp:
- Thuộc tính không được áp dụng.
- Giá trị tại thuộc tính chưa xác định.
- Giá trị xác định, nhưng chưa nhập.
► Giải pháp: Tránh đặt các thuộc tính mà có giá trị NULL ở một quan hệ cơ sở
Trang 15Ví dụ
Trang 18Nhận diện PTH
Việc nhận diện PTH dựa vào ý nghĩa của thuộc tính
và mối quan hệ của chúng trong quan hệ
Dựa vào dữ liệu trên Staff:
- staffNo → sName
- sName → staffNo
Tuy nhiên, chỉ có pth:
- staffNo → sName
Trang 19Ví dụ
Xét lược đồ quan hệ
Và thể hiện
Phim(Tênphim, Nămsx, Thờilượng, Loạiphim, Xưởngsx, Diễnviên)
Tênphim Nămsx Thờilượng Loạiphim Xưởngsx Diễnviên Star Wars 1977 124 color Fox Carrie Fisher
Star Wars 1977 124 color Fox Harrison Ford
Mighty Ducks 1991 104 color Disney Emilio Esteves
Wayne’s World 1992 95 color Paramount Dana Carvey
Wayne’s World 1992 95 color Paramount Mike Meyers
Trang 20Ví dụ (tt)
Tìm được nhiều PTH
Tênphim Nămsx Thờilượng
Tênphim Nămsx Loại
Tênphim Nămsx Xưởngsx
Tênphim Nămsx Diễnviên
Không là phụ thuộc hàm
Trang 21Chú ý
Xét thể hiện r1
Tênphim Nămsx Thờilượng Loạiphim Xưởngsx Diễnviên
Star Wars 1977 124 color Fox Carrie Fisher
Star Wars 1977 124 color Fox Harrison Ford
Mighty Ducks 1991 104 color Disney Emilio Esteves
Wayne’s World 1992 95 color Paramount Dana Carvey
Wayne’s World 1992 95 color Paramount Mike Meyers
Tênphim Loại
Trang 22Chú ý (tt)
Xét thể hiện r2
Tênphim Nămsx Thờilượng Loạiphim Xưởngsx Diễnviên
Star Wars 1977 124 color Fox Carrie Fisher
Star Wars 1977 124 color Fox Harrison Ford
Mighty Ducks 1991 104 color Disney Emilio Esteves
Kingkong 1993 120 color Paramount Fay Wray
Kingkong 1993 120 Black/white Paramount Robert Amstrong
Tênphim Loại
PTH phải được định nghĩa trên lược đồ quan hệ
Thỏa với mọi thể hiện của quan hệ
Trang 23Luật dẫn Armstrong
Trang 24Nếu X Y và X Z Thì X Y, Z
Nếu X Y và Z Y Thì X Z
Trang 25Hệ quả từ tập PTH
Cho F là tập các PTH định nghĩa trên R
- Nếu có 1 PTH f khác cũng được thỏa với mọi thể hiện của R
- Thì ta gọi f là hệ quả của F
Trang 26f6: A H
Trang 27Bao đóng của PTH(Closure of a Set
of Functional Dependencies)
Cho F là tập các PTH định nghĩa trên R
Tập hợp các PTH hệ quả từ F được gọi là bao đóng của F
- Ký hiệu F+
F F+
Trang 28Tìm bao đóng của F
Từ tập F ban đầu ta sử dụng định nghĩa hình thức của PTH để tìm bao đóng F+
Nếu F quá lớn, tìm F+ sẽ khó khăn và tốn thời gian
Trang 29Suy dẫn từ tập PTH
Cho trước một tập PTH trên 1 quan hệ
Có thể suy luận “quan hệ phải thỏa một tập PTH khác nào đó”
Khả năng suy dẫn nhằm khám phá thêm tập PTH là rất cần thiết để thiết kế các lược đồ quan hệ đạt chất lượng tốt
Trang 30Ví dụ
Xét lược đồ R(A,B,C) thỏa tập PTH
Ta có thể suy diễn R còn thỏa PTH
F = { f1: A B
f2: B C }
f3: A C
Trang 31Bao đóng của F (tt)
Cho F là tập các PTH định nghĩa trên R
Gọi f là một PTH được suy dẫn từ F
- Áp dụng luật dẫn cho các PTH trong F để có được f
Tập hợp các PTH suy dẫn từ F ký hiệu F’
- Ta muốn F’ = F+
Trang 32Tìm bao đóng của F (tt)
Từ tập F ban đầu ta sử dụng các luật dẫn để tìm bao đóng F+
Áp dụng luật dẫn vào F cho đến khi không không thể áp dụng được nữa
Tập F+ rất lớn
Trang 33- Với mỗi pth f trong F+:
Áp dụng tính phản xạ và tính tăng trưởng
trên f và thêm các pth kết quả vào F+
- Với mỗi cặp pth f1ivà f2 trong F+
Nếu f1 và f2 có thể kết nối lại bằng cách sử
dụng luật bắt cầu thì
thêm pth kết quả vào F+
Trang 35Ví dụ
CG H, CG I: CG HI
A C, CG I : AG I
Trang 36- Kiểm tra f có nằm trong F + không
Tìm bao đóng F+ có hiệu quả ???
Trang 37Nhận xét (tt)
Chuyển sang bài toán thành viên
- Ta chỉ cần tìm bao đóng của tập thuộc tính X dựa trên F
- Kiểm tra Y có thuộc bao đóng của X hay không
Trang 38Bao đóng của tập thuộc tính X
F { Y | X Y được suy dẫn từ F }
Là tập hợp những VP của các PTH có VT là X nằm trong F
Trang 39Tìm bao đóng của X
Trang 41Ví dụ (tt)
R(A, B, C, D, E, F)
F = { ABC, BCAD, DE, CFB }
Kiểm tra PTH ABD có suy dẫn từ F không?
Trang 42Ví dụ (tt)
R(A, B, C, D, E, F)
F = { ABC, BCAD, DE, CFB }
Kiểm tra PTH DA có suy dẫn từ F không?
D+
F = {D, E}
Không có A trong bao đóng
Kết luận DA không suy dẫn từ F
Trang 43Một số tính chất (tt)
- Hai tập PTH F1 và F2 gọi là tương đương
Bổ đề
Mọi thể hiện của quan hệ
thỏa F1 Mọi thể hiện của quan hệ thỏa F2
F1 F2 F1+ F2+
F1 F2 F1 là hệ quả của F2 và
F2 là hệ quả của F1
Trang 44Ví dụ
R(A, B, C, D, E)
F1 = { ABC, AD, CDE }
F1 F2 ?
Chứng minh
- F1 là hệ quả của F2 F1 được suy dẫn từ F2
- F2 là hệ quả của F1 F2 được suy dẫn từ F1
Trang 45Ví dụ (tt)
- Ta thấy F1 F2, hiển nhiên F1 là hệ quả của F2
- Xét F2 có AE, tìm xem F1 có AE ?
Trang 46- F1 là hệ quả của F2 F1 được suy dẫn từ F2
- F2 là hệ quả của F1 F2 được suy dẫn từ F1
Trang 47Ví dụ
- Xét CDE không thuộc trong F2
- F1 không được suy dẫn từ F2
- F1 không là hệ quả của F2
- Xét F2 có AE
Trang 49Một số khái niệm (tt)
PTH đầy đủ
Xét X Y
Thì Y phụ thuộc đầy đủ vào X
F F – {XY} {X’Y}
Nếu X’ X sao cho
Y phụ thuộc hàm vào X và
không phụ thuộc hàm vào tập con nào của X
Trang 50Ví dụ
R(A, B, C, D, E, I)
F = { ABCD, BCDE, CDEI }
BCDE là phụ thuộc hàm đầy đủ không?
Trang 51Một số khái niệm (tt)
PTH thừa
Phụ thuộc hàm hiển nhiên: B phụ thuộc hàm hiển nhiên trên A nếu B A
Xét X Y là thừa nếu F F – {XY}
Ví dụ: A A, AB B, ABC BC là các PTH
hiển nhiên
Trang 56Thuật toán tìm tập pth nhỏ nhất G dựa trên F
then replace X → A with (X – {B}) → A in G.
4 For each remaining FD X → A in G
If (G – {X → A }) is equivalent to G,
then remove X → A from G.
Trang 57Ví dụ
R(A, B, C)
F = { ABC, AB, BC }
PTT(F) ?
Mọi VP đều có 1 thuộc tính
Có ABC không là PTH đầy đủ
- Thay thế bằng các PTH đầy đủ
Có thể bỏ phụ thuộc hàm thừa nào?
Trang 58Ví dụ (tt)
F = { AC, AB, BC }
Có thể bỏ phụ thuộc hàm thừa nào?
Trang 59Các khái niệm khóa
- Là một tập các thuộc tính dùng để xác định tính duy nhất của mỗi bộ trong quan hệ
Các bộ trong quan hệ khác nhau từng đôi một
- Siêu khóa
- Khóa
- Khóa chính
Trang 60Siêu khóa
Xét quan hệ R
- Gọi SK là một tập con khác rỗng các thuộc tính của R
- SK là siêu khóa khi và chỉ khi
- Mọi lược đồ quan hệ có tối thiểu 1 siêu khóa
r, t1, t2 r, t1 t2 t1[SK] t2[SK]
Hai bộ bất kỳ có các giá trị khác nhau tại tập thuộc tính siêu khóa
Trang 61 Xét quan hệ R
- Gọi K là một tập con khác rỗng các thuộc tính của R
- K là khóa nếu thỏa đồng thời 2 điều kiện:
- K là một SK
- Một lược đồ quan hệ có thể có nhiều khóa
- Khóa được chọn để cài đặt gọi là khóa chính
không phải là siêu khóa của R
-K’ K , K’ K , K’
Khóa là siêu khóa bé nhất
Trang 6240 40 50
b c d
- ABC, ABD, ACD, BCD
- AB, AC, AD, BC, BD, CD
Trang 63PTH và Khóa
Phụ thuộc hàm cho phép ta diễn tả các RBTV
không thể diễn tả bằng siêu khóa.
- Vd., lược đồ Muon(tenkh, magdmuon, tencn,
sotien)
- Ta muốn có tập các pth sau:
magdmuon sotien magdmuon tencn
nhưng không muốn có pth (vì một giao dịch mượn
có thể của nhiều khách hàng):
magdmuon tenkh
Trang 64Đồ thị phụ thuộc hàm
Đồ thị phụ thuộc hàm là một đồ thị vô hướng, với :
- Một tập nút tượng trưng cho tập PTH, ký hiệu O với tên PTH bên
- Một cung xuất phát từ nút thuộc tính A đến một nút PTH f, cùng
với một cung từ nút PTH f đến nút thuộc tính B, biểu diễn cho PTH AB
Khi F có nhiều PTT, đồ thị của F có chứa chu trình.
Trang 66Ứng dụng phụ thuộc hàm vào khóa
Thuật toán xác định khóa của quan hệ:
1 Xây dựng các tổ hợp có thể có từ Q +
2 Tìm tập S chứa tất cả các tổ hợp K Q + thỏa điều kiện (i), mỗi
tổ hợp K như vậy là một siêu khóa của Q.
3 K S
Nếu K’ | K’ K thì loại K ra khỏi S
- Thực tế, kết hợp bước 2 và bước 3: bắt đầu xét từ những tổ
hợp có ít phần tử nhất, nếu tìm được một tổ hợp K i thỏa điều kiện (i) thì loại bỏ ngay các tổ hợp có chứa K i.
Vấn đề: Số tổ hợp có thể có từ Q + sẽ rất lớn nếu Q + lớn
Cần giới hạn số tổ hợp cần khảo sát
Trang 67Ứng dụng phụ thuộc hàm vào khóa
Giới hạn số lượng tổ hợp:
- Thuộc tính nguồn:
A là một thuộc tính nguồn nếu f: XY F |AY
Trên đồ thị PTH, thuộc tính nguồn không có cung vào
Nhận xét: mọi thuộc tính nguồn phải xuất hiện trong mọi khóa của Q
- Thuộc tính đích:
B là một thuộc tính đích nếu f: XY F| BX
Trên đồ thị PTH, thuộc tính đích chỉ có cung vào, không có cung ra.
Nhận xét: thuộc tính đích không xuất hiện trong bất kỳ khóa nào của Q
Trang 68Ví dụ
Cho Q(ABCDEG) với
F = {f1: ADB; f2:EG A; f3: BC G}Xác định các khóa của Q?
Trang 69Dạng chuẩn
Mục đích: làm cho sự trùng lắp dữ liệu ít nhất
Trang 70Dạng chuẩn 1(First Normal
Form – 1NF)
Một lược đồ R đạt chuẩn 1NF nếu như miền giá trị của các thuộc tính trên R là nguyên tố(atomic)
ato mic
Trang 71UNF to 1NF
1 Điền vào các chỗ trống bằng dữ liệu trùng lắp →
dẫn đến nhiều dữ liệu bị trùng lắp trên quan hệ
2 Thay thế các giá trị không nguyên tố bằng cách
xác định tập thuộc tính làm khóa chính và sau đó tách thành một quan hệ mới → tạo ra hai hay nhiều quan hệ mới, và sẽ làm giảm bớt sự trùng lắp thông tin
Trang 72UNF to 1NF (method 1)
Trang 73UNF to 1NF (method 2)
Trang 74Dạng chuẩn 2 (2NF)
Một lược đồ đạt dạng chuẩn 2 nếu như lược đồ đó
đã đạt dạng chuẩn một và các thuộc tính không
khóa phụ thuộc đầy đủ vào thuộc tính khóa
1NF
propertyNo → pAdress
PK = {clientNo, propertyNo)
Trang 751NF to 2NF
Xác định khóa chính trên quan hệ bị 1NF
PropertyRentalOwner: clientNo, propertyNo
Xác định các pth chỉ liên quan đến khóa chính
clientNo, propertyNo pAddress, rentStart, rentFinish, rent, ownerNo, oName
propertyNo pAddress, rent, ownerNo, oName
Nếu có tồn tại pth riêng phần trên khóa chính thì xóa chúng bằng cách thay thế bằng quan hệ mới
- Xóa (pAddress, rent, ownerNo, oName) từ
PropertyRentalOwner bằng cách thay chúng thành quan hệ mới PreoprtyOwner.
- PropertyRentalOwner được đổi tên thành Rental.
Trang 761NF to 2NF(tt)
1NF
2NF
Trang 77Dạng chuẩn 3(3NF)
Một lược đồ R ở dạng chuẩn 3 khi nó đạt dạng chuẩn 2 và tất cả các thuộc tính không khóa không phụ thuộc bắt cầu vào khóa
Vì thế, PropertyOwner không đạt 3NF
Trang 782NF to 3NF
Xác định thuộc tính khóa trong quan hệ đạt dạng chuẩn 2
PropertyOwner: propertyNo
Xác định phụ thuộc hàm trong quan hệ
propertyNo pAddress, rent, ownerNo, oName
ownerNo oName
Nếu pth bắt cầu tồn tại trên khóa chính thì xóa bỏ chúng bằng cách thay thế chúng bằng một quan hệ mới
- Xóa oName từ PropertyOwner bằng cách thay thế quan
hệ Owner.
- PropertyOwner được thay đổi thành PropertyForRent.
Trang 792NF to 3NF
Trang 80Client, PropertyForRent &
Owner đạt chuẩn BCNF vì
mỗi xác định có thể đều là
khóa.
Rental cũng đạt chuẩn BCNF
vì mỗi xác định (vd clientNo,
propertyNo hoặc clientNo,
rentStart hoặc propertyNo,
rentStart) đều cũng là khóa
Trang 823NF to BCNF
3NF
Primary key
Primary key
Trang 83Ví dụ
Xét quan hệ Hướngdẫn
Các qui tắc đặt trên quan hệ là:
- Mỗi sinh viên có thể theo một số chủ đề
- Mỗi chủ đề có thể có một số hướng dẫn viên
- Một hướng dẫn viên chỉ tư vấn cho một chủ đề
- Mỗi sinh viên cụ thể theo một chủ đề có một hướng dẫn viên cụ thể
- Một hướng dẫn viên có thể tư vấn một số sinh viên
Trang 84Ví dụ:
Yêu cầu
- Xác định các phụ thuộc hàm liên quan?
- Xác định dạng chuẩn của Hướngdẫn?
- Chuẩn hóa thành dạng chuẩn cao nhất