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

CHƯƠNG VIII:

CHUẨN HÓA CSDL Data normalization

!  Định nghĩa: Phép tách các 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 R = R1 ∪ R2 ∪ ... ∪ Rk và Không đòi hỏi các Ri phải là phân biệt Mục đích: Loại bỏ các dị thường dữ liệu

Cơ sở dữ liệu

3

Phép tách-Kết nối không mất mát thông tin

Ví dụ

MSKH

TÊNKH

TP

PVC

MSMH

TÊNMH

ĐG

SL

S1

An

HCM

01

P1

650

300

Táo

!  Giả sử R tách thành các lược đồ con R1, R2, ..,

S1

An

HCM

01

P2

500

200

Cam

S1

An

HCM

01

P3

450

400

Chanh

Rk và F là một tập pth.

S2

Hòa

HN

02

P1

650

100

Táo

S2

Hoà

HN

02

P3

450

300

Chanh

S3

Thanh

NT

03

P2

500

200

Cam

S4

Trang

NT

03

P2

500

210

Cam

!  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ì

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

r = ΠR1(r) * Π R2 (r) * ... * Π Rk(r)

MaCTY

GIA

MH

MaCTY

ĐC

1

1

10000

1

Thanh Xuân

1

2

15000

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

2

Đống Đa

2

1

12000

2

2

16000

Cơ sở dữ liệu

4

Cơ sở dữ liệu

5

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

Phụ thuộc hàm bắc cầu

!  Cho lược đồ quan hệ (U,F), X, Y⊆U.

!  Khi đó Y được gọi là phụ thuộc hàm đầy đủ vào tập X nếu như Y phụ thuộc hàm vào X nhưng không phụ thuộc hàm vào bất kỳ tập con thực sự nào của X, tức là:

!  Cho lược đồ quan hệ α = (U,F), X ⊆ U, A ∈ U, thuộc tính A được gọi là phụ thuộc hàm bắc cầu vào tập thuộc tính X nếu như ∃ Y ⊆ X để: -  X → Y, Y → A -  Nhưng Y /! X với A ∉ XY

-  X → Y

-  ∀Z ⊂ X thì Z /→ Y, mọi tập con thực sự của X đều không

!  VD: R(ABCDE), F = {AB ! CD, D ! E}, khoá: AB.

thể xác định hàm Y

-  Ta có: AB ! E là pth bắc cầu vì: ∃ D ⊂ R:

!  VD: F = {AB ! C, A ! C}.

-  Ta có pth AB ! C không phải là pth đầy đủ vì có pth A

"  AB ! D "  D /! AB

D ! E E ∉ ABD

! C

Cơ sở dữ liệu

6

Cơ sở dữ liệu

7

II. Kiểm tra phép tách-kết nối không mất thông tin

Thuật toán

Bước 1: Lập bảng với n+1 cột và k+1 hàng

!  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

- Cột thứ j# thuộc tính thứ j của lược đồ (Aj) - 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: thay đổi giá trị cho bảng !  Lần lượt xét các pth (X→Y) ∈ F !  Nếu tồn tại hai hàng mà tất cả các cột ứng với thuộc tính X có giá trị bằng

nhau thì phải bằng nhau ở thuộc tính Y

thông tin hay không ?

" 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.

Cơ sở dữ liệu

8

Cơ sở dữ liệu

9

Ví dụ 1:

S# Sname Add

Item

Price

!  Cho quan hệ:

!  Lập bảng: 3 hàng – 6 cột

CungCap( MaNCC, Sname, Add, Item, Price )

a2

a3

b14

b15

!  Tập phụ thuộc hàm: MaNCC→Sname,Add,

b23

a4

a5

!  Xét S# → Sname, Add:

Sname,Item→Price

-

S#, Sname, Add a1 S#, Item, Price a1 b22

a1

a2

a3

b14

b15

S# Sname Add Item Price

!  Kiểm tra phép tách thành hai sơ đồ con C o n g T y { M a N C C , S n a m e , A d d } v à MatHang{MaNCC, Item, Price} có mất mát thông tin?

-  có cả hai hàng bằng nhau tại thuộc tính S# làm bằng nhau các kí hiệu đối với thuộc tính Sname và Add "  "

a1

a4

a5

b22 a2

b23 a3

Cơ sở dữ liệu

10

Cơ sở dữ liệu

11

Ví dụ:

làm b22 thành a2 làm b23 thành a3 !  Bảng có một hàng bao gồm các ký hiệu a => phép tách không mất mát thông tin

Ví dụ

!  R={MSNV,TenNV,MaSoDA,TenDA, DiadiemDa, Sogio} !  F = { MSNV ! TenNV,

!  R={MSNV, TenNV, MaSoDA, TenDA, DiadiemDa, Sogio} !  F = { MSNV ! TenNV,

MasoDA ! {TenDA, DiadiemDA}, {MaSoDA, MSNV} ! Sogio }

MasoDA ! {TenDA, DiadiemDA}, {MaSoDA, MSNV} ! Sogio }

!  Kiểm tra phép tách thành -  R1 = {TenNV, DiadiemDA} -  R2 = { MSNV, MasoDA, Sogio, TenDA, DiadiemDA}

!  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?

!  Có mất mát thông tin?

Cơ sở dữ liệu

12

Cơ sở dữ liệu

13

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

!  Các loại dạng chuẩn gồm:

!  Chuẩn hóa là quá trình khảo sát danh sách các thuộc tính và áp dụng các quy tắc phân tích vào danh sách đó, biến đổi thành nhiều tập nhỏ hơn # Tách bảng thành nhiều bảng nhỏ hơn

!  Sao cho:

-  Dạng chuẩn 1 (1NF – First Normal Form) -  Dạng chuẩn 2 (2NF – Second Normal Form) -  Dạng chuẩn 3 (3NF) -  Dạng chuẩn Boye Code (BCNF)

BCNF

-  Tối thiểu việc lặp lại -  Tránh dị thường thông tin -  Xác định và giải quyết được sự không rõ ràng,

3NF

nhập nhằng trong suy diễn

2NF

1NF

Cơ sở dữ liệu

21

Cơ sở dữ liệu

22

1. Dạng chuẩn 1NF

MSKH

TenKH

TP

PVC

MSMH

TenMH

ĐG

SL

S1

An

HCM

01

P1 P2

Táo Cam

650 500

300 200

P3

Chanh

450

400

S2

Hòa

HN

02

P1 P3

Táo Chanh

650 450

100 300

P2

Cam

500

200

S3

Thanh

NT

03

!  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ả 3 điều kiện sau: -  là kiểu nguyên tố, -  giá trị của các thuộc tính trên các bộ là đơn trị, -  không có một thuộc tính nào có giá trị tính toán từ

P2

Cam

500

210

S4

Trang

NT

03

1 số thuộc tính khác

!  Chú ý: khi xét dạng chuẩn nếu không nói gì thêm thì dạng chuẩn đang xét ít nhất là đạt dạng chuẩn một

!  Biểu diễn sơ đồ dạng 1NF:

1

R(A1,A2,A3, A4, A5)

3

2 4

Cơ sở dữ liệu

23

Cơ sở dữ liệu

24

Các bất thường của quan hệ ở 1NF

! Lược đồ ở dạng 1NF gặp khó khăn thêm-xóa-sửa ! Nguyên nhân: Tồn tại thuộc tính không khóa phụ

thuộc hàm riêng phần vào khóa

! Giải quyết: đưa về dạng chuẩn cao hơn 2NF

MSKH TÊNKH TP

PVC

MSMH

TÊNMH ĐG SL

S1

An

HCM

01

P1

Táo

650

300

! Kết luận: Để kiểm tra một lược đồ có là dạng 1NF không thực hiện kiểm tra nếu: -  Không có thuộc tính đa trị -  Không có thuộc tính phức hợp

S1 S1 S2 S2 S3 S4

An An Hòa Hoà Thanh Trang

HCM HCM HN HN NT NT

01 01 02 02 03 03

P2 P3 P1 P3 P2 P2

Cam Chanh Táo Chanh Cam Cam

500 450 650 450 500 500

200 400 100 300 200 210

Cơ sở dữ liệu

25

Chương 4. Cơ sở dữ liệu

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

2. 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

!  LĐQH R được gọi là đạt dạng chuẩn 2 nếu R đã ở dạng chuẩn 1 và tất cả các thuộc tính không khóa (thuộc tính không tham gia vào khóa) đều phụ thuộc hàm đầy đủ vào khóa.

con thực sự S của K -  Chú ý: nếu khóa có một thuộc tính đơn thì không

cần phải kiểm tra và ở 2NF

!  Mục đích:

!  Bước 3:

-  nếu có bao đóng S+ chứa thuộc tính không khóa thì

-  Giản ước sự dư thừa dữ liệu -  Tránh các dị thường cập nhật gây nên do sự dư thừa

dữ liệu này

quan hệ không đạt chuẩn 2

1

!  Biểu diễn sơ đồ dạng 2NF:

-  ngược lại thì quan hệ đạt chuẩn 2 (không tồn tại S mà

R(A1,A2,A3, A4, A5)

S+ chứa thuộc tính không khóa)

4

3

Cơ sở dữ liệu

30

Cơ sở dữ liệu

33

Ví dụ: kiểm tra dạng 2NF của quan hệ

Thuật toán đưa về dạng 2NF

!  1- QLSV (MaSV, Ten, NS, DC, TenLop, KhoaHoc, MaMH, TenMH,

Diem)

F = { f1: MaSV ! Ten, NS, DC, TenLop

!  Nhóm các thuộc tính phụ thuộc vào một phần của khoá và thuộc tính một phần tách thành quan hệ mới, lấy phần đó làm khoá chính cho quan hệ.

!  Giữ các thuộc tính phụ thuộc hoàn toàn vào khoá

và giữ lại khoá của quan hệ đó

f2: TenLop ! KhoaHoc; f3: MaMH ! TenMH; f4 : TenMH ! MaMH; f5: MaSV, MaMH ! Diem }

R(A1,A2,A3, A4, A5)

!  2- KQHT (MaSV, MaMH, TenMH, Diem) FKQHT = { f1: MaMH ! TenMH;

f2 : TenMH ! MaMH;

f3: MaSV, MaMH ! Diem }

R1(A2, A4)

R(A1,A2,A3, A5)

!  3- SV (MaSV, Ten, NS, DC, TenLop, KhoaHoc) FSV = { f1:MaSV ! Ten, NS, DC, TenLop;

f2: TenLop ! KhoaHoc}

Cơ sở dữ liệu

34

Cơ sở dữ liệu

38

!  Ví dụ 3:

-  Cho R2 (Số hoá đơn, Số sản phẩm, Tên sản

phẩm, Lượng yêu cầu)

Ví dụ:

-  F = { Số sản phẩm ! Tên sản phẩm } -  Hỏi quan hệ có ở dạng 2NF không? Nếu chưa

NV( MaNV, MaPhong,TenNV, Gioitinh, Diachi,TenPhong )

tách thành lược đồ ở dạng 2NF

Kết quả là gì?

Cơ sở dữ liệu

39

Cơ sở dữ liệu

40

Các bất thường của quan hệ ở 2NF

3. Dạng chuẩn 3NF

!  Lược đồ R ở 3NF nếu:

-  Ở dạng 2NF -  Mọi thuộc tính không khóa đều không phụ thuộc bắc

!  Khi tiến hành Thêm-Sửa-Xóa có thể không thực hiện được hoặc tạo ra dị thường dữ liệu. ! Nguyên nhân: Tồn tại thuộc tính không

cầu vào bất kỳ khóa chính của quan hệ

!  Xét mọi pth X ! A thì

khóa phụ thuộc bắc cầu vào khóa

! Giải quyết: đưa về chuẩn cao hơn 3NF

-  Hoặc X là một siêu khóa của R -  Hoặc A là một thuộc tính khóa của R

!  Sơ đồ:

1

R(A1,A2,A3, A4, A5)

4

Cơ sở dữ liệu

43

Cơ sở dữ liệu

44

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

!  Ví dụ 1: Xét quan hệ CNHAN nhu sau:

!  Output: kết luận Q đạt chuẩn 3 hay không đạt chuẩn 3 !  Thuật toán:

-  CNHAN(MACN, LOAINGHE, HESOTHUONG) -  các pth:

-  Bước 1: tìm tất cả khóa của Q -  Bước 2: từ F tạo tập phụ thuộc hàm tương đương

F(cid:1) có vế phải một thuộc tính

-  Bước 3: Kiểm tra

"  MACN → LOAINGHE "  MACN → HESOTHUONG "  LOAINGHE → HESOTHUONG "  Hỏi lược đồ có đạt chuẩn 3 không?

"  Nếu mọi phụ thuộc hàm X!A ∈ F(cid:1) với A∉X đều có X là khóa hoặc A là thuộc tính khóa thì Q đạt chuẩn 3

"  ngược lại Q không đạt chuẩn 3 (∃ X → A mà X

không là khóa và A không là thuộc tính khóa)

Cơ sở dữ liệu

47

Cơ sở dữ liệu

48

Đưa về dạng 3NF

! Ví dụ 2: Cho lược đồ quan hệ

!  Tạo quan hệ mới gồm các thuộc tính phụ thuộc bắc cầu vào thuộc tính khóa, lấy thuộc tính bắc cầu làm khoá

!  Giữ lại các thuộc tính phụ thuộc trực tiếp vào

Q(A,B,C,D) và F = { AB !C, D !B, C !ABD}. Hỏi Q có đạt chuẩn 3 không?

khoá

!  Thuộc tính bắc cầu nằm ở hai quan hệ

R(A1,A2, A3, A4, A5)

R1(A2, A4)

R(A1, A2, A3, A5)

Cơ sở dữ liệu

49

Cơ sở dữ liệu

!  Ví dụ 4: Xét lược đồ quan hệ !  NHÂNVIÊN_ĐƠNVỊ( HọtênNV, MãsốNV, Ngàysinh,

Địachỉ, MãsốĐV, TênĐV, MãsốNQL)

Ví dụ:

!  Với các phụ thuộc hàm:

NV(MaNV,MaPhong,TenNV,Gioitinh,Diachi,TenPhong)

-  MãsốNV→HọtênNV, Ngàysinh,Địachỉ,MãsốĐV,TênĐV, MãsốNQL -  MãsốĐV→ TênĐV, Mã sốNQL

Kết quả 3NF là gì?

!  Lược đồ có ở dạng 3NF không? Tách về 3NF

Cơ sở dữ liệu

51

Cơ sở dữ liệu

52

Ví dụ: Xây dựng chuẩn 3NF

Kết quả ở 2NF

PVC

MSKH

TÊNKH

TP

MSKH S1

MSMH P1

SL 300

S1

P2

200

S1

An

HCM

01

S1

P3

400

S2

Hoà

HN

02

S2

P1

100

S3

Thanh

NT

03

S2

P3

300

!  Ví dụ:Tập pth F được định nghĩa trên R như sau: !  F= { 1. MSKH ! TÊNKH,TP 2. MSMH ! TÊNMH,ĐG 3. MSKH, MSMH ! SL 4. TP ! PVC} !  Khoá: MSKH, MSMH $ đưa về 3NF

S3

P2

200

S4

Trang

NT

03

S4

P2

210

MSKH TÊNKH TP

PVC

MSMH

TÊNMH ĐG SL

FĐH = {MSKH, MSMH ! SL} FR1 = {MSKH ! TÊNKH, TP TP ! PVC}

MSMH TÊNMH

ĐG

P1

Táo

650

S1 S1 S1 S2

An An An Hòa

HCM HCM HCM HN

01 01 01 02

P1 P2 P3 P1

Táo Cam Chanh Táo

650 500 450 650

300 200 400 100

P2

Cam

500

P3

Chanh

450

S2 S3 S4

Hoà Thanh Trang

HN NT NT

02 03 03

P3 P2 P2

Chanh Cam Cam

450 500 500

300 200 210

55

Cơ sở dữ liệu

Cơ sở dữ liệu

56

FMH = {MSMH! TÊNMH, ĐG}

Kết quả ở 3NF

4. Dạng chuẩn BCNF (Boyce Codd)

MSKH

TÊNKH

TP

TP

PVC

S1

An

HCM

HCM

01

HN

02

S2

Hoà

HN

NT

03

S3

Bình

NT

!  Định nghĩa: Lược đồ quan hệ R ở dạng chuẩn BCNF nếu với mọi pth X→A của R, A∉X thì X là một siêu khóa nhỏ nhất ! các thuộc tính đều phụ thuộc trực tiếp vào khóa

S4

NT

Trang FKH = {MSKH ! TÊNKH, TP}

!  Sơ đồ:

FVC = {TP ! PVC}

MSKH

MSMH

SL

S1

P1

300

S1

P2

200

MSMH TÊNMH

ĐG

1

S1

P3

400

P1

Táo

650

S2

P1

100

R(A1,A2,A3, A4, A5)

P2

Cam

500

S2

P3

300

S3

P3

Chanh

450

P2

200

S4

P2

210

Cơ sở dữ liệu

57

Cơ sở dữ liệu

58

FMH = {MSMH! TÊNMH, ĐG} FĐH = {MSKH, MSMH ! SL}

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

! Ví dụ 1: Cho R = { C, S, Z}, Phụ thuộc

!  Bước 1: Tìm tất cả các khóa của quan hệ Q !  Bước 2: Từ tập pth F tạo tập pth tương đương với F

hàm: CS→Z, Z →C

gọi là F(cid:1) có vế phải một thuộc tính

!  Bước 3:

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

-  nếu mọi pth X→A ∈F(cid:1) đều có X là khóa thì Q đạt chuẩn

BCNF

-  ngược lại Q không đạt chuẩn BCNF (∃ X → A mà X không

là khóa)

# mọi pth đều có vế trái là khóa thì đạt chuẩn BCNF

ngược lại thì không

Cơ sở dữ liệu

60

Cơ sở dữ liệu

61

Đưa về dạng BCNF

!  Loại bỏ các thuộc tính khóa phụ thuộc hàm vào thuộc tính không khóa ra khỏi quan hệ và tạo thành một quan hệ riêng có khoá chính là thuộc tính không khóa gây ra phụ thuộc.

Ví dụ:

Hoc(MaSV, MaMon, Diem, MaGV)

R(A1, A2, A3, A4, A5)

R1(A4, A2)

Kết quả là gì?

R(A1, A4, A3, A5)

Cơ sở dữ liệu

63

Cơ sở dữ liệu

64

* Quá trình chuẩn hóa

1

R(A1,A2,A3, A4, A5)

1NF

3

2 4

1

R(A1,A2,A3, A4, A5)

2NF

4

3

1

3NF

R(A1,A2,A3, A4, A5)

4

1

BCNF

R(A1,A2,A3, A4, A5)

Cơ sở dữ liệu

66

1. Thuật toán phân rã thành các BCNF

IV. Chuẩn hóa quan hệ

!  Input: Quan hệ R và tập PTH F !  Output: tách thành các lược đồ ở BCNF !  Các bước:

!  Chuẩn hóa quan hệ là việc phân rã một lược đồ quan hệ thành các lược đồ con ở dạng chuẩn 3 hoặc ở dạng chuẩn BCNF sao cho vẫn bảo toàn phụ thuộc và không mất mát dữ liệu

-  Ban đầu phép tách S chỉ là R -  Chọn pth X!A trong đó X không chứa khóa của S và

A∉X ! PTH vi phạm BCNF

-  Thay thế S bởi S1 và S2. Trong đó:

"  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

Cơ sở dữ liệu

67

Cơ sở dữ liệu

68

Ví dụ: Tách lược đồ về dạng BCNF

!  Cho lược đồ R(CTHRSG), trong đó:

-  C – Course; T – Teacher; H – Hour: Giờ học -  R – Room; S – Student; G – Group

!  PTH F = { C!T; HR!C; HT!R; CS!G; HS!R } !  Khóa: HS

Cơ sở dữ liệu

!  Xét CS!G

!  Xét C!T

-  Tách thành R1(CSG) và R2(CTHRS)

-  Tách thành R21(CT) và R22(CHRS)

C(cid:2)T: Mỗi khoá học (course) có một thầy (teacher) duy nhất. HR(cid:2)C: Tại một thời điểm (Hour) tại phòng học (room) chỉ có một khoá học duy nhất. HT(cid:2)R: Tại một thời điểm và một giáo viên chỉ ở một phòng duy nhất CS(cid:2)G: Một sinh viên học một course thì chỉ ở một lớp duy nhất. HS(cid:2)R: Một SV, ở một thời điểm nhất định chỉ ở trong một phòng duy nhất. C – Cource T – Teacher H – Hour R – Room S – Student G – Group CSDL Tâm 7h 21 N.V Hà CSDL.1 CSDL Tâm 7h 21 T.V Huy CSDL.1 CSDL Tâm 7h 21 Đ.T Lan CSDL.1 CTDL Xuân 9h 22 N.V Hà CTDL.1 CTDL Xuân 9h 22 Đ.T Lan CTDL.1 CTDL Xuân 9h 22 L.T Linh CTDL.1 TRR Linh 7h 23 T.V An TRR.1 TRR Linh 7h 23 Đ.V Hưởng TRR.2 74

R21(CT)

R1(CSG)

R22(CHRS)

R1(CSG) R2(CTHRS) S – Student

S – Student

G – Group

S – Student

C – Cource

T – Teacher

C – Cource

C – Cource

H – Hour

R – Room

76

Cơ sở dữ liệu

75

Cơ sở dữ liệu

C – Cource S – Student G – Group C – Cource T – Teacher H – Hour R – Room CSDL Tâm CSDL N.V Hà CSDL.1 CSDL 7h 21 N.V Hà CSDL N.V Hà CSDL.1 CSDL Tâm 7h 21 N.V Hà CTDL Xuân CSDL T.V Huy CSDL.1 CSDL 7h 21 T.V Huy CSDL T.V Huy CSDL.1 CSDL Tâm 7h 21 T.V Huy TRR Linh CSDL Đ.T Lan CSDL.1 CSDL 7h 21 Đ.T Lan CSDL Đ.T Lan CSDL.1 CSDL Tâm 7h 21 Đ.T Lan CTDL N.V Hà CTDL.1 CTDL 9h 22 N.V Hà CTDL N.V Hà CTDL.1 CTDL Xuân 9h 22 N.V Hà CTDL Đ.T Lan CTDL.1 CTDL 9h 22 Đ.T Lan CTDL Đ.T Lan CTDL.1 CTDL Xuân 9h 22 Đ.T Lan CTDL L.T Linh CTDL.1 CTDL 9h 22 L.T Linh CTDL L.T Linh CTDL.1 CTDL Xuân 9h 22 L.T Linh TRR T.V An TRR.2 TRR 7h 23 T.V An TRR T.V An TRR.1 TRR Linh 7h 23 T.V An TRR Đ.V Hưởng TRR.2 TRR 7h 23 Đ.V Hưởng TRR Đ.V Hưởng TRR.2 TRR Linh 7h 23 Đ.V Hưởng

R221(CHR)

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

C – Cource

H – Hour

R – Room

!  Xét CH!R

-  Tách thành R221(CHR) và R222(CHS)

!  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:

R222(CHS)

R21(CT)

R1(CSG)

-  Loại bỏ các thuộc tính R nếu thuộc tính đó không liên quan

CSDL 7h 21 CTDL 9h 22 TRR 7h 23

S – Student

S – Student

G – Group

đến PTH của F (không có mặt ở cả hai vế của PTH)

C – Cource

H – Hour

C – Cource

T – Teacher

C – Cource

-  Nếu có một PTH của F liên quan đến tất cả các thuộc tính

của R thì kết quả chính là R (không tách nữa)

-  Xét các PTH X!A vi phạm 3NF (phụ thuộc bắc cầu vào

khóa) và tách thành một lược đồ XA "  Nếu tồn tại các PTH X!A1, X!A2, …, X!An thì gộp thành

XA1A2..An

Cơ sở dữ liệu

77

Cơ sở dữ liệu

79

7h CSDL N.V Hà CSDL Tâm N.V Hà CSDL.1 CSDL 7h CSDL T.V Huy CTDL Xuân T.V Huy CSDL.1 CSDL 7h CSDL Đ.T Lan TRR Linh Đ.T Lan CSDL.1 CSDL 9h CTDL N.V Hà N.V Hà CTDL.1 CTDL 9h CTDL Đ.T Lan Đ.T Lan CTDL.1 CTDL 9h CTDL L.T Linh L.T Linh CTDL.1 CTDL 7h TRR T.V An T.V An TRR.2 TRR TRR 7h Đ.V Hưởng Đ.V Hưởng TRR.2 TRR

Ví dụ: Tách về 3NF !  Cho lược đồ R(CTHRSG), trong đó:

% Xét C!T vi phạm 3NF (phụ thuộc bắc cầu vào khoá),

-  C – Course; T – Teacher; H – Hour: Giờ học -  R – Room; S – Student; G – Group

% Tách R thành R1(C,T) và R2(C,H,R,S,G).

!  PTH F={ C!T; HR!C; HT!R; CS!G; HS!R} !  Khóa: CHS

Cơ sở dữ liệu

Cơ sở dữ liệu

81

R2 R1 S – Student R C – Cource H – Hour R – Room G – Group C – Cource T – Teacher C – Cource T – Teacher H – Hour R – Room S – Student G – Group CSDL 7h 21 N.V Hà CSDL.1 CSDL Tâm CSDL Tâm 7h 21 N.V Hà CSDL.1 CSDL 7h 21 T.V Huy CSDL.1 CTDL Xuân CSDL Tâm 7h 21 T.V Huy CSDL.1 CSDL 7h 21 Đ.T Lan CSDL.1 TRR Linh CSDL Tâm 7h 21 Đ.T Lan CSDL.1 CTDL 9h 22 N.V Hà CTDL.1 CTDL Xuân 9h 22 N.V Hà CTDL.1 CTDL 9h 22 Đ.T Lan CTDL.1 CTDL Xuân 9h 22 Đ.T Lan CTDL.1 CTDL 9h 22 L.T Linh CTDL.1 CTDL Xuân 9h 22 L.T Linh CTDL.1 TRR 7h 23 T.V An TRR.1 TRR Linh 7h 23 T.V An TRR.1 TRR 7h 23 Đ.V Hưởng TRR.1 TRR Linh 7h 23 Đ.V Hưởng TRR.1 80

R1

% Xét CS!G vi phạm 3NF(phụ thuộc bộ phận vào khoá),

%  Xét HR!C vi phạm 3NF, tách R22 thành

R221(H,R,C) và R222(H,S,R)

% tách R2 thành R21(C,S,G) và R22(C,H,R,S).

C – Cource T – Teacher R1 CSDL Tâm CTDL Xuân C – Cource T – Teacher TRR Linh R222 R21 CSDL Tâm R21 R22 S – Student S – Student CTDL Xuân H – Hour R – Room G – Group C – Cource S – Student S – Student TRR Linh G – Group C – Cource H – Hour R – Room C – Cource 7h 21 N.V Hà N.V Hà CSDL.1 CSDL CSDL N.V Hà CSDL.1 CSDL 21 7h N.V Hà 7h 21 T.V Huy T.V Huy CSDL.1 CSDL

R221

CSDL T.V Huy CSDL.1 CSDL 21 7h T.V Huy 7h 21 Đ.T Lan Đ.T Lan CSDL.1 CSDL

C – Cource

H – Hour

R – Room

Cơ sở dữ liệu

82

Cơ sở dữ liệu

83

CSDL Đ.T Lan CSDL.1 CSDL 21 7h Đ.T Lan 9h 22 N.V Hà N.V Hà CTDL.1 CTDL CSDL 7h 21 CTDL N.V Hà CTDL.1 CTDL 22 9h N.V Hà 9h 22 Đ.T Lan Đ.T Lan CTDL.1 CTDL CTDL 9h 22 CTDL Đ.T Lan CTDL.1 CTDL 22 9h Đ.T Lan 9h 22 L.T Linh L.T Linh CTDL.1 CTDL TRR 7h 23 CTDL L.T Linh CTDL.1 CTDL 22 9h L.T Linh 7h 23 T.V An T.V An TRR.1 TRR TRR T.V An TRR.1 TRR 23 7h T.V An 7h 23 Đ.V Hưởng Đ.V Hưởng TRR.1 TRR TRR Đ.V Hưởng TRR.1 TRR 23 7h Đ.V Hưởng

The End!

Cơ sở dữ liệu

85

90

Cơ sở dữ liệu