Chương 4: NGÔN NGỮ SQL TỐI ƯU HOÁ CÂU HỎI
4.2. TỐI ƯU HOÁ CÂU HỎI
Khi thực hiện các biểu thức đại số quan hệ trên máy, đôi khi gặp khó khăn:
- Thiếu bộ nhớ: do phép kết nối, - Có kết quả lớn : do tích Descaster...
- Thời gian tính toán lớn: Do phải xử lý nhiều bản ghi vì vậy, nên biến đổi các biểu thức đại số quan hệ cần tính thành các biểu thức đại số quan hệ tương đương khắc phục được những nhược điểm trên .
4.2.1. Các chiến lược tối ưu:
-Thực hiện các phép chọn, phép chiếu thực hiện sớm nhất có thể: giảm bớt phần tử cần xử lý
- Nhóm dãy các phép toán 1 ngôi (phép chọn, phép chiếu)
- Tổ hợp những phép chọn xác định bởi phép tích Descartes δF(r x s)=r|><|s -Tìm các biểu thức con chung trong 1 biểu thức (tính tóan trước nhất 1 lần) - Xử lý các file trước khi tính toán
- Sắp xếp chỉ mục hoặc sắp xếp trước khi tính toán
- Lựa chọn thứ tự thực hiện sẽ phù hợp về thời gian và dung lượng.
4.2.2 Các phép biến đổi tương đương của đại số quan hệ:
a.Tính kết hợp của tích Descartes, và phép kết nối:
(R1 x R2) x R3= R1 x( R2 x R3 )
(R1 |><| R2) |><| R3= R1|><| (R2|><| R3) b. Tính gộp mã phép chọn:
δF1(δF2(...(δFn(R))..))= δF1 ˄ F2 ˄…˄Fn (R) c. Tính tổ hợp của phép chiếu:
∏x1 (∏x2 (...(∏xn (R))...))= ∏x1 (R) Nếu Xn⊃ Xn-1⊃ ... ⊃ X1
d. Tính giao hoán giữa phép chọn và phép chiếu:
δF (∏x (R)) = ∏x(δF(R))
e.Tính giao hoán giữa phép chọn và phép tích Descartes a. δF(R1xR2)= δF (R1)xR2
Nếu F chỉ liên quan đến R1
b. δF(R1xR2)= δF1(R1) xδF2(R2)
Nếu F=R1˄R2 ; F1 chỉ liên quan đến R1,F2 chỉ liên quan đến R2
c. δF (R1xR2)= δF2(δF1(R1)xR2)
Nếu F=F1˄F2, F1 chỉ liên quan đến R1, F2 liên quan cả R1 và R2
f. Tính giao hoán phép chọn và một phép hợp δF(R1∪ R2) = δF(R1) ∪δF(R2)
g. Tính giao hoán 1 phép chọn và 1 phép hiệu δF(R1 - R2) = δF(R1)- δF(R2)
h.Tính giao hoán giữa phép chọn và phép tích Descartes
∏x(R1(Y) x R2(Z)) = ∏x∩Y(R1) x ∏x∩Z(R2)
9.Tính giao hoán giữa 1 phép chiếu và 1 phép hợp
∏x(R1∪ R2) = ∏x(R1) ∪∏x(R2)
BÀI TẬP
1. Dựa vào lược đồ CSDL :
Congtrinh(MACT,TENCT,ĐIAĐIEM,NGAYCAPGP ,NGAYKC,NGAYHT) Nhanvien(MANV,HOTEN,NGAYSINH,PHAI,ĐIACHI,MAPB)
Phongban(MAPB,TENPB)
Phancong(MACT,MANV,SLNGAYCONG) Hãy thực hiện các câu hỏi sau bằng SQL
a. Danh sách những nhân viên có tham gia vào công trình có mã công trình(MACT) là X.
Yêu cầu các thông tin: MANV,HOTEN, SLNGAYCONG, trong đó MANV được sắp tăng dần
b. Đếm số lượng ngày công của mỗi công trình. Yêu cầu các thông tin: MACT, TENCT, TONGNGAYCONG (TONGNGAYCONG là thuộc tính tự đặt)
c. Danh sách những nhân viên có sinh nhật trong tháng 08. yêu cầu các thông tin:
MANV, TENNV, NGAYSINH, ĐIACHI,TENPB, sắp xếp quan hệ kết quả theo thứ tự tuổi giảm dần.
d. Đếm số lượng nhân viên của mỗi phòng ban. Yêu cầu các thông tin: MAPB, TENPB, SOLUONG. (SOLUONG là thuộc tính tự đặt.)
2. Dựa vào lược đồ cơ sở dữ liệu :
Giaovien(MAGV,HOTEN, MAKHOA) Monhoc(MAMH,TENMH)
Phonghoc(PHONG,CHUCNANG) Khoa(MAKHOA,TENKHOA) Lop(MALOP,TENLOP, MAKHOA)
Lichday(MAGV,MAMH,PHONG,MALOP,NGAYDAY,TUTIET,ĐENTIET, BAIDAY, LYTHUYET, GHICHU)
Hãy thực hiện các câu hỏi sau bằng SQL :
a. Xem lịch báo giảng tuần từ ngày 08/09/2003 đến ngày 14/09/2003 của giáo viên có MAGV (mã giáo viên) là TH3A040. Yêu cầu: MAGV,HOTEN, TENLOP,TENMH,PHONG, NGAYDAY, TUTIET, ĐENTIET, BAIDAY, GHICHU) b. Xem lịch báo giảng ngày 08/09/2003 của các giáo viên có mã khoa là CNTT. Yêu cầu : MAGV, HOTEN, TENLOP, TENMH, PHONG, NGAYDAY, TUTIET, ĐENTIET, BAIDAY, GHICHU)
c. Cho biết số lượng giáo viên (SOLUONGGV) của mỗi khoa, kết quả cần sắp xếp tăng dần theo cột tên khoa. yêu cầu: TENKHOA ,SOLUONGGV (SOLUONGGV là thuộc tính tự đặt)
3. Lược đồ cơ sở dữ liệu của bài toán quản lý các kỳ thi được cho như sau:
THISINH(MASV,HOTEN, NGAYSINH, MALOP) LOP(MALOP,TENLOP,MAKHOA)
KHOA(MAKHOA,TENKHOA,ĐIENTHOAI) MONTHI(MAMT,TENMONTHI)
KETQUA(MASV,MAMT,ĐIEMTHI)
Dựa vào lược đồ cơ sở dữ liệu trên, hãy thực hiện các yêu cầu sau bằng ngôn ngữ SQL: a. Hãy cho biết số lượng thí sinh của mỗi khoa đăng ký thi giỏi nghề, cần sắp xếp kết quả theo
chiều tăng dần của cột TENKHOA.
b. Lập danh sách những thí sinh đạt danh hiệu giỏi nghề (Thí sinh đạt danh hiệu giỏi nghề nếu thí sinh không có môn thi nào điểm dưới 8).
c. Lập danh sách những thí sinh nhỏ tuổi nhất có mã khoa là “CNTT” dự thi giỏi nghề.
4. Cho Lược đồ cơ sở dữ liệu quản lý nhân viên của một công ty như sau:
Nhanvien(MANV,HOTEN, NU,NGAYSINH,LUONG,MAPB, MACV)
Phongban(MAPB,TENPB,TRUSO,MANVPHUTRACH,KINHPHI,DOANHT HU)
Chucvu(MACV,TENCV,LUONGTHAPNHAT,LUONGCAONHAT)
Hãy biểu diễn các câu hỏi sau bằng SQL
a. Lập danh sách gồm các thông tin về các phòng ban trong công ty như: mã số phòng ban, tên
phòng ban, địa điểm trụ sở, mã số người phụ trách, kinh phí hoạt động, doanh thu.
b. Lập danh sách những nhân viên sinh nhật trong tháng 10
c. Lập danh sách gồm các thông tin mã số nhân viên, họ và tên và lương cả năm của các nhân viên (giả sử rằng luơng cả năm =12*lương)
d. Lập những phòng ban có kinh phí hoạt động cao nhất.
e. Lập danh sách nhân viên của phòng ban có mã số phòng ban là 40.
f. Lập danh sách nhân viên của phòng có mã số phòng ban 10,30,50.
g. Lập danh sách các nhân viên có lương tháng từ 2.500.000 đến 4.000.000 h. Tìm những nhân viên có tuổi cao nhất thuộc phòng ban có MAPB là 10
i. Lập danh sách các nhân viên của phòng 10,30,50. kết quả in ra theo thứ tự tăng dần của mã phòng nếu trùng mã phòng thì sắp xếp giảm dần theo mức lương.
k. Lập danh sách các nhân viên phòng 10,30,50, chỉ in ra những người là lãnh đạo của mỗi phòng ban này.
l. lập danh sách gồm mã phòng mà người có mức lương cao nhất của phòng lớn hơn hoặc bằng 4.000.000
m. Lập mã phòng ban, tên phòng ban, họ và tên của lãnh đạo phòng tương ứng.
n. Lập danh sách những người làm việc cùng phòng với ông Nguyen Van Thanh
o. Lập biết mã số nhân viên, họ và tên, mức lương của người lãnh đạo ông Nguyen Van Thanh.
p. Lập danh sách nhân viên có mức lương lớn hơn hay bằng mức lương cao nhất của phòng ông Nguyen Van Thanh.
MỤC LỤC
Trang Chương 1: MỘT SỐ KHÁI NIỆM CƠ BẢN...1 1.1.CÁC KHÁI NIỆM CƠ BẢN...1 1.2. KIẾN TRÚC CỦA 1 HỆ CSDL...2