5 - 3 Chuẩn hóa cơ sở dữ liệu quan hệ

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 47

HỌC VIỆN KỸ THUẬT MẬT MÃ

KHOA CÔNG NGHỆ THÔNG TIN

 
ThS. Cao Vinh
caovinh226@gmail.com

“Tri thức là chìa khóa mở cánh cửa tương lai"


Chuẩn hóa lược đồ quan hệ

Chuẩn hóa là gì?


Chuẩn hóa là quá trình phân dã lược đồ quan hệ dựa trên một tập phụ thuộc
hàm nhằm đảm bảo các lược đồ quan hệ thỏa mãn hai tính chất:
- Trùng lắp dữ liệu ít nhất
- Khả năng gây ra bất thường khi cập nhật được giảm thiểu
Chuẩn hóa các bảng là gì?
Chuẩn hóa các bảng là việc áp dụng một số quy tắc để đưa các bảng từ
dạng chuẩn thấp lên dạng chuẩn cao hơn

31.03.2022 2
Dạng chuẩn Boyce Codd (BCNF)

Dạng chuẩn 3 (3NF- Third Normal Form)

Dạng chuẩn 2 (2NF- Second Normal Form)

Dạng chuẩn 1 (1NF- First Normal Form)

31.03.2022 3
Một số khái niệm cơ bản

Thuộc tính khóa


A được gọi là thuộc tính khoá nếu A là một thành phần thuộc một
khoá nào đó của R, ngược lại A được gọi là thuộc tính không khóa
Ví dụ Cho lược đồ R = <U,F>
U = { A, B, C, D }
F = { AB  C, B  D, BC  A }

Ta thấy AB và BC là khoá.
A, B, C là thuộc tính khoá
D là thuộc tính không khoá

31.03.2022 4
Một số khái niệm cơ bản

Phụ thuộc hàm đầy đủ


Cho lược đồ quan hệ R(U). X và Y là hai tập thuộc tính khác nhau
X  U và Y  U
Y là phụ thuộc hàm đầy đủ vào X nếu Y là phụ thuộc hàm vào X nhưng
không phụ thuộc hàm vào bất kì một tập hợp con nào thực sự của X
Phụ thuộc hàm bắc cầu
Cho lược đồ quan hệ R(U),
X là một tập thuộc tính X  U ,
A là một thuộc tính A  U.
X  A được gọi là thuộc tính A phụ thuộc hàm bắc cầu vào tập thuộc tính X
nếu tồn tại một tập con Y sao cho
XY
YX
YA
31.03.2022 5
A  XY
Dạng chuẩn 1NF

Khái niệm
Lược đồ quan hệ R được gọi là chuẩn 1NF nếu và chỉ nếu tất cả các
thuộc tính của R thỏa mãn các đ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ị, không chứa nhóm lặp
- Không có thuộc tính nào có giá trị mà có thể tính toán được từ một số
thuộc tính khác

31.03.2022 6
Ví dụ dạng chuẩn 1NF

Ví dụ: Xét quan hệ sau


MaDA TenDA Diadiem
1 Du an 1 A, B
2 Du an 2 C
3 Du an 3 E, F

MaDA TenDA MaDA Diadiem


1 Du an 1 1 A
2 Du an 2 1 B
3 Du an 3 2 C
3 E
3 F

31.03.2022 7
Dạng chuẩn 2NF

Khái niệm
Lược đồ quan hệ R được gọi là chuẩn 2NF nếu đã chuẩn 1NF và tất cả
các thuộc tính không khóa của R đều phụ thuộc hàm đầy đủ vào khóa.
 Chú ý
Thuộc tính không khóa là thuộc tính không tham gia vào bất kì khóa nào

31.03.2022 8
Nhắc lại Phụ thuộc hàm đầy đủ

Cho lược đồ quan hệ R(U). X và Y là hai tập thuộc tính khác nhau
X  U và Y  U
Y là phụ thuộc hàm đầy đủ vào X nếu Y là phụ thuộc hàm vào X nhưng
không phụ thuộc hàm vào bất kì một tập hợp con nào thực sự của X
Chú ý
Phụ thuộc hàm có vế trái một thuộc tính là phụ thuộc hàm đầy đủ

31.03.2022 9
Dạng chuẩn 2NF

Ví dụ 1 Quan hệ sau có ở dạng 2NF không?

ChitietHĐ (SoHĐ, Mahang, Tenhang, Soluong) có các phụ thuộc hàm:

{SoHĐ, Mahang}  Soluong

Mahang Tenhang

31.03.2022 10
Dạng chuẩn 2NF

Ví dụ 2 Quan hệ sau có ở dạng 2NF không?

NV_DA (MaNV, MaDA, Sogio, TenDA, Diadiem)

NV_DA (MaNV, MaDA, Sogio) DuAn(MaDA,TenDA, Diadiem)

31.03.2022 11
Dạng chuẩn 2NF

Ví dụ 3 Quan hệ sau có ở dạng 2NF không?


NHAVIEN (MaNV, HoTen, NgaySinh, HSL,Quequan)
Các phụ thuộc hàm:
MaNV  HoTen, NgaySinh, HSL, Quequan

Chuẩn 2NF

31.03.2022 12
Thuật toán kiểm tra dạng chuẩn 2NF

Bước 1: Tìm tất cả các khóa của 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ự (kí hiệu là
S) của K

Bước 3: Nếu có bao đóng S+ chứa thuộc tính không khóa thì quan hệ không đạt
chuẩn 2, ngược lại thì 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ó 1 thuộc tính thì R là 2NF

31.03.2022 13
Ví dụ

Ví dụ 1: Cho lược đồ quan hệ R(A,B,C,D) và tập phụ thuộc hàm F


F= {AB  C, B  D, BC  A}
Hỏi R có đạt chuẩn 2NF không?
Ví dụ 2: Cho lược đồ quan hệ R = { A,B,C,D,E,G } và tập thuộc tính F
F = { A → BC, C → DE, E → G }
Quan hệ Rcó đạt chuẩn 2NF hay không?

31.03.2022 14
Ví dụ 1: Cho lược đồ quan hệ R(A,B,C,D) và tập phụ thuộc hàm F
F= {AB  C, B  D, BC  A}
Hỏi R có đạt chuẩn 2NF không?

• Thuộc tính khóa là


Không đạt
A, B, C Nhận thấy
Khóa là AB, BC chuẩn
• Thuộc tính không B+ = {BD}
2NF
khóa là D

31.03.2022 15
Ví dụ 2: Cho lược đồ quan hệ R = { A,B,C,D,E,G } và tập thuộc tính F
F = { A → BC, C → DE, E → G }
Quan hệ R có đạt chuẩn 2NF hay không?

Khóa A chỉ có một


Khóa là A
thuộc tính Chuẩn2NF

31.03.2022 16
Dạng chuẩn 3NF

Định nghĩa 1
Lược đồ quan hệ R được gọi là chuẩn 3NF nếu:

• đã chuẩn 2NF

• 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 AX thì:

• Hoặc X là siêu khóa

• Hoặc A là thuộc tính khóa

31.03.2022 17
Thuật toán kiểm tra dạng chuẩn 3NF

Bước 1: Tìm tất cả các khóa của quan hệ

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 XA  F’ với AX đều có X là siêu khóa
hoặc A là thuộc tính khóa thì R đạt chuẩn 3NF

 ngược lại R không đạt chuẩn 3NF

 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 3NF

31.03.2022 18
Ví dụ

Ví dụ 1: Cho lược đồ quan hệ Q(A,B,C,D) và phụ thuộc hàm F

F = { AB C, D B, C ABD}.

Hỏi Q có đạt chuẩn 3NF không?

Ví dụ 2: Cho lược đồ quan hệ R{A,B,C,D,E} và tập phụ thuộc hàm F

F= {ABCE, EAB, CD}

Hỏi R có đạt chuẩn 3NF không?

31.03.2022 19
Ví dụ 1: Cho lược đồ quan hệ Q(A,B,C,D) và phụ thuộc hàm F

F = { AB C, D B, C ABD}.

Hỏi Q có đạt chuẩn 3NF không?

• Thuộc tính khóa là Chuẩn


Khóa là C,AB, AD
A, B, C,D 3NF

31.03.2022 20
Ví dụ

Ví dụ 2: Cho lược đồ quan hệ R{A,B,C,D,E} và tập phụ thuộc hàm F

F= {ABCE, EAB, CD}

Hỏi R có đạt chuẩn 3NF không?

• Xét CD: C không phải là siêu Không đạt


Khóa là E,AB khóa, D không phải là thuộc tính chuẩn
khóa 3NF

31.03.2022 21
Dạng chuẩn BCNF

Định nghĩa
Lược đồ quan hệ R được gọi là ở dạng chuẩn Boye_Codd nếu với
mọi phụ thuộc hàm XA  F+ với AX thì X là một siêu khóa.

31.03.2022 22
Thuật toán kiểm tra dạng chuẩn BCNF

Bước 1: Tìm tất cả các khóa của quan hệ R

Bước 2: Từ F tạo tập phụ thuộc hàm tương đương với F gọi là 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 XA 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)

 Nhận xét
Mọi phụ thuộc hàm có vế trái là khóa thì đạt chuẩn BCNF

31.03.2022 23
Ví dụ

Ví dụ 1 Cho lược đồ quan hệ U = {A,B,C,D,E,I} và tập phụ thuộc hàm F

F= { ACD -> EBI, CE ->AD}

Hỏi có đạt chuẩn BCNF hay không?

Khóa là EC,ADC Chuẩn


BCNF

31.03.2022 24
Quá trình chuẩn hóa

31.03.2022 25
Thuật toán xác định dạng chuẩn cao nhất

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.

31.03.2022 26
Ví dụ

Ví dụ 1 Cho lược đồ quan hệ R = { C, S, Z} và tập phụ thuộc hàm F

F = { CSZ, Z C}

Xác định dạng chuẩn cao nhất

Khóa là ZS, CS Chuẩn 3NF

31.03.2022 27
Phép tách các lược đồ quan hệ

31.03.2022 28
Đặt vấn đề

 Chuẩn hoá dữ liệu có thể được xem như một quá trình phân tích các lược
đồ quan hệ cho trước dựa trên các phụ thuộc hàm và các khoá chính của
chúng để đạt đến các tính chất mong muốn là cực tiểu sự dư thừa và cực
tiểu các phép cập nhật bất thường.
 Dạng chuẩn của một quan hệ liên quan đến điều kiện dạng chuẩn cao nhất
mà nó thoả mãn. Các dạng chuẩn khi được xem xét độc lập với các sự kiện
khác không đảm bảo một thiết kế CSDL tốt. Nói chung, việc xác minh
riêng biệt từng lược đồ quan hệ ở dạng chuẩn này hay dạng chuẩn kia là
chưa đủ. Tốt hơn là quá trình chuẩn hoá thông qua phép tách phải khẳng
định một vài tính chất hỗ trợ mà tất cả các lược đồ quan hệ phải có, chúng
gồm hai tính chất sau:
Tính chất nối không mất mát (hoặc nối không phụ thêm) đảm bảo rằng vấn đề
tạo ra các bộ giả không xuất hiện đối với các lược đồ quan hệ được tạo ra
sau khi tách.
Tính chất bảo toàn sự phụ thuộc đảm bảo rằng từng phụ thuộc hàm sẽ được
biểu hiện trong các quan hệ riêng rẽ nhận được sau khi tách.
31.03.2022 29
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

Chú ý
Không đòi hỏi các Ri phải là phân biệt

31.03.2022 30
Một số khái niệm cơ bản

Ví dụ
Cho lược đồ quan hệ: R (MaCTy, ĐC, MH, GIA)
và tập PTH: F = { MCTY  ĐC; MCTY,MH  GIA }
MaCTY ĐC MH GIA
1 Thanh Xuân 1 10000
1 Thanh Xuân 2 15000
2 Đống Đa 1 12000
2 Đống Đa 2 16000

MaCTY MH GIA
MaCTY ĐC
1 1 10000
1 Thanh Xuân
1 2 15000
2 Đống Đa
2 1 12000
31.03.2022 2 2 16000 31
Phép tách không mất mát thông tin

Định nghĩa
Cho lược đồ quan hệ R. Phép tách R thành (R1, R2, .., Rn) nếu khi
thực hiện phép toán kết nối tự nhiên các quan hệ thành phần R1, R2, .., Rn ta
vẫn nhận được kết quả của quan hệ ban đầu

31.03.2022 32
Phép tách và sự bảo toàn phụ thuộc hàm

Ví dụ Phép tách làm mất mát thông tin

MaSV MaMH Diem


1 A 5
2 A 8
3 B 7 MaSV MaMH MaMH Diem
4 C 9 1 A A 5
2 A A 8
3 B B 7
4 C C 9

31.03.2022 33
Kiểm tra cách tách không mất mát thông tin

Input
R = {A1, A2, .., An} – n thuộc tính tập phụ thuộc hàm 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 ?

31.03.2022 34
Kiểm tra cách tách không mất mát thông tin

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 bt (t bắt đầu từ 1)
Bước 2:
Lần lượt xét các pth (XY)  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,
31.03.2022
Ngược lại là phép tách-kết nối mất mát thông tin. 35
Ví dụ

Cho R(ABCDE)
Q1(AD), Q2(AB), Q3(BE), Q4(CDE), Q5(AE)
F = {AC, BC, AD,DEC, CEA}
Kiểm tra tính bảo toàn thông tin của phép phân rã R thành Q1, Q2, Q3, Q4, Q5

31.03.2022 36
Hướng dẫn

31.03.2022 37
Hướng dẫn

31.03.2022 38
Phép tách và sự bảo toàn PTH

1. Định nghĩa tập phụ thuộc hàm của các lược đồ con trong phép tách
2. Định nghĩa phép tách bảo toàn phụ thuộc hàm

31.03.2022 39
Tập PTH của các lược đồ con trong phép tách

Định nghĩa

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 XY đều
được chứa trong Ri.

Kí hiệu

={ X→Y  F+ với XY  Ri}

31.03.2022 40
Ví dụ

Cho lược đồ quan hệ R{A,B,C} và F={A→B, B→C, C→A }.

Phép tách D={R1,R2} tách R thành hai lược đồ R1{A,B} và R2{B,C}.

Xác định hình chiếu của F trên R1 và R2 ( hay tính các tập phụ thuộc hàm F1 , F2
của R1 và R2).

31.03.2022 41
Phép tách bảo toàn phụ thuộc hàm

Định nghĩa

Nói rằng 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

31.03.2022 42
Phép tách bảo toàn phụ thuộc hàm

Định nghĩa

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?

31.03.2022 43
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 vừa bảo toàn thông tin vừa bảo toàn
phụ thuộc hàm

31.03.2022 44
Thuật toán phân rã thành các 3NF

Các bước thực hiệ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 Ftt hãy tạo
một lược đồ trong D với các thuộc tính {X{A1}{A2}...{Ak}},
trong đó XA1, XA2,..., XAk 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
khoá của R.
31.03.2022 45
Ví dụ

Cho lược đồ quan hệ R{A, B, C, D} và tập phụ thuộc hàm F

F= {BCD, ABC, CD}

Yêu cầu

1. Tìm tất cả các khoá của lược đồ quan hệ R.

2. Xác định dạng chuẩn cao nhất của lược đồ quan hệ R.

3. Nếu R chưa đạt chuẩn ba (3NF), hãy tách R thành các lược đồ đạt
chuẩn 3NF bảo toàn phụ thuộc hàm và không tổn thất thông tin.

31.03.2022 46
Thuật toán phân rã thành các BCNF

Input Quan hệ R và tập phụ thuộc hàm F


Output Tách thành các lược đồ ở BCNF
Các bước thực hiện:
• Ban đầu phép tách S chỉ là R
• Chọn phụ thuộc hàm XA trong đó X không là siêu khóa của S và AX
 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.03.2022 47

You might also like