KỲ THI TỐT NGHIỆP CỬ NHÂN CNTTQM NĂM 2010 Môn: CHUYÊN NGÀNH Thời gian làm bài: 180 phút (Không được sử dụng tài liệu) ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN Ngày thi:................................ ----------------

ĐỀ SỐ 3

Phần 2: CƠ SỞ DỮ LIỆU

Cho lược đồ CSDL quản lý nhân viên gồm các quan hệ sau:

NHANVIEN (MaNV, HoTen, NgSinh, DChi, GioiTinh, Luong, Ma_NGS, MaPhong) Tân từ: Mỗi nhân viên có mã số duy nhất để phân biệt với các nhân viên khác (MaNV), có họ và tên (HoTen), ngày sinh (NGSINH), địa chỉ (DCHI), giới tính, có một mức lương cơ bản (LUONG), chịu sự giám sát trực tiếp của một nhân viên khác (Ma_NGS – ghi mã nhân viên được giám sát) và thuộc một phòng (MaPhong) nào đó trong công ty.

PHONGBAN (MaPB, TenPhong, TrPHG, NgNhanChuc)

Tân từ: Mỗi phòng ban có mã số duy nhất để phân biệt với các phòng ban khác (MaPB), có tên phòng (TenPhong), cử ra một người làm trưởng phòng (TrPHG – ghi mã nhân viên được cử là trưởng phòng), và ghi nhận ngày nhận chức trưởng phòng của người đó (NgNhanChuc)

DEAN (MaDA, TenDA, MaPhong, NgayBD, NgayKT)

Tân từ: Mỗi đề án có một mã số duy nhất để phân biệt với các đề án khác (MaDA), có tên đề án (TenDA), và do một phòng duy nhất phụ trách (MaPhong). Mỗi đề án có ngày bắt đầu (NgayBD) và ngày kết thúc (NgayKT) đề án.

PHANCONG (MaNV, MaDA, ThoiGian)

Tân từ: Mỗi nhân viên (MaNV) có thể được phân công vào một hay nhiều đề án (MaDA) do phòng mình phụ trách với lượng thời gian tham gia đề án được tính bằng giờ làm việc trong 1 tuần (ThoiGian).

Câu 1: Mô tả chặt chẽ ràng buộc toàn vẹn sau: (1.0 điểm) Mỗi nhân viên không được tham gia quá 3 đề án.

Câu 2: Thực hiện câu truy vấn sau bằng đại số quan hệ: (0.75 điểm) Cho biết thông tin về các phòng có các đề án được triển khai năm 2010. Thông tin gồm: Họ tên trưởng phòng, tên đề án ngày bắt đầu triển khai đề án.

Câu 3: Thực hiện câu truy vấn sau bằng SQL: (0.75 điểm) Cho biết Họ tên trưởng phòng, tên phòng ban, tên đề án và ngày bắt đầu triển khai đề án của các đề án được triển khai năm 2010.

Câu 4: Thực hiện câu truy vấn sau bằng SQL: (1.0 điểm) Cho biết tên phòng và số lượng nhân viên của phòng có ít nhân viên nhất.

-----HẾT-----

KỲ THI TỐT NGHIỆP CỬ NHÂN CNTTQM NĂM 2010 Môn: CHUYÊN NGÀNH Thời gian làm bài: 180 phút (Không được sử dụng tài liệu) ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN Ngày thi:................................ ----------------

ĐỀ SỐ 3

ĐÁP ÁN Phần 2: CƠ SỞ DỮ LIỆU

Câu 1: (1.0 điểm) * Nội dung:

Mỗi nhân viên không được tham gia quá 3 đề án. (cid:0)t ∈ NHANVIEN, Sum(u.MaDA | u ∈ PHANCONG(cid:0)u.MaNV=t.MaNV) <=3

* Bối cảnh: NHANVIEN, PHANCONG * Loại RBTV: Ràng buộc toàn vẹn thuộc tính tổng hợp. * Bảng tầm ảnh hưởng:

Thêm

Xóa

Sửa

NHANVIEN PHANCONG

- + (MaNV)

- -

- + (MaNV)

MaNV, TrPHG R2)

MaPB, MaPhongR4 )

Câu 2: (0.75 điểm) R1 Π MaNV, Hoten(NHANVIEN) R2 Π MaPB, TenPhong, TrPHG(PHONGBAN) R3 (MaPB, HoTen, TenPhong) Π MaPB, HoTen, TenPhong(R1 R4 TenDA, MaPhong, NgayBD(Πyear(NgayBD)=2010DEAN) R(HotenTP, TenPhong, TenDA, NgayBD)Π Hoten,TenPhong,TenDA,NgayBD(R3 Câu 3: (0.75 điểm) Cách 1: SELECT HoTen AS 'Ho Ten TP', TenPhong, TenDA, NgayBD FROM NHANVIEN AS nv, PHONGBAN AS pb, DEAN AS da WHERE (nv.MaNV=pb.TrPHG) AND (da.MaPhong=pb.MaPB) AND (Year(NgayBD)=2010);

Cách 2: SELECT HoTen AS ['Ho Ten TP'], TenPhong, TenDA, NgayBD FROM NHANVIEN AS nv, PHONGBAN AS pb, DEAN AS da WHERE (nv.MaNV=pb.TrPHG) AND (da.MaPhong=pb.MaPB) AND (NgayBD>=#1/1/2010#) AND (NgayBD<=#31/12/2010#)

Cách 3: SELECT HoTen AS 'Ho Ten TP', TenPhong, TenDA, NgayBD FROM (Nhanvien AS nv INNER JOIN PhongBan AS pb ON nv.MaNV=pb.TRPHG) INNER

JOIN DEAN as da ON pb.MaPB = da.MaPhong

WHERE year(NgayBD)=2010

Câu 4: (1.0 điểm) Cách 1: SELECT TenPhong, count(MaNV) AS SoNV FROM NHANVIEN AS nv, PHONGBAN AS pb WHERE nv.MaPhong=pb.MaPB GROUP BY TenPhong HAVING Count(MANV) <=ALL

(SELECT Count(MaNV) FROM NHANVIEN AS nv, PHONGBAN AS pb WHERE nv.MaPhong=pb.MaPB GROUP BY MaPB );

Cách 2: SELECT TenPhong, count(MaNV) AS SoNV FROM NHANVIEN AS nv Inner join PHONGBAN AS pb ON (nv.MaPhong=pb.MaPB) GROUP BY TenPhong HAVING Count(MANV) <=ALL (SELECT Count(MaNV) FROM NHANVIEN AS nv Inner join PHONGBAN AS pb ON (nv.MaPhong=pb.MaPB) GROUP BY TenPhong );

Lưu ý : Nếu thí sinh làm bài không theo dàn ý như mỗi câu trong đáp án, nhưng đủ ý và chính xác thì vẫn được điểm tối đa theo thang điểm đã qui định.

-----HẾT-----