Professional Documents
Culture Documents
04.3 Chương 4 - Thiết kế CSDL
04.3 Chương 4 - Thiết kế CSDL
SỞ DỮ LIỆU
Bộ môn Khoa Học Máy tính – Khoa Công nghệ Thông Tin April 23, 2024 | Page 1
CHƯƠNG 4
THIẾT KẾ CƠ SỞ DỮ LIỆU
Bài 3: Chuẩn hóa
Bộ môn Khoa Học Máy Tính – Khoa Công nghệ Thông Tin April 23, 2024 | Page 2
MỤC TIÊU
1. Nắm được khái niệm chuẩn hóa, các
dạng chuẩn, thuật toán kiểm tra các
dạng chuẩn.
2. Nắm được khái niệm về phân rã lược
đồ, các thuật toán phân rã về 3NF và
NCNF.
3. Sử dụng được các khái niệm đã học để
thiết kế và từng bước chuẩn hóa lược đồ
CSDL cho bài toán thực tế.
Bộ môn Khoa Học Máy Tính – Khoa Công nghệ Thông Tin April 23, 2024 | Page 3
I. GIỚI THIỆU
Chuẩn hóa là một quá trình từng bước để thay thế tập các quan hệ
cho trước thành các quan hệ có cấu trúc đơn giản hơn và chuẩn hơn.
Mục đích của chuẩn hóa là loại bỏ các bất thường của một quan hệ để
có được các quan hệ có cấu trúc tốt hơn, nhỏ hơn.
Quan hệ có cấu trúc tốt là quan hệ có sự dư thừa dữ liệu tối thiểu và cho phép
người dùng thêm sửa xóa dữ liệu mà không gây ra sự mâu thuẫn dữ liệu.
Chuẩn hóa là một kỹ thuật tiếp cận từ dưới lên – bắt đầu từ mối liên
hệ giữa các thuộc tính.
Chú ý: một hướng tiếp cận để thiết kế CSDL khác (từ trên xuống) đã
được đề cập trong chương 2 (mô hình thực thể liên kết).
04/23/2024 4
Chuẩn hóa thường được thực hiện qua nhiều bước, mỗi bước tương
ứng với một dạng chuẩn. Có bốn dạng chuẩn:
Dạng chuẩn 1 – 1NF (First Normal Form)
Dạng chuẩn 2 – 2NF
Dạng chuẩn 3 – 3NF
Dạng chuẩn Boyce-Codd - BCNF
Khi một yêu cầu chuẩn hóa không được thỏa mãn thì quan hệ vi phạm
sẽ được phân rã thành các quan hệ mới sao cho các quan hệ mới này
thỏa mãn yêu cầu chuẩn hóa (gọi là phân rã các dạng chuẩn).
04/23/2024 5
1. Một số khái niệm
7
04/23/2024
2. Dạng chuẩn 1 – 1NF
Định nghĩa: Lược đồ quan hệ R được gọi là 1NF nếu và chỉ nếu
tất cả các thuộc tính của R thoả mãn cả hai điều kiện sau:
- là nguyên tố.
- giá trị của các thuộc tính trên các bộ là đơn trị.
Cách đưa một bảng chưa chuẩn hóa về dạng chuẩn 1:
Một bảng ở dạng chưa chuẩn hóa nếu bảng này chứa một hoặc nhiều
nhóm lặp lại, hoặc chứa các giá trị phức hợp.
Ví dụ: Emp_ID Name Dept_ID Dept_name Course Grade
100 Margaret Simpson D01 Marketing SPSS 10
Surveys 9
140 Alan Beeton D02 Accounting TaxACC 8
110 Chris Lucero D03 Information System SPSS 10
C++ 7
190 Lorenze Davis D04 Finance Java 9
150 Susan Martin D01 Marketing SPSS 8
Java 8
8
04/23/2024
2. Dạng chuẩn 1 – 1NF
Để đưa một bảng chưa chuẩn hóa về dạng chuẩn 1, ta có hai cách:
Loại bỏ các nhóm lặp lại bằng cách điền dữ liệu thích hợp vào các cột trống của hàng chứa
dữ liệu lặp lại. Ví dụ:
Emp_ID Name Dept_ID Dept_name Course Grade
100 Margaret Simpson D01 Marketing SPSS 10
100 Margaret Simpson D01 Marketing Surveys 9
140 Alan Beeton D02 Accounting TaxACC 8
110 Chris Lucero D03 Information System SPSS 10
110 Chris Lucero D03 Information System SPSS 7
190 Lorenze Davis D04 Finance Java 9
150 Susan Martin D01 Marketing SPSS 8
150 Susan Martin D01 Marketing Java 8
Tạo bảng mới chứa các dữ liệu lặp lại. Ví dụ:
Emp_ID Name Dept_ID Dept_name Emp_ID Course Grade
100 Margaret Simpson D01 Marketing 100 SPSS 10
140 Alan Beeton D02 Accounting 100 Surveys 9
110 Chris Lucero D03 Information System 140 TaxACC 8
190 Lorenze Davis D04 Finance 110 SPSS 10
150 Susan Martin D01 Marketing 110 SPSS 7
190 Java 9
150 SPSS 8
150 Java 8
9
04/23/2024
3. Dạng chuẩn 2 – 2NF
Định nghĩa: Lược đồ quan hệ R được gọi là đạt chuẩn 2NF nếu
R là 1NF và mọi thuộc tính không khóa đều phụ thuộc hàm
đầy đủ vào khóa.
Ví dụ: Lược đồ quan hệ sau có ở dạng 2NF không?
ChitietHĐ(SốHĐ, Mãhàng, Tênhàng, Sốlượng) có các phụ
thuộc hàm sau:
{SốHĐ, Mãhàng} Sốlượng
Mãhàng Tênhàng
10
04/23/2024
Ví dụ 2
Cho lược đồ quan hệ:
NHANVIEN (MNV, HT, NS, HSL, MACV, PC)
Tập các phụ thuộc hàm:
F = {MNV HT, NS, HSL, MACV, MCV PC}
Lược đồ quan hệ có ở dạng 2NF không?
11
04/23/2024
Thuật toán kiểm tra dạng chuẩn 2
Thuật toán:
Bước 1: Tìm tất cả các khóa của lược đồ quan hệ
Bước 2: Với mỗi khóa K, tìm bao đóng của tất cả các tập con thực sự S
của K
Bước 3: Nếu tồn tại bao đóng S+ chứa thuộc tính không khóa thì lược
đồ quan hệ không đạt chuẩn 2, ngược lại thì lược đồ quan hệ đạt chuẩn 2.
Nhận xét: Nếu mọi khóa của lược đồ quan hệ R chỉ có một
thuộc tính thì R là 2NF.
12
04/23/2024
Ví dụ
Ví dụ 1: Cho R(U,F), U={A,B,C,D}, F= {AB C, B D, BC
A}. R có đạt chuẩn 2 không?
Ví dụ 2: Cho R(U,F), U = {A,B,C,D,E,G} và F = { A → BC, C
→ DE, E → G }. Lược đồ quan hệ ở dạng chuẩn nào?
13
04/23/2024
4. Dạng chuẩn 3NF
Định nghĩa 1: Lược đồ R ở 3NF nếu:
- R ở dạng chuẩn 2
- Mọi thuộc tính không khóa đều không phụ thuộc bắc cầu vào một khóa bất kỳ
của R.
Định nghĩa 2: Lược đồ ở dạng 3NF nếu: xét mọi pth X A F+ với
AX thì:
Hoặc X là siêu khóa
Hoặc A là thuộc tính khóa.
Ví dụ: Cho NHANVIEN (MaNV, TenNV, NgSinh, Diachi,
MaP,TenPhong, NgayNC) và các phụ thuộc hàm:
MaNV TenNV, NgSinh, Diachi, MaP
MaP TenPhong, NgayNC
Lược đồ quan hệ có ở dạng 3NF không? 14
04/23/2024
Thuật toán kiểm tra dạng chuẩn 3
Thuật toán:
- Bước 1: tìm tất cả khóa của R
- Bước 2: từ F tạo tập phụ thuộc hàm tương đương F’ có vế phải một
thuộc tính
- Bước 3: Kiểm tra
Nếu mọi phụ thuộc hàm XA F’ với AX đều có X là siêu
khóa hoặc A là thuộc tính khóa thì R đạt chuẩn 3
Ngược lại R không đạt chuẩn 3
Nhận xét: Nếu lược đồ quan hệ R không chứa thuộc tính không khoá
thì R là dạng chuẩn ba.
15
04/23/2024
Ví dụ
Ví dụ 1: Cho lược đồ quan hệ R(U,F); U= {A,B,C,D} và
F = { AB C, D B, C ABD}. Hỏi R có đạt chuẩn 3
không?
Ví dụ 2: Xét LĐQH R (U,F) với U={A, B, C, D, E} và F
= {ABCE, EAB, CD}. Xác định dạng chuẩn cao
nhất của lược đồ.
16
04/23/2024
5. Dạng chuẩn BCNF (Boyce Codd)
Lược đồ quan hệ R được gọi là ở dạng chuẩn
Boye_Codd nếu với mọi pth XA F với AX thì X là
một siêu khóa.
Ví dụ:
HOCVIEN(maHV, khoahoc, bienlai)
F={ maHV, khoahoc bienlai; bienlai khoahoc}
có khoá: {maHV,khoahoc}
Quan hệ trên ở dạng BCNF không?
17
04/23/2024
Thuật toán kiểm tra dạng chuẩn BCNF (Boyce Codd)
Thuật toán:
Bước 1: Tìm tất cả các khóa của quan hệ R
Bước 2:
- Nếu mọi pth XA F đều có X là siêu khóa thì R đạt chuẩn BCNF
- Ngược lại R không đạt chuẩn BCNF ( X → A mà X không là siêu khóa)
Chú ý: mọi phụ thuộc hàm đều có vế trái là khóa thì đạt chuẩn
BCNF.
Ví dụ: Cho R(U,F); U = {A,B,C,D,E,I} và F = { ACD EBI, CE
AD}. R có đạt chuẩn BCNF hay không?
18
04/23/2024
6. Thuật toán xác định dạng chuẩn cao nhất
Thuật toán:
Bước 1: Tìm tất cả các khóa của lược đồ
Bước 2: Kiểm tra chuẩn BCNF, nếu đúng thì R ở dạng BCNF, kết
thúc và ngược lại sang bước tiếp theo
Bước 3: Kiểm tra chuẩn 3NF, nếu đúng thì R ở dạng 3NF, kết thúc và
ngược lại sang bước tiếp theo
Bước 4: Kiểm tra chuẩn 2NF, nếu đúng thì R ở dạng 2NF, kết thúc và
ngược lại R đạt 1NF.
Ví dụ: Cho R(A,B,C,D,E) và F = {AB→CE, E→AB, C→D}.
Xác định dạng chuẩn cao nhất của R?
19
04/23/2024
II. PHÂN RÃ LƯỢC ĐỒ QUAN HỆ
Bộ môn Khoa Học Máy Tính – Khoa Công nghệ Thông Tin April 23, 2024 | Page 20
1. Một số khái niệm cơ bản
Định nghĩa: Phép tách lược đồ quan hệ R= {A1, A2, .. An}
là việc thay thế lược đồ quan hệ R bằng tập các lược đồ
con {R1, R2, .., Rk}, trong đó
Ri R, i = 1,..,k - Ri là các lược đồ con
và R = R1 R2 ... Rk
Không đòi hỏi các Ri phải là phân biệt
21
04/23/2024
Ví dụ
Cho lược đồ quan hệ: CT ( MaCTY, MH , ĐC, GIA) và tập
PTH: F = { MaCTY DC; {MACTY,MH} GIA }
22
04/23/2024
2. Phép tách và sự bảo toàn PTH
Định nghĩa tập phụ thuộc hàm của các lược đồ con trong
phép tách:
Cho trước một tập hợp các phụ thuộc hàm F trên R(A1,A2,...,An), D =
(R1, R2, ..., Rm) là một phép tách. Phép chiếu của F trên Ri, ký hiệu là
một tập các phụ thuộc hàm X→Y F+ sao cho các thuộc tính trong
XY đều được chứa trong Ri.
Ký hiệu: Ri(F)={ X→Y F+ với XY Ri}
Thuật toán tìm hình chiếu của F trên Ri
Bước 1: Tìm các tập con của Ri
Bước 2: Tính bao đóng của các tập con.
Bước 3: Fi = {Tập các pth X->Y mà X Y Ri}
23
04/23/2024
Ví dụ
24
04/23/2024
Định nghĩa phép tách bảo toàn phụ thuộc hàm
Phép tách D = (R1, R2, ..., Rm) bảo toàn phụ thuộc hàm đối với
F nếu hợp của các phép chiếu của F trên mỗi Ri trong D là tương
đương với F. Điều đó có nghĩa là (Ri(F))+ =F+.
Nhận xét: Để xác định phép tách D = (R1, R2, ..., Rm) có bảo toàn
phụ thuộc hàm hay không thì xét xem mỗi phụ thuộc hàm X→Y
F có phải là thành viên của tập phụ thuộc hàm G=(Ri(F)) hay
không.
Ví dụ: Cho lược đồ quan hệ R{A,B,C} và F={AB→C, C→A}.
Phép tách D={R1,R2} tách R thành hai lược đồ R1{B,C} và
R2{A,C}. Hỏi phép tách D có bảo toàn phụ thuộc hàm không?
25
04/23/2024
3. Phép tách – kết nối không mất mát thông tin
Giả sử R tách thành các lược đồ con R1, R2, .., Rk và F là
một tập phụ thuộc hàm.
Nói rằng phép tách R thành các lược đồ con R1, R2, …, Rk
là tách - kết nối không mất mát thông tin đối với F nếu
với mỗi quan hệ r trên R thoả F thì
r = R1(r) * R2 (r) * ... * Rk(r)
tức là r được tạo nên từ phép kết nối tự nhiên của các
hình chiếu của nó trên các Ri, i= 1..,k
26
04/23/2024
Kiểm tra phép tách – kết nối không mất mát thông tin
Input:
- R = {A1, A2, .., An} – n thuộc tính tập pth F và
- phép tách p = (R1, R2, .., Rk) – k lược đồ con
Output: Kiểm tra phép tách có mất mát thông tin hay
không ?
27
04/23/2024
Thuật toán
Bước 1: Lập bảng với n+1 cột và k+1 hàng
- Cột thứ j thuộc tính thứ j của lược đồ
- Hàng thứ i lược đồ Ri.
- Tại ô (i,j) điền kí hiệu aj nếu Aj Ri, ngược lại điền kí hiệu bij
Bước 2: Lần lượt xét các pth (XY) F, thay đổi giá trị cho bảng theo
nguyên tắc: Nếu tồn tại các hàng mà tất cả các cột tương ứng với thuộc tính X
có giá trị như nhau thì đồng nhất giá trị cho các thuộc tính ở Y
- nếu có một giá trị aj trong các cột tương ứng với các thuộc tính của Y
thì thay thế hết thành aj, nếu không thay thế hết bằng ký hiệu bij
- Lặp lại bước 2 (kể cả lặp lại các phụ thuộc hàm đã áp dụng) cho tới khi
không làm thay đổi gì bảng nữa
Bước 3: Đánh giá kết quả
- Nếu xuất hiện một hàng gồm toàn kí hiệu a1, a2, .. , an thì phép tách-kết nối là
không mất mát thông tin,
- Ngược lại là phép tách-kết nối mất mát thông tin.
28
04/23/2024
Ví dụ 1
R={MSNV,TenNV,MaSoDA,TenDA, DiadiemDa, Sogio}
F = { MSNV TenNV,
MasoDA {TenDA, DiadiemDA},
{MaSoDA, MSNV} Sogio }
Kiểm tra phép tách thành
- R1 = { MSNV, TenNV}
- R2 = { MaSoDa, TenDA, DiadiemDA}
- R3 = { MSNV, MasoDA, Sogio}
Có mất mát thông tin?
29
04/23/2024
Ví dụ 2
Cho quan hệ R = ABCDE,
Tập phụ thuộc hàm F:
- A C BC
- CD DE C
- CE A
Tách thành các quan hệ: R1 = AD, R2 = AB, R3 = BE, R4 = CDE,
R5 = AE
Kiểm tra phép tách trên có mất mát thông tin không?
30
04/23/2024
3. Thuật toán phân rã thành các lược đồ đạt chuẩn BCNF
Input: Quan hệ R và tập PTH F
Output: tách thành các lược đồ đạt BCNF
Các bước:
- Ban đầu phép tách S chỉ là R
- Chọn pth XA trong đó X không là siêu khóa của S và AX PTH
vi phạm BCNF
- Thay thế S bởi S1 và S2
S1 = XA
S2 = S \ A (loại thuộc tính A khỏi S)
- Quá trình trên tiếp túc cho đến khi tất cả các lược đồ quan hệ đều ở
BCNF
31
04/23/2024
Ví dụ
Cho R = { C, S, Z}, Phụ thuộc hàm: CSZ, Z C
Tìm dạng chuẩn cao nhất của lược đồ. Nếu R chưa là BCNF thì tách
R thành các lược đồ đạt chuẩn BCNF.
32
04/23/2024
4. Thuật toán phân rã thành các 3NF
Input: Lược đồ R và tập các phụ thuộc hàm F
Output: Tách thành các lược đồ ở 3NF
Thuật toán:
- Tìm phủ tối thiểu Ftt của F.
- Nếu có một phụ thuộc hàm nào của Ftt mà liên quan tới tất cả các thuộc
tính của R thì kết quả phép tách chính là R (R không thể tách được).
- Ngược lại,
Với mỗi vế trái X của một phụ thuộc hàm xuất hiện trong F tt hãy tạo
một lược đồ trong D với các thuộc tính {X{A1}{A2}...{Ak}},
trong đó XA1, XA2,..., XAk là các phụ thuộc hàm trong Ftt với
X là vế trái (X sẽ là khoá của quan hệ này).
Nếu có một lược đồ con chứa một khoá K của R thì kết thúc thuật
toán. Ngược lại, tạo một lược đồ con chứa các thuộc tính tạo nên một 33
04/23/2024
Ví dụ
34
04/23/2024
Bài tập
BÀI 1. Cho lược đồ quan hệ R= <U , F> với tập thuộc tính U =
ABCDEHG và tập phụ thuộc hàm F={ DE G, E A, H C,
CG H, DG EA, D B }
a. Xác định khoá của lược đồ quan hệ trên.
b. Xác định dạng chuẩn cao nhất của lược đồ quan hệ trên.
BÀI 2. Xác định dạng chuẩn cao nhất của lược đồ quan hệ với các
thuộc tính ABCDEF và tập phụ thuộc hàm { ABC, CB,
ABDE, FA }
BÀI 3. Cho W= < R,F> R = { A, B, C, D }
F= { B D, A C, C ABD }. Hỏi W có là 2NF, 3NF không ?
35
04/23/2024
Bài tập
BÀI 4. Cho lược đồ R = (BOISQD) và
F = { SD, IB, ISQ, BO }
a. Chứng tỏ rằng phép tách: R = (SD, IB, ISQ, BO) là phép
tách không mất mát thông tin.
b. Chứng tỏ phép tách trên là ở dạng 3NF.
BÀI 5. Xác định dạng chuẩn cao nhất của lược đồ quan hệ sau: H =
(U,F); U=ABCD;
F = { CDB, AC, BACD }
36
04/23/2024
Tóm tắt nội dung bài học
Bộ môn Khoa Học Máy Tính – Khoa Công nghệ Thông Tin April 23, 2024 | Page 37