Bài giảng Cơ sở dữ liệu - Chương 8: Phụ thuộc hàm và các dạng chuẩn - Lưu Huỳnh Châu Pha
Nộ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
Chấ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
Những khó khăn(Anomalies) trong vấn đề:
Thêm
Xóa
Cập nhật
Thể hiện giá trị NULL trong các bộ
CD→E, CD→EI }
BCD→E là phụ thuộc hàm đầy đủ không?
51
Mộ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 – {X→Y}
Ví dụ: A → A, AB → B, ABC → BC là các PTH hiển nhiên
52
Phủ tối thiểu
Cho F là tập các PTH định nghĩa trên R
Mà VP chỉ chứa 1 thuộc tính
PTH G gọi là PTT
Nếu G là một phủ
G chỉ chứa những PTH đầy đủ
G không chứa những PTH thừa
Ký hiệu: G=PTT(F)
53
Ví dụ
R(A, B, C, D)
F = { A→B, B→A, B→C, A→C, C→A }
PTT(F) ?
Mọi VP đều có 1 thuộc tính
Các PTH đều đầy đủ
Có thể bỏ phụ thuộc hàm thừa nào?
54
Ví dụ (tt)
Xét A→B
A + F – {A→B} = AC
A→B không là phụ thuộc hàm thừa
Xét B→A
B + F-{B→A} = BCA
B→A là phụ hàm thừa
không chứa VP
có chứa VP
55
Ví dụ (tt)
Nếu bỏ đi B→A và A→C thì
F’ = { A→B, B→C, C→A }
F’ ≡ F nên F’=PTT(F)
Chỉ cần xét F được suy dẫn từ F’
Nếu bỏ đi B→C
F” = { A→B, B→A, A→C, C→A}
F” ≡ F nên F”=PTT(F)
F’ ≡ F”
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
56
Thuật toán tìm tập pth nhỏ nhất G dựa trên F
G ← F
Replace each FD X → { A 1 , A 2 , ......., A n } in G by n FDs X → A 1 , X → A 2 , , X → A n .
For each FD X → A in G
for each attribute B that is an element of X
If ( ( G – { X → A }) ∪ {( X – { B }) → A } ) is eq nt to G,
then replace X → A with ( X – { B }) → A in G.
For each remaining FD X → A in G
If ( G – { X → A }) is equivalent to G,
then remove X → A from G.
57
Ví dụ
R(A, B, C)
F = { AB→C, A→B, B→C }
PTT(F) ?
Mọi VP đều có 1 thuộc tính
Có AB→C 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?
58
Ví dụ (tt)
F = { A→C, A→B, B→C }
Có thể bỏ phụ thuộc hàm thừa nào?
59
Các khái niệm khóa
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
Gồm
Siêu khóa
Khóa
Khóa chính
60
Siê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
61
Khóa
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
62
Ví dụ
A
B
C
R
x
1
10
D
a
x
2
20
a
1
1
1
40
40
50
b
c
d
y
y
z
Tập hợp các thuộc tính
ABCD
ABC, ABD, ACD, BCD
AB, AC, AD, BC, BD, CD
A, B, C, D
Siêu khóa
ABCD, ABD, ACD, BCD, BD, CD
Khóa
BD, CD
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
63
PTH 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
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 cạnh.
Một tập nút tượng trưng cho các thuộc tính, ký hiệu ● với tên thuộc tính bên cạnh.
Một tập cung có hướng nối một nút PTH(thuộc tính) đến một nút thuộc tính (PTH).
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 A→B
Khi F có nhiều PTT, đồ thị của F có chứa chu trình.
65
Ví dụ
Cho F = {f 1 :A→BC; f 2 : B →A; f 3 : AD →E; f 4 :BD →E }
Đồ thị của F:
A
C
E
B
D
f 1
f 2
f 3
f 4
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ệ:
Xây dựng các tổ hợp có thể có từ Q +
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.
∀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
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: X→Y ∈ F |A∈Y
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: X→Y ∈ F | B∈X
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
68
Ví dụ
Cho Q(ABCDEG) với
F = {f 1 : AD→B; f 2 :EG →A; f 3 : BC →G}
Xác định các khóa của Q?
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
69
Dạng chuẩn
Mục đích: làm cho sự trùng lắp dữ liệu ít nhất
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
70
Dạ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)
Non-atomic
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
71
UNF to 1NF
Đ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ệ.
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.
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
72
UNF to 1NF (method 1)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
73
UNF to 1NF (method 2)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
74
Dạ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)
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
75
1NF 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 .
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
76
1NF to 2NF(tt)
1NF
2NF
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
77
Dạ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í dụ:
1. propertyNo → pAddress, rent, ownerNo, oName
⇒ propertyNo → ownerNo
2. ownerNo → oName
Bắc cầu: propertyNo → oName
Vì thế, PropertyOwner không đạt 3NF
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
78
2NF 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 .
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
79
2NF to 3NF
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
80
BCNF(Boyce – Codd NF)
Một lược đồ chỉ đạt dạng chuẩn BCNF nếu khi mỗi xác định đều là siêu khóa.
Mọi quan hệ đạng chuẩn BCNF đều đạt dạng chuẩn 3, nhưng ngược lại thì chưa chắc.
Example:
Client , 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
3NF to BCNF
Xác định phụ thuộc hàm A → B của Q, trong đó A#B và A không là siêu khóa
Phân rã quan hệ gốc Q thành hai quan hệ Q1={A,B}, Q2 ={tập các thuộc tính còn lại của Q}
Lặp lại qui trình trên cho Q2 đến khi không thể tiếp tục.
Quan hệ Q1 và các Qi phân rã được từ Q2 là quan hệ cuối cùng đạt chuẩn BCNF
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
81
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
82
3NF to BCNF
3NF
Primary key
Primary key
Ví dụ
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
83
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
Mã sinh viên
Chủ đề
Hướng dẫn viên
97001
Mạng truyền thông
Mr.Minh
97001
Hệ thống TT
Mr.Hà
97003
Cơ sở dữ liệu
Mr.Hiếu
97004
Mạng truyền thông
Mr.Nam
97005
Mạng truyền thông
Mr.Minh
Ví 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
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
84
Ví dụ
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
85
Cho quan hệ
Các phụ thuộc hàm
Sohd → makh,tenkh,dckh,ngayhd,mahg,tenhg,mota_hg,dvt
Makh → tenkh, dckh
Mahg → tenhg,mota_hg,dvt
Sohd,mahg → soluong_hg
HÓA ĐƠN
Sohd,makh,tenkh,dckh,ngayhd,mahg,tenhg,mota_hg,dvt,soluong_hg
Ví dụ
Yêu cầu
Xác định khóa?
Chuẩn hóa lược đồ trên sao cho đạt chuẩn cao nhất?
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
86
Cơ sở dữ liệu - Khoa CNTT - ĐH KHTN TPHCM
87
File đính kèm:
bai_giang_co_so_du_lieu_chuong_8_phu_thuoc_ham_va_cac_dang_c.pptx

