4 Chuẩn hóa quan hệ

Một phần của tài liệu Bài giảng cơ sở dữ liệu it06 Đại học mở hà nội (Trang 119 - 124)

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

4.1 Thut toán phân rã thành các BCNF không tn tht

Input: Quan hệ R và tập PTH F

Output: tách thành các lược đồ ở BCNF bảo toàn thông tin

Phương pháp: phương pháp chính là tách lược đồ thành hai lược đồ con bằng cách

lựa chọn một phụ thuộc hàm nào đó trong tập phụ thuộc hàm ban đầu.

Các bước thực hiện:

Trung tâm Đào tạo E-learning Cơ hi hc tp cho mi người      

Cơ sở dữ liệu - Bài 6 Trang 29

- Ban đầu giả sử 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. Thay thế S ban đầu bởi S1 và S2 với S1 = XA và S2 = S\A. Trong đó S1 = XA thỏa mãn là BCNF,

- Quá trình trên tiếp tục cho đến khi tất cả các lược đồ quan hệ đều ở BCNF

Ví dụ: Cho lược đồ R(CTHRSG), trong đó:

- C – Course: Khóa học; T – Teacher: Giáo viên; H – Hour: Giờ học

- R – Room: Phòng học; S – Student: Sinh viên; G – Group: Nhóm

Ý nghĩa dữ liệu:

- Mỗi khóa học chỉ có một thầy dạy,

- Một phòng học tại giờ xác định chỉ có một khóa học,

- Thầy dạy tại giờ học cụ thể sẽ xác định phòng học cụ thể,

- Khóa học với một sinh viên cụ thể xác định lớp học cụ thể,

- Mỗi sinh viên học trong một giờ xác định tại phòng học cụ thể.

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

Yêu cầu: Tách lược đồ về dạng BCNF?

• Xét CS → G: CS không phải là khóa, nên tách thành Ω = <R,F> thành 2 lược

đồ quan hệ sau:

Ω1 = <R1, F1> với R1 = {C, S, G} và F1 = {CS → G}

Ω2 = <R2, F2> bới R2 = {C, T, H, S, R} và F2 = {C→T, HR→C, HT→R, HS → R}

Ta có: Ω1 ở dạng BCNF và Ω2 ở dạng 3NF nhưng chưa ở dạng BCNF

• Xét C → T: T không là thuộc tính khóa vì vậy tách Ω2 thành 2 lược đồ quan

hệ sau:

Ω21 = <R21, F21> với R21 = {C, T} và F21 = {C → T}

Ω22 = <R22, F22> với R22 = {C, H, S, R} và F22 = {HR→C, HS→R}

Ta có: Ω21 ở dạng BCNF và Ω22 chưa ở dạng BCNF

• Xét HR → C: HR không phải là khóa nên tách Ω22 thành hai lược đồ quan hệ sau:

Ω221 = <R221, F221> với R221 = { C, H, R} và F221 = {HR → C}

Ω222 = <R222, F222> với R222 = {H, S,R} và F222 = {HS → R}

Trung tâm Đào tạo E-learning Cơ hi hc tp cho mi người      

Cơ sở dữ liệu - Bài 6 Trang 30

Như vậy theo nguyên tắc từ lược đồ quan hệ R(CTHRSG) với F={ C→T; HR→C; HT→R; CS→G; HS→R} thuật toán đã tách thành các lược đồ con {Ω1, Ω21, Ω221, Ω222} ở dạng chuẩn BCNF khi kết nối không mất mát thông tin, trong đó:

Ω1 = <R1, F1> với R1 = {C, S, G} và F1 = {CS → G}

Ω21 = <R21, F21> với R21 = {C, T} và F21 = {C → T}

Ω221 = <R221, F221> với R221 = {C, H, R} và F221 = {HR → C}

Ω222 = <R222, F222> với R222 = {H, S,R} và F222 = {HS → R}

Quá trình mô tả tách – kết nối không mất thông tin về BCNF

4.2 Thut toán phân rã thành các 3NF bo đảm ph thuc và không tn tht thông tin

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

Thuật toán:

- Bước 1: Tìm phủ tối thiểu của tập phụ thuộc hàm F

- Bước 2:

- Với mỗi vế trái X của một phụ thuộc hàm xuất hiện trong phủ tối thiểu, tạo một lược đồ mới theo nguyên tắc:

Trung tâm Đào tạo E-learning Cơ hi hc tp cho mi người      

Cơ sở dữ liệu - Bài 6 Trang 31

# 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 phủ tối thiểu với X là vế trái

# X là khóa của quan hệ này

- Xét tất cả các phụ thuộc hàm của tập phủ tối thiểu.

- Nếu có lược đồ con chứa khóa K thì kết thúc thuật toán ngược lại thì tạo lược đồ con chứa khóa K.

Ví dụ: cho lược đồ Ω = <R, F> với R = {X, Y, X, W, Q} và F = {X→Y, XZ →W, YW→Q}

Xác định một phép tách thành 3NF bảo toàn phụ thuộc và không tổn thất thông tin

- Lược đồ có khóa là: XZ

- Thực hiện thuật toán tách:

+ Xét phụ thuộc hàm X → Y: tách thành Ω1 = {R1, F1} với R1 = {XY}

+ Xét phụ thuộc hàm XZ→W: tách thành Ω2 = {R2, F2} với R2 ={XZW}

+ Xét phụ thuộc hàm YW→Q: tách thành Ω3 = {R2, F3} với R3 = {YWQ}

Ta thấy Ω2 đã chứa khóa nên kết quả phép tách là R = { R1, R2, R3}

Ví dụ: Cho lược đồ R(CTHRSG), trong đó: C – Course; T – Teacher; H – Hour: Giờ

học; R – Room; S – Student; G – Group.

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

Yêu cầu: Tách lược đồ về dạng 3NF?

Thực hiện:

- Bước 1: Không mất tính tổng quát phủ tối thiểu của F cũng chính là F.

- Bước 2:

+ Phụ thuộc hàm C→T vi phạm 3NF (phụ thuộc bắc cầu vào khoá), vì vậy tách R thành R1(C,T) và R2(C,H,R,S,G).

+ Phụ thuộc hàm CS→G vi phạm 3NF(phụ thuộc bộ phận vào khoá), tách R2 thành R21(C,S,G) và R22(C,H,R,S).

+ Phụ thuộc hàm HR→C vi phạm 3NF, tách R22 thành R221(H,R,C) và R222(H,S,R).

Vậy lược đồ được tách thành: R1(C,T), R21(C,S,G), R221(H,R,C) và R222(H,S,R).

Trung tâm Đào tạo E-learning Cơ hi hc tp cho mi người      

Cơ sở dữ liệu - Bài 6 Trang 32

31 4.3 Thut toán xác định dng chun cao nht

Khi cho một lược đồ quan hệ nào đó, để xác định dạng chuẩn cao nhất của lược đồ, ta lần lược thực hiện các bước sau:

Bước 1: Tìm tất cả các khóa của lược đồ,

Bước 2: Sử dụng thuật toán kiểm tra lược đồ ở dạng chuẩn BCNF, nếu lược đồ ở dạng

BCNF thì dừng thuật toán và kết luận dạng cao nhất là BCNF, ngược lại sang bước tiếp theo,

Bước 3: Sử dụng thuật toán kiểm tra lược đồ ở dạng chuẩn 3NF, nếu lược đồ ở dạng

3NF thì dừng và kết luận dạng cao nhất là 3NF, ngược lại thì chuyển sang bước tiếp theo,

Bước 4: Sử dụng thuật toán kiểm tra lược đồ ở 2NF, nếu lược đồ ở dạng 2NF thì dừng

thuật toán và kết luận dạng cao nhất là 2NF, ngược lại kết luận ở dạng 1NF.

Chúc Anh/Ch hc tp tt!

Một phần của tài liệu Bài giảng cơ sở dữ liệu it06 Đại học mở hà nội (Trang 119 - 124)

Tải bản đầy đủ (PDF)

(124 trang)