Tải bản đầy đủ (.pdf) (8 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (72.2 KB, 8 trang )

H-íng dÉn «n tËp CSDL quan hÖ
Tµi liÖu tham kh¶o Trang 31
DẠNG 9: CHUẨN HÓA LƯỢC ĐỒ QUAN HỆ
Bài toán: Cho quan hệ R(U, F). Hãy chuẩn hóa quan hệ về 3 NF (hoặc BCNF).
Các kiến thức liện quan:
Thuộc tính khóa:
A là thuộc tính khóa của R nếu nó nằm trong 1 khóa tối thiểu
của R. Ngược lại A gọi là thuộc tính không khóa.
Thuộc tính suy diễn:
Thuộc tính A được gọi là suy diễn nếu giá trị của nó được
tính toán ra từ giá trị của các thuộc tính khác. Ví dụ: ĐơnGiá, SốLượng, ThànhTiền thì
ThànhTiền là thuộc tính suy diễn. NgàySinh, Tuổi thì Tuổi là suy diễn…
Thuộc tính lặp: với 2 bản ghi bất kỳ trong quan hệ, nếu hai bản ghi đó trùng
nhau về giá trị trên trường khóa mà có thể có giá trị khác nhau trên trường A thì A là
thuộc tính lặp.
Ví dụ: xét quan hệ SinhVien(MaSV, TenSV, GioiTinh, MaMon, TenMon,
Diem) Với MaSV là khóa. Để xác định thuộ tính lặp ta làm như sau:
Đánh chỉ số cho các thuộc tính: Khóa có chỉ số 1.
TênSV có chỉ số 1 do một MaSV chỉ xác định 1 tên SV.
GioiTinh có chỉ số 1 do một MaSV chỉ xác định 1 giới tính.
MaMon có chỉ số ∞ do một MaSV có thể có nhiều MaMon (do 1 SV học nhiều
môn)… TenMon, Diem có chỉ số ∞ do một MaSV có thể có nhiều TenMon va Diem.
Vậy ta thu được:
1 1 1 ∞ ∞ ∞
SinhVien(MaSV, TenSV, GioiTinh, MaMon, TenMon, Diem)
Các thuộc tính có chỉ số

là thuộc tính lặp !
Phụ thuộc bộ phận, phụ thuộc toàn thể: Nếu AB → C ta nói C phụ thuộc toàn
thể vào AB, nhưng nếu trong chỉ có B → C thì C chỉ phụ thuộc toàn thể vào B và phụ
thuộc bộ phận vào AB.


Phụ thuộc bắc cầu:
Nếu A → B và B → C ta nói C phụ thuộc bắc cầu vào A và
B là thuộc tính trung gian tạo sự bắc cầu.
Dạng chuẩn 1NF: Quan hệ R ở dạng chuẩn 1NF thì nó không có thuộc tính lặp
và thuộc tính suy diễn.
Dạng chuẩn 2NF: Quan hệ R ở 2NF nếu nó đã ở 1NF và không tồn tại thuộc
tính không khóa phụ thuộc bộ phận vào khóa. Nói cách khác: mọi thuộc tính không
khóa đều phụ thuộc đầy đủ vào khóa.
Dạng chuẩn 3NF: Quan hệ R ở 3NF nếu nó ở 2 NF và không tồn tại thuộc tính
không khóa phụ thuộc bắc cầu vào khóa.
Dạng chuẩn BCNF:
Quan hệ R ở BCNF nếu mọi phụ thuộc hàm của R đều có
dạng Khóa

Không khóa.
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp CSDL quan hÖ
Tµi liÖu tham kh¶o Trang 32
Cách chuẩn hóa:
F Chuẩn hóa về 1NF:
Nếu R không có thuộc tính suy diễn và lặp thì mặc nhiên nó đã ở 1 NF. Ngược lại
ta làm theo 2 bước sau:
B1: Loại bỏ thuộc tính suy diễn trong R (nếu có)
B2: Tách, nhóm các thuộc tính lặp (nếu có). Tách R thành:
R
1
(Khóa + Các thuộc tính không lặp). Khóa của R
1
là khóa của R.

R
2
(Khóa + Các thuộc tính lặp). Khóa của R
2
là khóa của R và 1 thuộc tính lặp
nào đó. R
1
và R
2
đã ở 1NF.
VD: Bảng SinhVien(MaSV, TenSV, GioiTinh, MaMon, TenMon, Diem) được
tách thành:
R
1
(MaSV, TenSV, GioiTinh). Khóa là MaSV
R
2
(MaSV, MaMon, TenMon, Diem). Khóa là MaSV, MaMon.
F Chuẩn hóa về 2NF:
B1. Tìm phủ tối thiểu của F (nếu F chưa tối thiểu).
B2. Tìm khóa tối thiểu của R.
B3. Vẽ đồ thị phụ thuộc hàm
B4. Nhìn vào đồ thị phụ thuộc hàm, nếu tồn tại thuộc tính không khóa, phụ thuộc
bộ phận vào khóa thì tách R thành:
R
1
(Khóa tạo sự phụ thuộc bộ phận + thuộc tính không khóa phụ thuộc bộ
phận vào khóa). Khóa của R
1
là "Khóa tạo sự phụ thuộc bộ phận".

R
2
(Khóa của R + thuộc tính không khóa không phụ thuộc bộ phận vào khóa).
Khóa của R
2
là khóa của R.
R
1
và R
2
đã ở 2NF.
F Chuẩn hóa về 3NF:
B1: Vẽ đồ thị phụ thuộc hàm.
B2: Nhìn vào đồ thị phụ thuộc hàm, nếu có thuộc tính không khóa phụ thuộc bắc
cầu vào khóa thì tách R thành:
R
1
(Thuộc tính trung gian tạo sự bắc cầu + thuộc tính không khóa phụ thuộc
bắc cầu vào khóa). Khóa của R
1
là "Thuộc tính trung gian tạo sự bắc cầu ".
R
2
(Khóa của R + thuộc tính không khóa không phụ thuộc bắc cầu vào khóa).
Khóa của R
2
là khóa của R.
R
1
và R

2
đã ở 3NF.
F Chuẩn hóa về BCNF:
B1: Vẽ đồ thị phụ thuộc hàm.
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp CSDL quan hÖ
Tµi liÖu tham kh¶o Trang 33
B2: Nhìn vào đồ thị phụ thuộc hàm, nếu có phụ thuộc hàm X → Y mà không có
dạng Khóa → Không khóa thì tách R thành:
R
1
(XY). Khóa của R
1
là X ; tập phụ thuộc hàm F
1
={X → Y}
R
2
(X+Khóa của R + các thuộc tính không khóa còn lại). Khóa của R
2
là khóa
của R+ {X} .
R
1
và R
2
đã ở BCNF.
Ví dụ:


Cho quan hệ R(U, F): U={A B C D E G H} và tập
F= {AB→C, B → EG, C→H, E → G, BC→ H}
Chuẩn hóa R về 3NF.
Nhận xét: Với quan hệ R cho như trên thì không thể kết luận là R đã ở 1NF chưa.
Do vậy, ta mặc nhiên công nhận R đã ở 1NF.
Thông thường các quan hệ khi chuẩn hóa về 3NF thì đã ở BCNF rồi. Do vậy thao
tác chuẩn hóa về BCNF ít khi phải làm. (Sinh viên tự tham khảo)
Bài giải:
B1: Loại bỏ phụ thuộc hàm dư thừa trong F, vậy:
F= {AB→CD, B → E, C→H, E → G}
B2: Tìm khóa tối thiểu:
Đặt K
0
= {ABCDEGH}
K
1
= {ABCDEG} vì C → H và C ∈ K
0

K
2
= {ABCDE} vì E → G và E ∈ K
1

K
3
= {ABCD} vì B → E và B ∈ K
1

K

4
= {AB} vì AB → CD và AB ∈ K
2

K
5
≡ K
4

Vậy khóa của R là {AB}.
Thuộc tính khóa: A, B.
Thuộc tính không khóa: C, D, E, G.
B3: Vẽ đồ thị phụ thuộc hàm: (vẽ trên tập F đã tối thiểu)


A B C D E G H

Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp CSDL quan hÖ
Tµi liÖu tham kh¶o Trang 34
B4: R chưa chuẩn 2 NF do tồn tại E và G là thuộc tính không khóa phụ thuộc bộ
phận vào khóa. (vì B → E và E → G nên ở đây mặc dù không còn B → G ta vẫn có thể
xem như có B → G). Tách R thành:
R
1
(B E G). Khóa B ; F
1
= {B → E, E → G}
R

2
(A B C D H). Khóa AB ; F
2
= {AB → CD, C → H}
R
1
và R
2
đã ở 2NF.
B5: Chuẩn hóa về 3 NF.
Xét R
1:
có đồ thị phụ thuộc hàm:

B E G

R
1
chưa ở 3NF do tồn tại G là thuộc tính không khóa lại phụ thuộc bắc cầu vào
khóa. Tách R
1
thành:
R
11
(E G). Khóa E ; F
11
={E → G}.
R
12
(B E). Khóa B ; F

12
={B → E}
R
11
và R
12
đã ở 3NF.
Xét R
2:
đồ thị phụ thuộc hàm:

A B C D H


R
2
chưa ở 3NF do tồn tại H là thuộc tính không khóa lại phụ thuộc bắc cầu vào
khóa. Tách R
2
thành:
R
21
(C H). Khóa C ; F
21
={C → H}
R
22
(A B C D). Khóa AB ; F
22
={AB → CD}

R
21
và R
22
đã ở 3NF.
Vậy từ quan hệ R, ta tách thành 4 quan hệ:
R
11
(E G). Khóa E ; F
11
={E → G}.
R
12
(B E). Khóa B ; F
12
={B → E}
R
21
(C H). Khóa C ; F
21
={C → H}
R
22
(A B C D). Khóa AB ; F
22
={AB → CD}
Các quan hệ này đã ở 3NF.
Chú ý: Khi tách quan hệ và tập phụ thuộc hàm, nếu trong tập thụ thuộc hàm kết
quả có chứa thuộc tính mà nó không có mặt trong tập thuộc tính của quan hệ mới thì ta
gọi thuộc tính đó là thuộc tính "lạ" trong quan hệ. Khi đó cần biến đổi tập phụ thuộc

Generated by Foxit PDF Creator © Foxit Software
For evaluation only.
H-íng dÉn «n tËp CSDL quan hÖ
Tµi liÖu tham kh¶o Trang 35
hàm để loại bỏ thuộc tính lạ đó ra khỏi tập phụ thuộc hàm. Thao tác này gọi là: chiếu
thuộc tính "lạ" lên quan hệ.
Một phương pháp chuẩn hóa nhanh khác cũng có thể được sử dụng. Tuy nhiên
phương pháp nhanh này không phải bao giờ cũng cho ta phép tách (cách chuẩn hóa) ít
quan hệ nhất.
Phương pháp chuẩn hóa nhanh như sau :
B1. Loại bỏ tất cả các phụ thuộc hàm dư thừa và thuộc tính vế trái dư thừa trong F.
B2. Tách quan hệ R theo các phụ thuộc hàm : Nếu F có bao nhiêu phụ thuộc hàm
thì tách R thành bấy nhiêu quan hệ con.
Với quan hệ R trong ví dụ trên, ta xét tập F :
F= {AB→C, B → EG, C→H, E → G, BC→ H}
Loại bỏ BC → H và thuộc tính G trong B → EG ta còn :
F= {AB→C, B → E, C→H, E → G}
Và tách R thành :
R
1
(ABC) Khóa AB, F
1
= {AB → C}
R
2
(BE) Khóa B, F
2
= {B → E}
R
3

(CH) Khóa C, F
3
= {C → H}
R
4
(EG) Khóa E F
4
= {E → G}
Tuy nhiên nếu làm theo cách này có 2 vấn đề cần chú ý :
[1]. Số quan hệ thu được sau khi chuẩn hóa đôi khi không phải là ít nhất.
[2]. Sau khi tách cần kiểm tra để chắc chắn mọi quan hệ con đều có thể kết nối tự
nhiên với nhau. Nếu có một quan hệ con nào đó không kết nối được với các quan hệ còn
lại thì việc tách như vậy sẽ dẫn tới mất mát thông tin (cách chuẩn hóa thứ nhất ở trên
không có hiện tượng này).
Khi phát hiện ra vấn đề đó, ta chỉ việc thêm một quan hệ mới mà quan hệ này chỉ
chứa các thuộc tính khóa của R. Quan hệ mới này không có tập phụ thuộc hàm và nó
đóng vai trò làm cầu nối quan hệ bị tách rời với các quan hệ còn lại.
Ví dụ : Cho R(U, F) : U = {A, B, C, D, E, G, H} và
F = {AB → C, B → DE, G → H}
Dễ thấy khóa của quan hệ là {ABG}
Khi chuẩn hóa R về 3NF, ta tách R thành :
R
1
(ABC) Khóa AB, F
1
= {AB → C}
R
2
(BDE) Khóa B, F
2

= {B → DE}
R
3
(GH) Khóa G, F
3
= {G → H}
Quan hệ R
3
không thể kết nối tới 2 quan hệ R
1
và R
2
do nó không có thuộc tính
chung với R
1
và R
2
. Do vậy, ta cần bổ sung quan hệ :
R
4
(ABG) Khóa ABG, F
4
= ∅
Generated by Foxit PDF Creator © Foxit Software
For evaluation only.

×