Chương 5
Chuẩn hóa cơ sở dữ liệu
(phụ thuộc hàm & dạng chuẩn)
Giáo trình & Tài liệu tham khảo:
1. Ramez Elmasri, Shamkant B. Navathe, 2011. Fundamentals of Database
systems, 6th edition, Addison-Wesley.
2.
3.
4.
Giáo trình Cơ sở dữ liệu , Trần Đắc Phiến, ĐH Công nghiệp TPHCM
Bộ slide bài giảng của Nguyễn Minh Thư, Khoa CNTT, ĐH KHTN TPHCM
Bộ slide bài giảng của Trần Thị Kim Chi, Khoa CNTT, ĐH Công nghiệp TPHCM
Gv. Nguyễn Như Hoa
1
Nội dung
• Giới thiệu
• Phụ thuộc hàm
• Dạng chuẩn và quá trình chuẩn hóa CSDL
2
Giới thiệu
• Một thiết kế DB tốt là một thiết kế
– Đưa ra tập các quan hệ chứa các thuộc tính biểu
diễn được các dữ liệu mong muốn của bài toán
– Tối thiểu hoặc loại bỏ sự dư thừa dữ liệu trong
mỗi quan hệ
3
Giới thiệu
• Dư thừa dữ liệu trong thiết kế sẽ dẫn tới
– Tốn không gian lưu trữ
– Sai dữ liệu hay dị thường dữ liệu (update
anomalies) khi thực hiện Insert/Update/Delete
• Ví dụ: xét 2 thiết kế DB
Thiết kế 1
Thiết kế 2
Nhanvien( MaNV, Ten, Vitri, Luong, MaPB)
Phongban(MaPB, TenPB)
Nhanvien_PB(MaNV, Ten, Vitri, Luong, MaPB, TenPB)
4
Giới thiệu
Thiết kế 1 không dư thừa dữ liệu
Thiết kế 2 dư thừa dữ liệu : TenPB lặp lại ở nhiều dòng
Nhanvien
MaNV
TeNV
0111
Luong
MaPB
Nguyen An Manager
30000
B005
0112
Bui Liem
Assistant
20000
B005
0201
Le Van
Assistant
15000
B004
0202
Tran Mai
Assistant
15000
B004
0203
Tran Tuan
Manager
20000
B003
Nhanvien_PB
Vitri
Phongban
MaPB
TenPB
B003
Dieu hanh
B004
Nghien cuu
B005
To chuc
MaNV
TeNV
Vitri
Luong
MaPB
TenPB
0111
Nguyen An
Manager
30000
B005
To chuc
0112
Bui Liem
Assistant
20000
B005
To chuc
0201
Le Van
Assistant
15000
B004
Nghien cuu
0202
Tran Mai
Assistant
15000
B004
Nghien cuu
0203
Tran Tuan
Manager
20000
B003
Dieu hanh
5
Giới thiệu
Bất thường khi I/U/D dữ liệu trong thiết kế 2
• Thêm một nhân viên mới (insert), phải đảm bảo
TenPB tương ứng với MaPB, khớp với các bộ đã có
Insert
MaNV
TeNV
Vitri
Luong
MaPB
TenPB
0111
Nguyen An
Manager
30000
B005
To chuc
0112
Bui Liem
Assistant
20000
B005
To chuc
0201
Le Van
Assistant
15000
B004
Nghien cuu
0202
Tran Mai
Assistant
15000
B004
Nghien cuu
0203
Tran Tuan
Manager
20000
B003
Dieu hanh
0301
Pham Tin
Assistant
20000
B005
TCHC
Mâu thuẫn với
MaPB, TenPB
của các bộ đã có
• Thêm một phòng ban mới là không thể, vì MaNV
không thể Null
Insert bộ này là không thể
MaNV
TeNV
Vitri
Luong
MaPB
TenPB
0111
Nguyen An
Manager
30000
B005
To chuc
0112
Bui Liem
Assistant
20000
B005
To chuc
0201
Le Van
Assistant
15000
B004
Nghien cuu
0202
Tran Mai
Assistant
15000
B004
Nghien cuu
0203
Tran Tuan
Manager
20000
B003
Dieu hanh
B001
Ke toan
6
Giới thiệu
Bất thường khi I/U/D dữ liệu trong thiết kế 2
• Xóa một nhân viên : nếu nhân viên này là nhân viên
duy nhất của một phòng ban , thao tác xóa sẽ dẫn
đến xóa luôn phòng ban -> mất thông tin
MaNV
TeNV
Vitri
Luong
MaPB
TenPB
0111
Nguyen An
Manager
30000
B005
To chuc
0112
Bui Liem
Assistant
20000
B005
To chuc
0201
Le Van
Assistant
15000
B004
Nghien cuu
0202
Tran Mai
Assistant
15000
B004
Nghien cuu
0203
Tran Tuan
Manager
20000
B003
Dieu hanh
Xóa nhân viên 0203
sẽ dẫn tới xóa luôn
phòng ban B003
7
Giới thiệu
Bất thường khi I/U/D dữ liệu trong thiết kế 2
• Khi sửa tên một phòng ban : phải đảm bảo
sửa tên phòng ban ở tất cả các bộ tương ứng.
Nếu không sẽ mất tính nhất quán dữ liệu (sai
dữ liệu)
MaNV
TeNV
Vitri
Luong
MaPB
TenPB
0111
Nguyen An
Manager
30000
B005
To chuc
0112
Bui Liem
Assistant
20000
B005
Quan ly Nhan su
0201
Le Van
Assistant
15000
B004
Nghien cuu
0202
Tran Mai
Assistant
15000
B004
Nghien cuu
0203
Tran Tuan
Manager
20000
B003
Dieu hanh
Sửa Tên PB (hay sửa
Mã PB) mà không
sửa trên tât cả các bộ
tương ứng sẽ dẫn
đến mất tính nhất
quán
8
Giới thiệu
• Chuẩn hóa CSDL (normalization) ?
– Chuẩn hóa là kỹ thuật dựa trên “dạng chuẩn”, cho
phép người thiết kế đánh giá một lược đồ quan hệ
và điều chỉnh thiết kế để giảm thiểu hoặc loại bỏ
dư thừa dữ liệu
– Chuẩn hóa dựa trên các dạng chuẩn (normal form)
1NF, 2NF, 3NF, BCNF, …
• Các dạng chuẩn cao hơn thì giảm/loại bỏ dư thừa dữ
liệu mạnh hơn
9
Giới thiệu
• Phụ thuộc hàm (functional dependency)
– Mô tả mối quan hệ giữa các thuộc tính trong một
quan hệ
– Là khái niệm nền tảng để có thể hiểu “dạng chuẩn”
10
Phụ thuộc hàm
Nội dung
•
•
•
•
•
•
•
Khái niệm & Ví dụ
Định nghĩa khóa
Bao đóng của tập phụ thuộc hàm
Luật dẫn Amstrong
Bao đóng của tập thuộc tính
Thuật toán tìm tất cả các khóa
Phủ tối thiểu
11
Phụ thuộc hàm- Khái niệm
• Định nghĩa
Cho R(A1, A2, …, An ) là lược đồ quan hệ
X, Y là hai tập thuộc tính của R
r là quan hệ bất kỳ trên R
t1, t2 là hai bộ bất kỳ trên r
Phụ thuộc hàm X xác định Y :
( hay Y phụ thuộc hàm vào X )
XY
( t1.X = t2.X t1.Y = t2.Y )
12
Phụ thuộc hàm - Khái niệm
• Lưu ý :
– X -> Y khi và chỉ khi : t1, t2r , t1.X = t2.X t1.Y = t2.Y nhưng
không có chiều ngược lại
– (*) Nếu phụ thuộc hàm X -> Y tồn tại trong một lược đồ quan hệ
R, hay được xác định như thuộc tính của R, thì X -> Y phải
thỏa trên mọi thể hiện của R
– Các phụ thuộc hàm được nhận diện dựa vào các qui tắc nghiệp
vụ , hay ngữ nghĩa của các thuộc tính => Phụ thuộc hàm là một
loại ràng buộc toàn vẹn
– Ta bỏ qua các phụ thuộc hàm hiển nhiên (luôn luôn đúng)
• MaNV, TenNV -> TenNV
• MaNV, TenNV -> MaNV
• MaNV, Vitri -> MaNV
….
13
Phụ thuộc hàm - Ví dụ
• Các phụ thuộc hàm được nhận diện dựa vào các qui tắc
nghiệp vụ , hay ngữ nghĩa của các thuộc tính
– Mỗi mã phòng ban xác định duy nhất một tên phòng ban
MAPB TENPB
– Mỗi mã NV xác định duy nhất một tên nv, một vị trí, tiền lương và phòng ban
MANV TENNV, VITRI, LUONG, MAPB, TENPB
– Mỗi vị trí của một phòng ban xác định một mức lương
MAPB, VITRI LUONG
NHANVIEN
MaNV
TeNV
Vitri
Luong
MaPB
TenPB
0111
Nguyen An
Manager
30000
B005
To chuc
0112
Bui Liem
Assistant
20000
B005
To chuc
0201
Le Van
Assistant
15000
B004
Nghien cuu
0202
Tran Mai
Assistant
15000
B004
Nghien cuu
0203
Tran Tuan
Manager
20000
B003
Dieu hanh
14
Phụ thuộc hàm - Ví dụ
• Vd(tt) : Xác định có là phụ thuộc hàm không ? Tại sao ?
•
•
•
•
LUONG MAPB, VITRI
VITRI MANV
TENPB MAPB
TENPB, VITRI LUONG
NHANVIEN
MaNV
TeNV
Vitri
Luong
MaPB
TenPB
0111
Nguyen An
Manager
30000
B005
To chuc
0112
Bui Liem
Assistant
20000
B005
To chuc
0201
Le Van
Assistant
15000
B004
Nghien cuu
0202
Tran Mai
Assistant
15000
B004
Nghien cuu
0203
Tran Tuan
Manager
20000
B003
Dieu hanh
15
Phụ thuộc hàm - Ví dụ
Ví dụ - xác định các phụ thuộc hàm dựa trên các qui tắc nghiệp vụ sau :
• Mỗi máy bay có một giờ khởi hành duy nhất
• Một máy bay và ngày khởi hành sẽ xác định một phi công
• Một phi công và một ngày, giờ khởi hành sẽ xác định được máy bay
CHUYENBAY
PhiCong
Maybay
NgayKH
GioKH
MAYBAY -> GIOKH
MAYBAY, NGAYKH -> PHICONG
PHICONG, NGAYKH, GIOKH -> MAYBAY
Kiểm tra trên dữ liệu ?
16
Định nghĩa khóa
• Siêu khóa/Khóa dự tuyển/ khóa chính : là một loại phụ thuộc hàm
Cho R(A1, A2, … , An) , với Q+ là tập thuộc tính của R, K là tập con của Q+
K là khóa dự tuyển nếu thỏa :
– Tồn tại pth K-> Q+ trên R
– Không tồn tại K’ K mà K’ -> Q+ là một phụ thuộc hàm trên R
Siêu khóa S là tập thuộc tính thỏa K S
• Cho NHANVIEN(MANV, TenNV, Vitri, Luong, MaPB, TenPB) và 2 pth
f1 : MANV, TENNV MANV, TENNV, VITRI, LUONG, MAPB, TENPB
f2 : MANV MANV, TENNV, VITRI, LUONG, MAPB, TENPB
{MANV} là khóa dự tuyển
{MANV, TENNV} là siêu khóa
17
Bao đóng của tập phụ thuộc hàm
• Dựa trên ngữ nghĩa của các thuộc tính của R,
ban đầu ta xác định được tập pth F
• Ta gọi f là pth được suy dẫn từ tập F, nếu với
mọi r(R) thỏa các pth thuộc F thì cũng thỏa f
• Tập phụ thuộc hàm chứa tất cả các phụ thuộc
hàm f suy dẫn từ tập F gọi là bao đóng của tập
phụ thuộc hàm F , ký hiệu F+
• Qui tắc suy dẫn ?
18
Bộ luật dẫn Armstrong
• Bộ luật dẫn Armstrong
Cho quan hệ R(Q+) . X,Y,Z,W là các tập con của Q+.
Rule 1. Phản xạ : Nếu X Y thì XY
Rule 2. Gia tăng:
XY XZ YZ
Rule 3. Bắc cầu :
XY và YZ X Z
Rule 4. Hợp :
XY và XZ X YZ
Rule 5. Chiếu/phân rã: XYZ X Y và X Z
Rule 6. Bắc cầu giả:
XY và YZW XZ W
19
Bộ luật dẫn Armstrong
• Cho R(A,B,C,D) và tập phụ thuộc hàm trên R
F = {AB, AC, BCD}
Hãy chứng minh các pth sau được suy dẫn từ F : AD, ACBCD ?
(hay chứng minh {AD, ACBCD} F+ )
F+
Chứng minh A D F+ :
AB và AC => A BC (luật hợp)
A BC và BCD => A D (bắc cầu)
Chứng minh AC BCD F+ :
A B => AC BC (luật tăng)
AC BC và BCD => AC D (luật bắc cầu)
AC D => AC BCD (luật tăng)
F
AD
AB
AC
BCD
ACBCD
…
20
Bao đóng của tập thuộc tính X
• Bao đóng của tập thuộc tính X , ký hiệu X+
– Ứng với mỗi tập thuộc tính X, ta xác định tập X+ chứa các
thuộc tính phụ thuộc hàm vào X dựa trên F
X+ = Ai với X -> Ai là phụ thuộc hàm được suy diễn từ F
- Thuật toán xác định X + dựa trên F
21
Bao đóng của tập thuộc tính X
• Bao đóng của tập thuộc tính X , ký hiệu X+
– Ví dụ : cho lược đồ quan hệ R(A,B,C,D) và tập phụ thuộc hàm F =
{
f1 : A -> B ;
f2 : B -> C ;
f3 : C -> D ; }
Tìm bao đóng của tập X = {A} dựa trên F ?
Giải :
X+ = {A}
X+ = X+ {B} = {A,B} , vì có A -> B , loại f1
X+ = X+ {C} = {A,B,C} , vì có B -> C , loại f2
X+ = X+ {D} = {A,B,C,D} , vì có C -> D , loại f3
Kết luận : bao đóng của tập {A} = {A,B,C,D}
Tương tự, bao đóng của tập {B} = {B,C,D}
Tương tự, bao đóng của tập {C} = {C,D}
Tương tự, bao đóng của tập {D} = {D}
22
Tìm tất cả các khóa của R
• Một định nghĩa về khóa (dựa trên bao đóng
của tập thuộc tính)
– Cho R (Q+), Q+ là tập thuộc tính của R, F là tập phụ
thuộc hàm trên R, K là một tập con của Q+
K là một khóa của R nếu :
K+ = Q+ và không tồn tại K’ K mà K’ + = Q+
23
Tìm tất cả các khóa của R
• Thuật toán tìm tất cả các khóa
24
Tìm tất cả các khóa của R
• Thuật toán tìm tất cả các khóa – Ví dụ :
Giải :
25