Tài Liệu môn HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU
Trang 1CHƯƠNG
(Functional Dependency)
Trang 2Nội dung
Dư thừa dữ liệu
Phụ thuộc hàm
Hệ tiên đề Amstrong
Bao đóng của tập phụ thuộc hàm
Bao đóng của tập thuộc tính
Tìm khóa
Trang 3Các vấn đề trong tổ chức dữ liệu
được lặp lại mỗi lần cho mỗi môn thi.
hay bất thường khi cập nhật Do hậu quả của dư
thừa, chúng ta có thể cập nhật họ tên của một sinh viên trong một bộ nào đó nhưng vẫn để lại họ tên
cũ trong những bộ khác
Trang 4Các vấn đề trong tổ chức dữ liệu…
Bất thường khi chèn (insertion anomaly) Chúng ta không thể biết họ tên của một sinh viên nếu hiện tại sinh viên đó không dự thi môn nào
Bất thường khi xoá (deletion anomaly) chúng ta có thể xoá tất cả các môn thi của một sinh viên, vô ý làm mất dấu vết để tìm ra họ tên của sinh viên
này.
Trang 5Dư thừa dữ liệu (Data redundancy)
Mục đích của thiết kế CSDL là gom các
thuộc tính thành các quan hệ sao cho
giảm thiểu dư thừa dữ liệu
Hậu quả của dư thừa dữ liệu:
Lãng phí không gian đĩa
Các bất thường khi cập nhật
Ba loại bất thường:
Bất thường khi thêm vào
Bất thường khi xóa bỏ
Trang 6 Khóa chính của bảng PERSON?
Î SSN + Hobby
Thông tin cá nhân bị trùng lặp
Các bất thường:
Nếu John thay đổi chỗ ở Æ update anomaly
Nếu bổ sung thêm người mới tên là Homer Simpson nhưng chưa biết sở thích của anh ta Æ không thể tạo bản ghi mới được Æ insertion anomaly
Nếu Bart Simpson không có bất kỳ sở thích nào Æ xóa sở
Trang 7Phụ thuộc hàm (Functional Dependency)
Phụ thuộc hàm mô tả mối liên hệ giữa các thuộc tính X → Y
Phụ thuộc hàm (functional dependancy) làmột công cụ dùng để biểu diễn một cách
hình thức các ràng buộc toàn vẹn
Dựa vào phụ thuộc hàm để thiết kế lại
CSDL, loại bỏ các dư thừa dữ liệu
7
Trang 8Phụ thuộc hàm (Functional Dependency)
Cho lược đồ quan hệ R(U), r là 1 quan hệ
bất kỳ trên R, X và Y là 2 tập thuộc tính con của U
Định nghĩa: Phụ thuộc hàm (FD) f: X Æ Y
trên lược đồ quan hệ R nếu và chỉ nếu mỗi giá trị X trong r có quan hệ chính xác với 1 giá trị Y trong r Nghĩa là bất kể khi nào 2 bộcủa r có cùng giá trị X thì cũng có cùng giátrị Y
∀t1, t2 ∈ r(R): t1[X] = t2[X] ⇒ t1[Y]= t2[Y]
Trang 9Phụ thuộc hàm (Functional Dependency)
Cho lược đồ quan hệ Q {A1,A2,…,An} X, Y là hai tập con khác rỗng của Q+(tập thuộc tính)
Ta nói X xác định Y (hay Y phụ thuộc hàm vào X) nếu với r là một quan hệ nào đó trên Q, ∀ t1, t2 ∈
r mà t1.X = t2.X ⇒ t1.Y = t2.Y (nghĩa là không thể tồn tại hai bộ trong r có các thuộc tính trong tập X giống nhau mà lại có một hay nhiều thuộc tính
trong tập Y khác nhau)
Khi đó ta ký hiệu là X → Y.
9
Trang 10Giải thuật kiểm tra phụ thuộc hàm
Bài toán: cho quan hệ r và 1 phụ thuộc
hàm f: XÆ Y Kiểm tra xem quan hệ r có
thỏa mãn phụ thuộc hàm f hay không?
Trang 12Tập phụ thuộc hàm
Gọi F là 1 tập phụ thuộc hàm trên R nếu mọi phụ thuộc hàm trong F đều là phụ thuộc hàm trên R
Phụ thuộc hàm tầm thường (trivial FD) hay phụ
thuộc hàm hiển nhiên X Æ Y nếu Y ⊆ X
Ví dụ: Name, Address → Name
không hiển nhiên trong tập F, các phụ thuộc hàm hiển nhiên được ngầm hiểu là đã có trong F.
Trang 13Cách Xác Định Phụ Thuộc Hàm Cho Lược Đồ Quan Hệ
Cách duy nhất để xác định đúng các phụ thuộc
thích hợp cho một lược đồ quan hệ là xem xét nội dung tân từ của lược đồ quan hệ đó
Chẳng hạn tân từ của lược đồ quan hệ Sinhvien là:
”Mỗi sinh viên có mỗi MASV duy nhất Mỗi MASV
xác định các thuộc tính còn lại của sinh viên đó như HOTENSV,NU, NGAYSINH, NOISINH,TINH,MALOP”
Khi phát biểu tân từ cho một lược đồ quan hệ,
người thiết kế cần phải mô tả đầy đủ ý nghĩa để
người khác tránh hiểu nhầm
Trang 14Hệ tiên đề Amstrong
Phụ thuộc hàm X Æ Y được suy diễn luận
lý từ F nếu mọi quan hệ thỏa mãn mọi
phụ thuộc hàm trong F thì cũng thỏa mãn
X Æ Y
Ký hiệu F ⊨ XÆY
F bao hàm (implies) XÆY
XÆY được suy diễn theo quan hệ từ F
Trang 15Hệ tiên đề Amstrong
Để có thể xác định được các phụ thuộc
hàm khác từ tập phụ thuộc hàm đã có, ta dùng hệ tiên đề Armstrong (1974), gồm
các luật sau
15
Trang 17 F5 Chiếu (projectivity): X →YZ ⇒ X →Y
F6 Bắc cầu giả (pseudotransitivity): X→Y
và YZ→W ⇒ XZ →W
17
Trang 19Phụ thuộc hàm tương đương
Nếu F và G là 2 tập FD F suy diễn G ( F
entails G) nếu F suy diễn được tất cả các
FD có trong G
F và G là tương đương nhau nếu F suy
diễn G và G suy diễn F
19
Trang 20Kiểm tra các tập FD tương đương
Input: F, G – các tập FD
Output: true nếu F tương đương G,
false nếu ngược lại For each f ∈F do
if G does not entail f then return false
For each g ∈ G do
if G does not entail f then return false
Return true
Trang 21Ví dụ
Hãy khảo sát 2 tập FD sau:
F={ACÆB, AÆC, DÆA }
G={AÆB , AÆC, DÆA , DÆB}
F và G có tương đương nhau không???
Từ AÆC + Tiên đề F2 Î AÆAC (1)
Từ (1)+ ACÆB + tiên đề F3 Î AÆB
Từ DÆA + AÆB + tiên đề F3 Î DÆ B
ÎF suy diễn G
Trang 22Bao đóng của tập phụ thuộc hàm
Bao đóng (closure) của tập phụ thuộc hàm
Trang 24Bao đóng của tập phụ thuộc hàm
Ví dụ cho F={ABÆ C, CÆB} trên r(ABC)
BÆB, ABÆB, BCÆB, ABCÆB, CÆC, ACÆC, BCÆC, ABCÆC,ABÆAB, ABCÆAB,
ACÆAC, ABCÆAC,BCÆBC, ABCÆBC,ABCÆABC,
ABÆC, ABÆAC, ABÆBC, ABÆABC,
Trang 25Phủ tối thiểu
F được gọi là một tập phụ thuộc hàm tối
thiểu nếu F thoả đồng thời ba điều kiện sau:
Trang 26Thuật toán tìm phủ tối thiểu
Dữ liệu vào : Lược đồ quan hệ ban đầu Q và tập
phụ thuộc hàm F, số lượng phụ thuộc hàm trong F
là m.
Dữ liệu ra : Tập phụ thuộc hàm tối thiểu của F
Tách vế phải mỗi phụ thuộc hàm trong F sao cho vế phải của mỗi phụ thuộc hàm chỉ chứa một thuộc tính
Tìm tập phụ thuộc hàm đầy đủ bằng cách loại bỏ các
thuộc tính dư thừa ở vế trái của từng phụ thuộc hàm.
Loại bỏ các phụ thuộc hàm dư thừa trong F.
Trang 27Bao đóng của tập thuộc tính
Bao đóng của tập thuộc tính X dựa trên
Trang 28Bao đóng của tập thuộc tính
Cho lược đồ quan hệ Q giả sử F là tập
các phụ thuộc hàm trong Q, tập thuộc
tính X ⊆ Q+
Bao đóng của tập thuộc tính X đối với tập phụ thuộc hàm F ký hiệu là X+ (hoặc )
là tập tất cả các thuộc tính A ⊆ Q+ được
suy ra từ X dựa vào các phụ thuộc hàm
trong F và hệ tiên đề Armstrong, nghĩa là:X+ = {A : A ∈ Q+ và X → A ∈ F+}
F
X +
Trang 29Bao đóng của tập thuộc tính
Các tính chất của bao đóng của tập thuộc
tính X+
Trang 30Giải thuật tìm bao đóng của tập thuộc tính trên tập phụ thuộc hàm
Input: tập thuộc tính X và tập phụ thuộc hàm F
Output: bao đóng của X dựa trên F
Procedure Closure (X,F,Closure_X)
Trang 31Ví dụ tìm bao đóng của X
Cho R(A,B,C,D,E,F) và tập F={f1:DÆB, f2: AÆC, f3: ADÆE, f4:CÆF}
Trang 32Bài toán thành viên
Cho trước tập các phụ thuộc hàm F và một phụ
thuộc hàm f, bài toán kiểm tra có hay không f ∈ F+
gọi là bài toán thành viên.
Để giải quyết bài toán bài toán thành viên thật sự không đơn giản; vì mặc dù F là rất nhỏ nhưng F+ thì có thể rất lớn Tuy nhiên ta có thể giải bằng
cách tính X+ và so sánh X+ với tập Y Dựa vào tính
chất X → Y ∈ F+ ÅÆ Y ⊆ X+, ta có ngay câu trả
lời X → Y ∈ F+ hay không ? Như vậy thay vì giải
bài toán thành viên ta đưa về giải bài toán tìm bao đóng của tập thuộc tính.
Trang 33Ví dụ kiểm tra phụ thuộc hàm
Cho F={DÆB, AÆC, ADÆE, CÆB} Kiểm tra F có bao hàm AÆB??
Trang 34Kiểm tra thành viên trong F+
Để xác định F ⊨ XÆY, cần kiểm tra XÆ Y ∈ F+
Trang 35Khoá Của Quan Hệ (relation key)
Cho quan hệ Q(A1,A2,…,An) được xác định bởi tập thuộc tính Q+ và tập phụ thuộc hàm
F định nghĩa trên Q, cho K ⊆ Q + K là một khoá của Q nếu thoả đồng thời cả hai điều kiện sau:
1 K → Q+ ∈ F+ (hay K +
F = Q+) (K chỉ thoả điều kiện 1 thì được gọi là siêu khoá)
2 Không tồn tại K' ⊂ K sao cho K'+ = Q+
Trang 36Thuật Toán Tìm Một Khoá Của Một Lược Đồ Quan Hệ Q
Trang 37Ví dụ
Trang 38Thuật Toán Tìm Tất Cả Các Khoá Của Một Lược Đồ Quan Hệ
Trang 39Ví dụ
Trang 40Phương pháp tìm khóa
Xác định tập bắt buộc phải có trong khóa
(tập thuộc tính trừ vế phải)
Xác định tập thuộc tính cần phải thử và các tập con của nó (loại bỏ tập từ tập thuộc tính những thuộc tính bắt buộc và thuộc tính chỉ
có ở vế phải)
Xác định khóa
Trang 41Ví dụ1
Cho R(A,B,C,D,E,F) và F={DÆB, AÆC,
ADÆE, CÆF} Tìm tất cả các khóa của R
Trang 42Ví dụ 2
Cho R(A,B,C,D,E,F) và F={AÆD, CÆAF,
ABÆ EC} Tìm khóa của R?
TN={B} , TG={AC}
Khóa của R là {AB} và {BC}