Giáo trình Cơ sở dữ liệu - Cao Thị Nhạn (Phần 2)
Tóm tắt Giáo trình Cơ sở dữ liệu - Cao Thị Nhạn (Phần 2): ...LTER TABLE NHANVIEN DROP CONSTRAINT FK_NHANVIEN ALTER TABLE NHANVIEN ADD CONSTRAINT FK_NHANVIEN FOREIGN KEY (MaNQL) REFERENCES NHANVIEN (MaNV) Trang 71/109 5. Các thao tác cập nhật dữ liệu 5.1. Thêm Có thể thêm một bộ vào bảng bằng cách sử dụng: INSERT INTO [, ,, ] VALUES (, ,,) Ch..., trong đó K là khóa của Q. Ngược lại thuộc tính A được gọi là thuộc tính không khóa. K’ được gọi là siêu khóa nếu 'KK ⊆ . 2.2. Thuật toán tìm khóa 2.2.1. Thuật toán tìm một khóa Sử dụng đồ thị có hướng để tìm khóa như sau: Bước 1: • Mỗi nút của đồ thị là tên một thuộc tính của lược đồ...nh viên bằng trung bình của các môn mà sinh viên theo học • Bối cảnh: SINHVIEN(MaSV, HoSV, TenSV, Khoa, DTB) KETQUA (MaSV, MaMon, Diem) • Biểu diễn: ( )( )( )DiemkqAVGDTBsvMaSVkqMaSVsvKETQUAkqSINHVIENsv .... =⇒=∈∃∈∀ • Bảng tầm ảnh hưởng: RB9 Thêm Xóa Sửa SINHVIEN + - +(MaSV, DTB) KE...
an hệ
NHANVIEN, nếu một mã phòng (Phong) mà nhân viên trực thuộc xuất hiện, thì mã
phòng này phải xuất hiện trong quan hệ PHONGBAN, cụ thể là thuộc tính (MaPhong).
Như vậy:
• Bối cảnh: NHANVIEN, PHONGBAN
• Biểu diễn: ( ) ( )( )( )MaPhongpbPhongnvPHONGBANpbNULLPhongnvNHANVIENnv ... =∈∃∨=∈∀
• Bảng tầm ảnh hưởng:
RB5 Thêm Xóa Sửa
NHANVIEN + - +(Phong)
PHONGBAN - + +(MaPhong)
Ví dụ RBTV trên 1 quan hệ
Người quản lý (MaNQL) của một nhân viên cũng phải là một nhân viên trong công ty
• Bối cảnh: NHANVIEN
• Điều kiện: ( ) ( )( )( )MaNVnvMaNQLnvNHANVIENnvNULLMaNQLnvNHANVIENnv .1.1. =∈∃∨=∈∀
• Bảng tầm ảnh hưởng:
RB6 Thêm Xóa Sửa
NHANVIEN + - +(MaNV, MaNQL)
Ảnh hưởng của RBTV đối với các thao tác thêm, xóa, sửa dữ liệu
Giả sử r2 có một khóa ngoại α tham chiếu đến K trong r1, khi đó: )()( 12 rr Kππα ⊆
Thêm
Khi thêm một bộ t2 vào r2 thì phải bảo đảm tồn tại t1 trong r1 sao cho ][][ 21 αtKt =
Trang 90/109
Xóa
Giả sử xóa t1 khỏi r1. Khi đó cần xử lý các bộ trong r2 tham chiếu tới t1, nghĩa là
)( 2][1 rs Kt== ασ . Nếu ∅≠s thì
• Không thực hiện hành động xóa dữ liệu, hoặc
• Xóa dây chuyền, nghĩa là xóa tất cả các bộ trong s
Sửa
Trường hợp cập nhật t2 trong r2
• Cập nhật t2 trong r2, sửa khóa ngoại α
• Tương tự như trường hợp thêm dữ liệu
• Kiểm tra )(][ 1'2 rt Kπα ∈
Trường hợp cập nhật t1 trong r1
• Cập nhật t1 trong r1
• Tương tự như trường hợp xóa dữ liệu
• Kiểm tra ∅== )( 2][1 rKtασ
3.2.2.2. RBTV liên bộ - liên quan hệ
Quy định về từng nhóm các bộ của nhiều quan hệ bối cảnh khác nhau.
Ví dụ Một hóa đơn bán hàng phải có ít nhất một mặt hàng, nghĩa là một chi tiết hóa đơn
bán hàng phải có ít nhất một mặt hàng.
• Bối cảnh: HOADON, CTIETHD
• Biểu diễn: ( )( )MaHDcthdMaHDhdCTIETHDcthdHOADONhd .. =∈∃∈∀
• Bảng tầm ảnh hưởng:
RB7 Thêm Xóa Sửa
HOADON + - +(MaHD)
CTIETHD - + +(MaHD)
Trang 91/109
3.2.2.3. RBTV liên thuộc tính - liên quan hệ
Quy định về mối liên hệ giữa các thuộc tính trên nhiều quan hệ bối cảnh khác nhau.
Ví dụ Giả sử cho phép thanh toán tiền nhiều lần và thanh toán sau khi mua hàng, khi đó
ngày thanh toán tiền theo một hóa đơn mua hàng phải bằng hoặc sau ngày mua hàng.
• Bối cảnh: HOADON(MaHD, MaKH, NgayHD, TriGia),
THANHTOAN(MaHD, NgayTToan, LanTToan, SoTienTToan)
• Biểu diễn:
( )( )NgayTToanttNgayHDhdMahDttMaHDhdTHANHTOANttHOADONhd .... ≤⇒=∈∀∈∀
• Bảng tầm ảnh hưởng:
RB8 Thêm Xóa Sửa
HOADON + - +(MaHD, NgayHD)
THANHTOAN + - +(MaHD, NgayTToan)
3.2.2.4. RBTV do thuộc tính tổng hợp
Quy định về mối liên hệ giữa các thuộc tính do sự có mặt của thuộc tính tính toán.
Ví dụ Điểm trung bình của sinh viên bằng trung bình của các môn mà sinh viên theo học
• Bối cảnh: SINHVIEN(MaSV, HoSV, TenSV, Khoa, DTB)
KETQUA (MaSV, MaMon, Diem)
• Biểu diễn:
( )( )( )DiemkqAVGDTBsvMaSVkqMaSVsvKETQUAkqSINHVIENsv .... =⇒=∈∃∈∀
• Bảng tầm ảnh hưởng:
RB9 Thêm Xóa Sửa
SINHVIEN + - +(MaSV, DTB)
KETQUA + + +(MaSV, Diem)
3.2.2.5. RBTV do chu trình
Trang 92/109
Xảy ra khi có sự hiện diện của chu trình. Để nhận diện chu trình, người ta biểu diễn lược
đồ CSDL như sau:
Nút thể hiện lược đồ
Nút thuộc tính kết
Cung nối giữa nút lược đồ và nút thuộc
tính kết
Ví dụ Một nhân viên chỉ được phân công vào các đề án do phòng mình chủ trì
• Bối cảnh: NHANVIEN, DEAN, PHANCONG
Đồ thị thể hiện chu trình như sau:
• Biểu diễn:
( )( )MaDApcMaDAnvdaMaNVpcMaNVnvdaDANVnvdaPHANCONGpc ...._ =∧=∈∃∈∀
với: DEANNHANVIENDANV MaPhongPhong=← ><_
• Bảng tầm ảnh hưởng:
RB10 Thêm Xóa Sửa
NHANVIEN
NHANVIEN
MaNV=MaNV
MaNV=MaNV
PHANCONG NHANVIEN
DEAN
MaNV=MaNV
Phong=Phong
MaDA=MaDA
Trang 93/109
NHANVIEN - + +(MaNV, Phong)
DEAN - + +(MaDA, Phong)
PHANCONG + - +(MaDA, MaNV)
4. Bài tập
Bài tập 1
• Hãy chứng minh 3 tính chất phân rã, kết hợp và tựa bắc cầu.
• Hãy tìm hiểu các tính chất của bao đóng tập thuộc tính, phủ tối thiểu
Bài tập 2
Cho lược đồ quan hệ R(A, B, C, D, E, G) và tập phụ thuộc hàm
F={AÆC , AÆEG, BÆD, GÆE }
Tìm +++ FFF ACGDAB ,,
Bài tập 3
Cho lược đồ quan hệ R(A, B, C, D, E, G) và tập phụ thuộc hàm
F={BÆC , AÆEG, BÆA, GÆE }
Tìm +++ FFF ACGDAB ,,
Bài tập 4
Cho lược đồ quan hệ R(A, B, C, D, E) và tập phụ thuộc hàm
F={AÆC , BCÆD, DÆE, EÆA }
Tìm +++ FFF DBDAB ,,
Bài tập 5
Cho lược đồ quan hệ R(A, B, C, D, E) và tập phụ thuộc hàm
F={BÆC , ACÆD, DÆG, AGÆE }
Cho biết EAC → có thuộc F+ không?
Cho biết ADBD → có thuộc F+ không?
Trang 94/109
Với các bài tập 7, 8, 9:
• Tìm một khóa (theo thuật toán tìm một khóa)
• Tìm mọi khóa (theo thuật toán tìm mọi khóa)
• Tìm phủ tối thiểu
Bài tập 7
Cho lược đồ quan hệ R(A, B, C, D) và tập phụ thuộc hàm
F={ABÆCD, BÆC,CÆD}
Bài tập 8
Cho lược đồ quan hệ R {ABCDEFGHKLM} và tập phụ thuộc hàm
F={ A Æ B, C ÆD, EÆ F, G ÆAHK, AH Æ G, GLC Æ M }
Bài tập 9
Cho lược đồ quan hệ R {ABCDEFGHKL} và tập phụ thuộc hàm
F={A ÆB, AC ÆD, F Æ G, FK Æ LEH, E Æ FH}
Bài tập 10
Với hai bài toán tình huống là quản lý đề án và quản lý ngân hàng, ngoại trừ các ràng
buộc khoá chính và khoá ngoại, hãy tìm tất cả các RBTV theo yêu cầu: bối cảnh, biểu
diễn, tầm ảnh hưởng. Với những RBTV tìm được, hãy phân theo từng loại RBTV.
Trang 95/109
Chương 8
Dạng chuẩn và chuẩn hóa cơ sở dữ liệu
Chương này giới thiệu các dạng chuẩn, phân rã bảo toàn thông tin, bảo toàn phụ thuộc
hàm, qua đó cũng trình bày cách phân rã bảo toàn bảo toàn thông tin và bảo toàn phụ
thuộc.
1. Dạng chuẩn của lược đồ quan hệ
Để dễ dàng trình bày các dạng chuẩn, cần nắm rõ các khái niệm:
Thuộc tính khoá:
Cho lược đồ quan hệ ( )nAAAQ ,...,, 21 , thuộc tính B được gọi là thuộc tính khoá nếu B là
một thuộc tính thành phần trong một khoá nào đó của Q, ngược lại B được gọi là thuộc
tính không khoá
Ví dụ: R(A, B, C, D), F={ABÆC, BÆD, BCÆA}
Trong ví dụ trên, lược đồ R có 2 khoá là AB, BC. Khi đó A, B, C là thuộc tính khoá, D là
thuộc tính không khoá.
Giá trị nguyên tố
Giá trị nguyên tố là giá trị không phân nhỏ được nữa.
Ví dụ: Giá trị ChiTietMua: “Bánh Orion 1 gói, Kẹo mút 2 cây” không phải là giá trị
nguyên tố vì có thể phân thành: tên hàng, số lượng, đơn vị tính.
1.1. Dạng chuẩn 1
Lược đồ Q ở dạng chuẩn 1 nếu mọi thuộc tính đều mang giá trị nguyên tố.
Trong bài toán xét dạng chuẩn, dạng chuẩn thấp nhất là dạng chuẩn 1.
Ví dụ. Cho lược đồ HOADON(MaHD, MaKH, NgayHD, CtietMua, SoTien), và có thể
hiện như sau
Trang 96/109
CtietMua MaHD MaKH NgayHD
Tên hàng Số lượng ĐVT
SoTien
Bánh Orion 1 Gói 25.000 HD01 KH01 15-10-05
Kẹo mút 2 Cây 2.000
HD02 KH01 18-10-05 Gạo 2 Kg 30.000
Đường 1 Kg 15.000 HD03 KH02 24-10-05
Bánh AFC 2 Gói 24.000
Nhận thấy rằng CTiếtMua không mang giá trị nguyên tố, do đó HOADON không đạt
dạng chuẩn 1.
1.2. Dạng chuẩn 2
1.2.1. Định nghĩa
Lược đồ Q ở dạng chuẩn 2 nếu thoả:
(1) Q đạt dạng chuẩn 1
(2) Mọi thuộc tính không khóa của Q đều phụ thuộc đầy đủ vào khóa
1.2.2. Kiểm tra dạng chuẩn 2
Để kiểm tra dạng chuẩn 2 thực hiện:
Bước 1: Tìm mọi khóa của Q
Bước 2: Với mỗi khóa K, tìm bao đóng của tập tất cả các tập con thực sự Si của K
Bước 3: Nếu tồn tại bao đóng Si+ chứa thuộc tính không khóa thì Q không đạt dạng chuẩn
2, ngược lại Q đạt dạng chuẩn 2.
Ví dụ 1. Cho Q1 (A, B, C, D), F={AÆB, BÆDC}
Lược đồ chỉ có một khóa là A, nên mọi thuộc tính đều phụ thuộc đầy đủ vào khóa. Do
vậy Q1 đạt dạng chuẩn 2.
Ví dụ 2. Cho Q2 (A, B, C, D), F={ABÆD, CÆD}
Lược đồ có khóa là ABC, ngoài ra còn có C⊂ABC mà CÆD, trong đó D là thuộc tính
không khóa (nghĩa là thuộc tính D không phụ thuộc đầy đủ vào khóa). Do vậy Q2 không
đạt dạng chuẩn 2.
Trang 97/109
Ví dụ 3:
Xem ví dụ đơn giản bằng CSDL gồm 2 quan hệ MONHOC, SINHVIEN như sau:
MONHOC (MaMH, TenMH, STC, Loai)
Tân từ: Mỗi môn học có mã môn học (MaMH) duy nhất để phân biệt với các môn học
khác, có tên môn học (TenMH), số tín chỉ (STC), và loại bắt buộc hay tự chọn (Loai)
MaMH TenMH STC Loai
CT101 Nhập môn tin học 4 BB
CT102 TH kỹ năng máy tính 5 BB
TN311 Xác suất thống kê 3 BB
CT103 Thiết kế Web 4 TC
CT110 Nguyên lý lập trình 2 5 BB
SINHVIEN (MSSV, MaMH, TenSV, DiaChi, Diem)
Tân từ: Mỗi sinh viên (MSSV) khi thi một môn học (MaMH) được ghi nhận lại điểm
(Diem), ngoài ra còn có thông tin liên quan đến sinh viên như họ tên (TenSV), địa chỉ
(DiaChi)
MSSV MaMH TenSV DiaChi Diem
0310677 CT101 Nguyễn Thị Hoa 11 Nguyễn Công Trứ, Đà Lạt 6
0310678 CT101 Trần Hoàng 20 Bùi Thị Xuân, Đà Lạt 4
0310679 CT101 Lê Thanh Sơn 2 Nhà Chung, Đà Lạt 7
0310677 CT102 Nguyễn Thị Hoa 11 Nguyễn Công Trứ, Đà Lạt 8
0310678 CT102 Trần Hoàng 20 Bùi Thị Xuân, Đà Lạt 8
0310678 TN311 Trần Hoàng 20 Bùi Thị Xuân, Đà Lạt 3
0310679 TN311 Lê Thanh Sơn 2 Nhà Chung, Đà Lạt 6
0310677 CT103 Nguyễn Thị Hoa 11 Nguyễn Công Trứ, Đà Lạt 9
0310678 CT103 Trần Hoàng 20 Bùi Thị Xuân, Đà Lạt 7
Trang 98/109
0310000 CT110 Nguyễn Ngọc 1 Lê Hồng Phong, Đà Lạt 9
Ở quan hệ SINHVIEN có thể nhận thấy các phụ thuộc:
MSSV, MaMH Æ Diem
MSSVÆTenSV, DiaChi
Vậy quan hệ SINHVIEN không đạt dạng chuẩn 2 vì thuộc tính TenSV, DiaChi là thuộc
tính không khoá chỉ phụ thuộc vào MSSV: như vậy không phụ thuộc đầy đủ vào khoá.
Trong quá trình cập nhật và lưu trữ dữ liệu xuất hiện những vấn đề sau:
• Ở quan hệ SINHVIEN, việc lưu trữ thông tin một sinh viên bị lặp lại (tên, địa chỉ)
• Quá trình cập nhật:
o Sửa đổi: Khi cần sửa đổi địa chỉ của một sinh viên (ví dụ như Nguyễn Thị
Hoa) cần phải sửa đổi 3 lần vì trùng lắp thông tin, hơn nữa, khi sửa đổi thông
tin của về một sinh viên lại không liên quan đến thông tin về thi cử.
o Thêm: Nếu chèn thêm một bộ vào quan hệ SINHVIEN mà sinh viên chưa thi
môn nào thì không được vì khoá MSSV, MaMH là không đầy đủ. Vấn đề này
chỉ được khắc phục khi loại bỏ những thông tin về kết quả thi cử ra khỏi quan
hệ.
o Xoá: Giả sử rằng cần xóa bỏ môn CT110 mà danh sách sinh viên vẫn giữ
nguyên. Khi đó xóa bộ {‘CT110’, ‘Nguyên lý lập trình 2’, 5, ‘BB’} trong
quan hệ MONHOC và xoá bộ {‘0310000’, ‘CT110’, ‘Nguyễn Ngọc’, ‘1 Lê
Hồng Phong, Đà Lạt’, 9} trong quan hệ SINHVIEN. Khi đó thông tin về sinh
viên sẽ bị mất.
Để khắc phục những bất lợi trên, quan hệ SINHVIEN có thể tách thành 2 quan hệ
SINHVIEN (MSSV, TenSV, DiaChi) và KETQUATHI (MSSV, MaMH, Diem). Như
vậy, 3 quan hệ trên đều đã ở dạng chuẩn thứ 2.
Trang 99/109
1.3. Dạng chuẩn 3
1.3.1. Định nghĩa
Định nghĩa 1
Với một lược đồ Q; X, Y là hai tập con của Q+; A là một thuộc tính. Khi đó A được gọi
là phụ thuộc bắc cầu vào X nếu thỏa:
(1) XÆY, YÆA
(2) Y X
(3) A ∉ XY
Lược đồ Q ở dạng chuẩn 3 nếu mọi thuộc tính không khóa đều không phụ thuộc bắc cầu
vào khóa.
Việc kiểm tra dạng chuẩn 3 theo định nghĩa trên sẽ khó cài đặt. Ta có thể thực hiện kiểm
tra dạng chuẩn 3 theo định nghĩa sau:
Định nghĩa 2
Lược đồ Q ở dạng chuẩn 3 nếu mọi phụ thuộc hàm XÆA∈F+, với A ∉ X đều có:
(1) X là siêu khóa, hoặc
(2) A là thuộc tính khóa
1.3.2. Kiểm tra dạng chuẩn 3
Từ định nghĩa 2, để kiểm tra dạng chuẩn 3 thực hiện các bước sau:
Bước 1: Tìm mọi khóa của Q
Bước 2: Phân rã vế phải của mọi phụ thuộc hàm trong F để tập F trở thành tập phụ thuộc
hàm có vế phải một thuộc tính
Bước 3: Nếu mọi phụ thuộc hàm XÆA ∈F, mà A ∉ X đều thỏa
(1) X là siêu khóa (vế trái chứa một khóa), hoặc
(2) A là thuộc tính khóa (vế phải là tập con của khóa)
thì Q đạt dạng chuẩn 3, ngược lại Q không đạt dạng chuẩn 3.
Ví dụ. Cho Q (A, B, C, D), F={ABÆD, CÆD}
Bước 1: Q có một khóa là ABC
Trang 100/109
Bước 2: Mọi phụ thuộc hàm trong F đều đã có vế phải một thuộc tính.
Bước 3: Với ABÆD, nhận thấy rằng D ∉ ABC có
• Vế trái (AB) không phải là siêu khóa.
• Hơn nữa vế phải (D) không là thuộc tính khóa
Vậy Q không đạt dạng chuẩn 3.
1.4. Dạng chuẩn BC (Boyce Codd)
1.4.1. Định nghĩa
Lược đồ Q ở dạng chuẩn BC nếu mọi phụ thuộc hàm XÆA∈F+, với A ∉ X đều có X là
siêu khóa.
1.4.2. Kiểm tra dạng chuẩn BC
Từ định nghĩa, để kiểm tra dạng chuẩn BC thực hiện các bước sau:
Bước 1: Tìm mọi khóa của Q
Bước 2: Phân rã vế phải của mọi phụ thuộc hàm trong F để tập F trở thành tập phụ thuộc
hàm có vế phải một thuộc tính
Bước 3: Nếu mọi phụ thuộc hàm XÆA ∈F, mà A ∉ X đều thỏa X là siêu khóa (vế trái
chứa một khóa), thì Q đạt dạng chuẩn BC, ngược lại Q không đạt dạng chuẩn BC.
Ví dụ. Cho Q (A, B, C, D, E, I), F={ACDÆEBI, CEÆAD}
Bước 1: Q có hai khóa là {ACD, CE}
Bước 2: Phân rã vế phải của các phụ thuộc hàm trong F, ta có:
F={ACDÆE, ACDÆB, ACDÆI, CEÆA, CEÆD}
Bước 3: Mọi phụ thuộc hàm trong F đều có vế trái là một siêu khóa
Vậy Q đạt dạng chuẩn BC.
1.5. Kiểm tra dạng chuẩn
Kiểm tra dạng chuẩn của lược đồ quan hệ Q
Bước 1: Tìm mọi khóa của Q
Bước 2: Kiểm tra dạng chuẩn BC, nếu đúng thì Q đạt dạng chuẩn BC,
Trang 101/109
ngược lại qua bước 3.
Bước 3: Kiểm tra dạng chuẩn 3, nếu đúng thì Q đạt dạng chuẩn 3,
ngược lại qua bước 4.
Bước 4: Kiểm tra dạng chuẩn 2, nếu đúng thì Q đạt dạng chuẩn 2,
ngược lại Q đạt dạng chuẩn 1.
Kiểm tra dạng chuẩn của lược đồ CSDL
Dạng chuẩn của một lược đồ CSDL là dạng chuẩn thấp nhất trong các dạng chuẩn của các
lược đồ quan hệ con.
2. Phép phân rã
Mục tiêu của việc thiết kế CSDL quan hệ là tạo ra một tập các lược đồ quan hệ cho phép
chúng ta lưu trữ thông tin không có những dư thừa không cần thiết và truy tìm thông tin
một cách dễ dàng, chính xác. Việc phân rã một lược đồ thành những lược đồ con đều
mong muốn đạt được bảo toàn thông tin và bảo toàn phụ thuộc.
2.1. Phân rã bảo toàn thông tin
Cho lược đồ quan hệ Q (TenNCC, DiaChiNCC, SanPham, DonGia)
Phân rã Q thành Q1 và Q2 như sau:
Q1 (TenNCC, SanPham, DonGia)
Q2 (TenNCC, DiaChiNCC)
Khi đó ta có các thể hiện sau:
Q TenNCC DiaChiNCC SanPham DonGia
Nguyễn Mai 10 Nguyễn Công Trứ Bánh xốp 10.000
Nguyễn Mai 10 Nguyễn Công Trứ Kẹo mè 20.000
Nguyễn Mai 20 Nguyễn Văn Trỗi Kẹo mè 20.000
Q1 TenNCC SanPham DonGia
Nguyễn Mai Bánh xốp 10.000
Trang 102/109
Nguyễn Mai Kẹo mè 20.000
Q2 TenNCC DiaChiNCC
Nguyễn Mai 10 Nguyễn Công Trứ
Nguyễn Mai 20 Nguyễn Văn Trỗi
21 QQ >< TenNCC DiaChiNCC SanPham DonGia
Nguyễn Mai 10 Nguyễn Công
Trứ
Bánh xốp 10.000
Nguyễn Mai 10 Nguyễn Công
Trứ
Kẹo mè 20.000
Nguyễn Mai 20 Nguyễn Văn Trỗi Bánh xốp 10.000
Nguyễn Mai 20 Nguyễn Văn Trỗi Kẹo mè 20.000
Như vậy kết quả thể hiện Q và 21 QQ >< là khác nhau, khi đó ta nói phép phân rã gọi là
không bảo toàn thông tin (mất mát thông tin).
Định nghĩa
Q là lược đồ quan hệ, Q1, Q2 là hai lược đồ con có:
+++
++
=∪
=∩
QQQ
XQQ
21
21
Khi đó Q được phân rã thành hai lược đồ con Q1, Q2 là phép phân rã bảo toàn thông tin
nếu với r là thể hiện bất kỳ của Q ta có:
21 .. QrQrr ><=
(r là kết quả của phép kết tự nhiên của các hình chiếu của nó trên Q1, Q2)
2.2. Phân rã bảo toàn phụ thuộc hàm
Một vấn đề cần quan tâm khi phân rã lược đồ Q thành các lược đồ con Qi với tập các Fi
tương ứng được tính từ tập phụ thuộc hàm F. Phép phân rã bảo toàn phụ thuộc (giữ lại
Trang 103/109
phụ thuộc) nếu với ri là thể hiện của Qi thoả điều kiện: ri chỉ thoả những phụ thuộc hàm
XÆY ∈F+ với XY⊆Qi+
Định nghĩa
Gọi Q1, Q2,, Qn là phân rã của lược đồ quan hệ Q, tập phụ thuộc hàm F trên Q. Hình
chiếu của F trên một tập các thuộc tính Qi+ ký hiệu ΠQi+(F) là tập các phụ thuộc hàm
XÆY ∈F+ với XY⊆Qi+
ΠQi+(F) = Fi+={XÆY | XÆY ∈F+ và XY⊆Qi+ }
Khi đó phân rã là bảo toàn tập phụ thuộc hàm F nếu
F ≡ ∪ ΠQi+(F)
3. Thiết kế CSDL bằng cách phân rã
3.1. Phân rã thành dạng chuẩn BC (hoặc dạng chuẩn 3) bảo toàn thông tin
3.1.1. Thuật toán
Bước 1: Tìm tất cả các khóa của Q
Bước 2: Tìm phụ thuộc hàm XÆY ∈F có X không là siêu khóa và Y không chứa thuộc
tính khóa.
• Nếu tìm thấy thì tách Q thành Q1 và Q2 theo cách:
o Q1 = Q[XY]; F1 ≡ ΠQ1(F) (tìm bao đóng của tất cả các tập con của XY để tính
F1). Tiếp tục phân rã (Q1, F1).
o Q2 = Q[Q+ - Y]; F2 ≡ ΠQ2(F) (tìm bao đóng của tất cả các tập con của (Q+ - Y)
để tính F2). Tiếp tục phân rã (Q2, F2).
• Nếu không tìm thấy thì xét dạng chuẩn Qi:
o Nếu mọi phụ thuộc hàm trong Fi đều có vế trái là siêu khóa thì Qi đạt dạng
chuẩn BC
o Nếu có phụ thuộc hàm trong Fi có vế trái không là siêu khóa và vế phải là
thuộc tính khóa thì Qi đạt dạng chuẩn 3
3.1.2. Ví dụ
Ví dụ 1
Cho Q (SDIM), F={SIÆD, SDÆM}
Trang 104/109
Bước 1: Q có một khóa là {SI}
Bước 2: Phụ thuộc hàm SDÆM có SD không là siêu khóa nên tách:
Q1 = (SDM); F1 = {SDÆM}
Q2 = (SDI); F2 = {SIÆD}
Để tìm tập phụ thuộc hàm F1, F2 cần tính bao đóng của mọi tập con.
Tìm F1: với Q1 = (SDM): bao đóng của mọi tập con
SSF =+
DDF =+
MM F =+
SDMSDF =+
SMSM F =+
DMDM F =+
SDMSDM F =+
F1 = ΠQ1(F) = {SDÆM, SDÆSM, SDÆDM, SDÆSDM }
⇒ F1 = {SDÆM}
Tìm F2: với Q2= (SDI): bao đóng của mọi tập con
SSF =+
DDF =+
II F =+
SDMSDF =+
SIDMSI F =+
DIDI F =+
SDIMSDI F =+
Trang 105/109
F2 = ΠQ2(F) = {SIÆD, SIÆSD, SIÆDI, SIÆSDI }
⇒ F2 = {SIÆD}
Bước 3: Mọi phụ thuộc hàm trong F1và F2 đều có vế trái là một siêu khóa nên Q1 và Q2
đạt dạng chuẩn BC.
Ví dụ 2
Cho Q (ABCDE), F = {BCÆA, CÆD, AEÆB, BÆD, BÆE}
Bước 1: 2 khóa là {CB, CAE}
Bước 2: Từ CÆ D tách thành:
• Q1(CD), F1= {CÆD}, Khóa C. Đạt dạng chuẩn BC.
• Q2(CABE), F2= {BÆE, CBÆA, AEÆB}
Chi tiết tính F1, F2 như sau:
Tìm F1: với Q1 = (CD)
CDCF =+
DDF =+
CDCDF =+
Vậy F1 = {CÆD}
Tìm F2: với Q2(CABE):
CDCF =+
AAF =+
BDEBF =+
EEF =+
CADCAF =+
CBADECBF =+
CEDCEF =+
Trang 106/109
ABDEABF =+
AEBDAEF =+
BEDBEF =+
CABDECABF =+
CAEBDCAEF =+
CBEADCBEF =+
ABEDABEF =+
CABEDCABEF =+
F2= {BÆE, CBÆAE, ABÆE, AEÆB, CABÆE, CAEÆB, CBEÆA}
Vậy F2= {BÆE, CBÆA, AEÆB}
Xét dạng chuẩn Q2:
Khoá Q2: {CB, CAE}. Vậy Q2 đã đạt dạng chuẩn 3.
3.1.3. Cải tiến thuật toán
Nhận thấy rằng trong tìm phụ thuộc hàm hình chiếu trên Qi, xét tập một con Xi, nếu
( ) ++ = QX Fi , khi đó nếu tiếp tục xét các tập XjXiXj ⊂: , thì hiển nhiên ( ) ++ = QX Fj , và
cuối cùng thì phụ thuộc hàm có vế trái Xj cũng sẽ bị loại để chỉ chọn phụ thuộc hàm có
vế trái Xi.
Do đó, khi tìm phụ thuộc hàm hình chiếu trên Qi, xét tập một con Xi, nếu ( ) ++ = QX Fi ,
thực hiện loại bỏ các tính toán cho các trường hợp XjXiXj ⊂: .
Ví dụ: với tìm F2 như ví dụ trên:
Q2(CABE), F = {BCÆA, CÆD, AEÆB, BÆD, BÆE}
CDCF =+
AAF =+
BDEBF =+
EEF =+
Trang 107/109
CADCAF =+
CBADECBF =+ , loại các tập CAB, CBE, CABE
CEDCEF =+
ABDEABF =+
AEBDAEF =+
BEDBEF =+
ABEDABEF =+
F2= {BÆE, CBÆAE, ABÆE, AEÆB}
Vậy F2= {BÆE, CBÆA, AEÆB}
3.2. Phân rã thành dạng chuẩn 3 vừa bảo toàn thông tin vừa bảo toàn phụ thuộc
hàm
Bước 1: Tìm phủ tối thiểu của F.
Bước 2: Loại bỏ tất cả các thuộc tính của Q không liên quan đến một phụ thuộc hàm nào
của PTT(F).
Bước 3: Nếu có một phụ thuộc hàm trong PTT(F) liên quan đến mọi thuộc tính của Q thì
không thể phân rã. Ngược lại, qua bước 4.
Bước 4: Gom nhóm những phụ thuộc hàm có cùng vế trái. Với mỗi nhóm phụ thuộc hàm
có cùng vế trái, tạo thành một lược đồ con.
Bước 5: Kiểm tra các lược đồ con có thoả dạng chuẩn 3 chưa, nếu chưa thì áp dụng bước
4 để phân rã tiếp.
Ví dụ. Cho Q (CTHRSG), F={CÆT, HRÆC, HTÆR, CSÆG, HSÆR}
PTT(F) = F = {CÆT, HRÆC, HTÆR, CSÆG, HSÆR}
Ta có kết quả phân rã Q1(CT), Q2(HRC), Q3(HTR), Q4(CSG), Q5(HRS)
4. Bài tập
Bài tập 7, 8, 9 trong chương 7, với yêu cầu:
- Phân rã thành dạng chuẩn BC hoặc dạng chuẩn 3 bảo toàn thông tin
Trang 108/109
- Phân rã thành dạng chuẩn 3 bảo toàn thông tin và bảo toàn phụ thuộc hàm
Trang 109/109
Tài Liệu Tham Khảo
1. Bài giảng Cơ sở dữ liệu, Nguyễn Hữu Tân, Đại Học Đà Lạt, 2004.
2. Bài tập cơ sở dữ liệu, Nguyễn Xuân Huy – Lê Hoài Bắc, NXB thống kê, 2003.
3. Giáo trình Cơ sở dữ liệu, Nguyễn Đăng Tỵ - Đỗ Phúc, Đại Học Quốc gia Tp. Hồ Chí
Minh, 2001.
4. Nhập môn Cơ sở dữ liệu quan hệ, Lê Tiến Vương, NXB Khoa học và Kỹ thuật, 1994.
5. David Maier, The theory of Relational Databases, Computer Science Press,
Rockville, 1983.
File đính kèm:
giao_trinh_co_so_du_lieu_cao_thi_nhan_phan_2.pdf



