1. Trang chủ
  2. » Công Nghệ Thông Tin

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

8 9K 224
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 72,2 KB

Nội dung

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

Trang 1

DẠNG 9: CHUẨN HÓA LƯỢC ĐỒ QUAN HỆ

Các kiến thức liện quan:

của R Ngược lại A gọi là thuộc tính không khóa

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

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 !

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

B là thuộc tính trung gian tạo sự bắc cầu

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

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

dạng Khóa Không khóa

Trang 2

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:

R1(Khóa + Các thuộc tính không lặp) Khóa của R1là khóa của R

R2(Khóa + Các thuộc tính lặp) Khóa của R2 là khóa của R và 1 thuộc tính lặp nào đó R1 và R2 đã ở 1NF

VD: Bảng SinhVien(MaSV, TenSV, GioiTinh, MaMon, TenMon, Diem) được

tách thành:

R1(MaSV, TenSV, GioiTinh) Khóa là MaSV

R2(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:

R1(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 R1 là "Khóa tạo sự phụ thuộc bộ phận"

R2(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 R2 là khóa của R

R1 và R2 đã ở 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:

R1(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 R1 là "Thuộc tính trung gian tạo sự bắc cầu "

R2(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 R2 là khóa của R

R1 và R2 đã ở 3NF

Trang 3

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:

R1(XY) Khóa của R1 là X ; tập phụ thuộc hàm F1={X → Y}

R2(X+Khóa của R + các thuộc tính không khóa còn lại) Khóa của R2 là khóa của R+ {X}

R1 và R2 đã ở 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

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 K0 = {ABCDEGH}

K1 = {ABCDEG} vì C → H và C ∈ K0

K2 = {ABCDE} vì E → G và E ∈ K1

K3 = {ABCD} vì B → E và B ∈ K1

K4 = {AB} vì AB → CD và AB ∈ K2

K5≡ K4 Vậy khóa của R là {AB}

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

Trang 4

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:

R1(B E G) Khóa B ; F1 = {B → E, E → G}

R2(A B C D H) Khóa AB ; F2 = {AB → CD, C → H}

R1 và R2 đã ở 2NF

B5: Chuẩn hóa về 3 NF

Xét R1: có đồ thị phụ thuộc hàm:

B E G

R1 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 R1 thành:

R11(E G) Khóa E ; F11={E → G}

R12(B E) Khóa B ; F12={B → E}

R11 và R12 đã ở 3NF

Xét R2: đồ thị phụ thuộc hàm:

A B C D H

R2 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 R2 thành:

R21(C H) Khóa C ; F21={C → H}

R22(A B C D) Khóa AB ; F22={AB → CD}

R21 và R22 đã ở 3NF

Vậy từ quan hệ R, ta tách thành 4 quan hệ:

R11(E G) Khóa E ; F11={E → G}

R12(B E) Khóa B ; F12={B → E}

R21(C H) Khóa C ; F21={C → H}

R22(A B C D) Khóa AB ; F22={AB → CD}

Các quan hệ này đã ở 3NF

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

Trang 5

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 :

R1(ABC) Khóa AB, F1 = {AB → C}

R2(BE) Khóa B, F2 = {B → E}

R3(CH) Khóa C, F3 = {C → H}

R4(EG) Khóa E F4 = {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 :

R1(ABC) Khóa AB, F1 = {AB → C}

R2(BDE) Khóa B, F2 = {B → DE}

R3(GH) Khóa G, F3 = {G → H}

Quan hệ R3 không thể kết nối tới 2 quan hệ R1 và R2 do nó không có thuộc tính chung với R1 và R2 Do vậy, ta cần bổ sung quan hệ :

R4(ABG) Khóa ABG, F4 = ∅

Trang 6

PHỤ LỤC 1 CÁC LỖI THƯỜNG GẶP KHI GIẢI BÀI TẬP CSDL Dạng 1:

- Kết nối (*) thiếu bản ghi

- Phép chiếu: không loại bản trùng nhau

- Không trình bày chi tiết các bước mà chỉ viết bảng kết quả

Dạng 2:

- Thiếu dấu ngoặc “(“ và/ hoặc “)”

- Phép chọn: Sai biểu thức điều kiện chọn: ∧ thành AND; ∨ thành OR

- Chiếu trước chọn (thông thường phép chọn sẽ được thực hiện trước)

Dang 3:

- Hằng xâu và hằng ngày tháng không đặt trong dấu nháy đơn‘’

- Hằng số đặt trong dấu nháy đơn

- Select trên nhiều bảng thiếu điều kiện kết nối

- Select lồng nhau không đặt câu Select con trong dấu ngoặc ()

- Sử dụng hàm trong mệnh đều Where

- Sai cú pháp

Dạng 4:

- Tách vế trái: VD: AB → C tách thành A → C và B → C

Dạng 5: Hiếm khi xảy ra lỗi

Dạng 6:

- Không loại bỏ hết hoặc loại bỏ nhầm phụ thuộc hàm dư thừa

- Không loại bỏ hết hoặc loại bỏ nhầm thuộc tính vế trái dư thừa

Dạng 7: Hiếm khi xảy ra lỗi

Dang 8:

- Điền nhầm bảng ban đầu

- Làm bằng sai

- Chỉ vẽ bảng mà không chú dẫn trong quá trình làm bằng

- Thiếu kết luận hoặc kết luận sai

Dang 9:

- Không theo đúng trình tự các bước

- Không tìm phủ tối thiểu nếu tập F chưa tối thiểu

- Tách quan hệ sai

Trang 7

PHỤ LỤC 2 MỘT SỐ BÀI TẬP SINH VIÊN TỰ ÔN TẬP

Bài 1: Cho các quan hệ sau :

Hãy thực hiện các biểu thức đại số quan hệ sau :

a ΠAB (δA=a1 V B = b1 (R*S) b ΠBC (R) ∪ ΠBC (δB=b1 (S))

c ΠA ( δB≠ b1 V C >1(R)) d ΠBC ( δA=a2 V B = b3 (R)) ∩ΠBC (S)

Bài 2: Cho quan hệ với lược đồ sau :

CT (MaCT, TenCT, DiaChi, NgayTL)

NV (MaNV, TenNV, NgaySinh, Luong, MaCT) Bảng CT chứa thông tin về các công ty Bảng NV chứa các thông tin về các nhân viên, mỗi nhân viên thuộc một công ty nào đó được xác định thông qua MaCT của nhân viên đó

Hãy biểu diễn các yêu cầu sau bằng biểu thức đại số quan hệ:

a Cho biết Tên các công ty có địa chỉ là Hà Tây và thành lập trước ngày 1/1/2000

b Cho biết Tên các nhân viên sinh năm 1978

c Cho biết Tên Các công ty thành lập trong nửa đầu năm 1998

d Cho biết Tên công ty và tên các nhân viên làm việc trong các công ty đó

e Cho biết Tên các nhân viên làm việc cả trong công ty LG và công ty Samsung

f Cho biết Tên các nhân viên chỉ làm việc trong công ty có mã CT01 mà không làm việc trong công ty có mã CT02

g Cho biết Tên các nhân viên làm việc trong công ty LG hoặc công ty Sony

h Cho biết Tên nhân viên có mức lương ∈ [300, 500]

Bài 3: Cho quan hệ R(U, F) : U = {A, B, C, D, E, G} và

F = {AB → C, B → C, C → EG, CE → D, G → A}

a Chứng minh rằng nếu R thoả F thì R cũng thoả B → DA

b Tìm bao đóng của tập thuộc tính {A, B} và tập thuộc tính {CG}

c Tập F đã tối thiểu chưa? vì sao? nếu chưa hãy tìm một phủ tối thiểu của F

Bài 4: Cho quan hệ R(U, F): U = {A, B, C, D, E, G) và

F = {AB → C, AC → D, D → EG, G → B, A → D, CG → A}

a Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm AB → E và

AD → BC

b Tính bao đóng {A}+ của tập thuộc tính {A}

c Tập các phụ thuộc hàm F đã là tối thiểu chưa? Vì sao? Nếu chưa, tìm một phủ tối thiểu của F

Bài 5: Cho quan hệ R(U, F): U = {A, B, C, D, E, G, H} và

F = {AB → C, C → D, DE → GH, G → H, D → BH, A → C}

a Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm AB → DH và

CE → BG

Trang 8

b Tính bao đóng {A, B}+ của tập thuộc tính {A, B}

c Tập các phụ thuộc hàm F đã là tối thiểu chưa? Vì sao? Nếu chưa, hãy tìm một phủ tối thiểu của F

Bài 6: Cho quan hệ R(U, F): U = {A, B, C, D, E, G, H} và

F = {AB → C, C → D, DC → G, G → HE, D → BH, A → D}

a Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm AB → DG và

C → EH

b Tính bao đóng {A, B }+ của tập thuộc tính {A, B}

c Tập các phụ thuộc hàm F đã là tối thiểu chưa? Vì sao? Nếu chưa, tìm một phủ tối thiểu của F

Bài 7: Cho quan hệ R(U, F) : U = {A, B, C, D, E, G, H} và

F = {AB → D, B → CG, D → EH}

a Kiểm tra tính mất mát khi tách R thành : R1(ABD) ; R2(ABG) ; R3(BCEGH}

b Chuẩn hoá quan hệ R về 3NF.

Bài 8: Cho quan hệ R(U, F): U = { A, B, C, D, E, G, H } và

F = {A → C, AB → G, B → DE, G → H, GH → A }

a Tìm một khoá tối thiểu của quan hệ R

b Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R1(AC); R2(BDE); R3(ABGH)

c Chuẩn hoá quan hệ R về dạng chuẩn 3NF.

Bài 9: Cho quan hệ R(U, F): U = {A, B, C, D, E, G} và

F = {AB → D, B → C, D → E, AB → G}

a Tìm một khoá tối thiểu của quan hệ R

b Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R1(ABD); R2(BCD), R3(ABEG)

c Chuẩn hoá quan hệ R về dạng chuẩn 3NF.

Ngày đăng: 29/09/2013, 04:20

HÌNH ẢNH LIÊN QUAN

Bảng CT chứa thông tin về các công ty. Bảng NV chứa các thông tin về các nhân viên, mỗi nhân viên thuộc một công ty nào đó được xác định thông qua MaCT của nhân viên đó - Chuẩn hóa lược đồ quan hệ
ng CT chứa thông tin về các công ty. Bảng NV chứa các thông tin về các nhân viên, mỗi nhân viên thuộc một công ty nào đó được xác định thông qua MaCT của nhân viên đó (Trang 7)

TỪ KHÓA LIÊN QUAN

w