HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH
VIỄN THÔNG
BÀI TẬP LỚN
MÔN: CƠ SỞ DỮ LIỆU
ĐỀ TÀI: COI THI TUYỂN SINH
HỌ TÊN: ĐỖ XUÂN TÌNH
LỚP:D10CN1
I. Mô tả bài toán
- Vấn đề đƣợc đặt ra là quản lý coi thi tuyển sinh có nhiều địa điểm thi (DIADIEMTHI), mỗi
địa điểm thi lại có tên điểm thi đƣợc đánh số (DIEMTHISO) bao nhiêu, địa chỉ điểm thi
(DIACHIDIEMTHI) và phòng thi (PHONG).
- Với mỗi thí sinh (THISINH) có một số báo danh (SOBD) duy nhất, họ và tên (HOTEN),
ngày sinh (NGAYSINH), giới tính (GT), hộ khẩu thƣờng trú (TINH), đối tƣợng dự thi
(DOITUONG), khu vực của thí sinh (KHUVUC).
- Mỗi ngành (NGANH) có một mã ngành (MANGANH) và tên ngành (TENNGANH) duy
nhất, mỗi thí sinh có thể đăng ký một ngành.
-Mỗi môn thi (MONTHI) có mã môn thi (MAMT),tên môn thi (TENMT),ngày thi
(NGAYTHI), buổi thi (BUOITHI), thời gian thi (PHUT). Thí sinh có thể thi nhiều môn thi.
-Mỗi cán bộ (CANBO) coi thi chỉ làm việc tại một điêm thi nào đó. Từng cán bộ có mã số
duy nhất (MACB), họ và tên cán bộ (HOTENCB), đơn vị công tác (DONVI), chức vụ
(CHUCVU) đƣợc phân công tại điểm thi nhƣ cán bộ coi thi,giám sát…
-Mỗi đơn vị (DONVI) có cán bộ tham gia vào kỳ thi có mã đơn vị duy nhất (MADONVI),
tên đơn vị (TENDONVI).
II. Xác định các thực thể
Các thực thể:
Địa điểm thi gồm các thuộc tính:
Điểm thi số
Địa chỉ điểm thi
Phòng
Thí sinh gồm các thuộc tính:
Số báo danh, họ tên
Ngày sinh, giới tính
Đối tƣợng dự thi
Hộ khẩu thƣờng trú
Khu vực
Ngành gồm các thuộc tính:
Mã ngành
Tên ngành
Môn thi gồm các thuộc tính:
Mã môn thi
Tên môn thi
Ngày thi
Buổi thi
Thời gian thi
Cán bộ gồm các thuộc tính:
Mã cán bộ
Tên cán bộ
Chức vụ
Đơn vị gồm các thuộc tính:
Mã đơn vị
Tên đơn vị
III. Mô hình quan hệ thực thể
NGANH
CANBO
DIADIEMTHI
THISINH
MONTHI
Địa chỉ
điểm thi
Điểm thi
số
Phòng
Số báo
danh
Họ tên
Ngày sinh
Giới tính
Đối tƣợng
dự thi
Hộ khẩu
thƣờng trú
Khu vực
Tên ngành
Mã ngành
Chức vụ
Mã cán bộ
Tên cán bộ
Thời gian thi
Buổi thi
Ngày thi
Tên môn thi
Mã môn thi
Thi tại
Đăng ký
Trông coi
Coi thi
Làm việc
Đơn vị
Mã đơn vị
Tên đơn vị
Thuộc
DIADIEMTHI
#DiemThiSo
DiaChiDiemThi
Phong
MaCanBo
CANBO
#MaCanBo
TenCanBo
ChucVu
MaDonvi
IV. Chuyển đổi mô hình thực thể liên kết sang mô hình quan hệ
ĐONVI
#MaDonVi
TenDonVi
THISINH
#SoBaoDanh
HoTen
GioiTinh
HoKhau
NgaySinh
DoiTuong
KhuVuc
DiemThiSo
MaCanBo
MaNganh
Monthi
MONTHI
#MaMonThi
TenMonThi
NgayThi
BuoiThi
ThoiGianThi
#SoBaoDanh
TRONGCOI
#MaCanBo
#MaMonThi
NGANH
#MaNganh
TenNganh
Bảng trên là thực hiện chuyển mô hình thực thể liên kết sang mô hình quan hệ
bằng MySQL
V. 10 câu hỏi truy vấn
Query 1: Tìm tên tất cả các thí sinh đăng ký ngành điện tử viễn thông:
Biểu thức truy vấn:
result= π
(Thisinh.Hoten)
(
(Tennganh= dien tu vien thong)
(thisinh×nganh))
Query 2: Tìm tên tất cả thí sinh ở khu vực 2 nông thôn có giới tính là nữ:
Biểu thức truy vấn:
result= π
(Hoten)
(
((Khuvuc= nongthon)
AND
(Gioitinh=nu))
(thisinh))
Query 3: Tìm tên tất cả các cán bộ trông coi môn tiếng anh tại điểm thi số3:
Biểu thức truy vấn:
result= π
(canbo.Tencanbo)
(
(monthi.Tenmonthi= tienganh)
AND
(diadiemthi diemthiso= 3)
(canbo×monthi×diadiemthi))
Query 4: Tìm tên các thí sinh nam thi tại phòng 12
Biểu thức truy vấn:
result= π
(Thisinh.Hoten)
(
((thisinh.Gioitinh= nam)
AND
(diadiemthi.phong= 12))
(thisinh×diadiemthi))
Query 5: Tìm số báo danh và tên thí sinh dự thi sinh năm 1992 :
Biểu thức truy vấn:
result= π
(Sobaodanh#,Hoten)
(
(year(Ngaysinh)= 1992)
(thisinh))
Query 6: Tìm thí sinh có hộ khẩu thƣờng trú ở Hà Nội sinh trƣớc năm 1992.
Biểu thức truy vấn:
result= π
(thisinh)
(
((Hokhau= HaNoi)
AND
(year(Ngaysinh)<1992))
(thisinh))
Query 7:Tìm tên các thí sinh thi môn lý có giới tính là nữ thuộc đối tƣợng 5B
Biểu thức truy vấn:
result= π
(thisinh.hoten)
(
(monthi.Tenmonthi= ly)
AND
(Thisinh.doituong=5B))
(thisinh×Monthi))
Query 8: Tìm tên những cán bộ làm điểm trƣởng thuộc đơn vị PTTH Nguyễn Trãi
Biểu thức truy vấn:
result= π
(canbo.Tencanbo)
(
(Chucvu.= diemtruong)
AND
(donvi.Tendonvi=PTTH NguyenTrai))
(canbo×donvi))
Query 9: Tìm thí sinh có hộ khẩu thƣờng trú ở Hà Nội hoặc ở Nam Định
Biểu thức truy vấn:
result= π
(Thisinh)
(
((Hokhau= HaNoi)
OR
(Hokhau= NamDinh))
thisinh)
Query 10: Tìm tên tất cả các địa chỉ điểm thi nằm tại địa bàn quận Hà Đông hoặc
quận Đống Đa.
Biểu thức truy vấn:
result= π
(Diadiemthi)
(
((Diachidiemthi= HaDong)
OR
(Diachidiemthi= DongDa))
Diadiemthi)
VI. Xác định các phụ thuộc hàm F trên từng lược đồ quan hệ và đưa về
dạng chuẩn 3 :
1.Xét quan hệ Diadiemthi có
(#Diemthiso(A)),Diachidiemthi(B),Phong(C),Hoten(D ) với tập các phụ thuộc hàm
F={A→BCD} và tập khóa M1={A}
Ta thấy không có thuộc tính không khóa nào (B, C, D) phụ thuộc hàm bắc cầu
vào 1 khóa của quan hệ này. Vậy quan hệ Diadiemthi ở dạng chuẩn 3.
2. Xét quan hệ Thisinh có:
(#Sobaodanh(A),Hoten(B),Gioitinh(C),Hokhau(D),Ngaysinh(E),Doituong(F),
Khuvuc(G))
Với tập phụ thuộc hàm F1=( A→BCDEFG) và tập khóa M2={A}
Không có thuộc tính không khóa nào (B,C,D,E,F,G) phụ thuộc bắc cầu vào khóa A
Vậy quan hệ thí sinh ở dạng 3NF
3. Xét quan hệ Monthi có
(#Mamonthi(A),Tenmonthi(B),Ngaythi(C),Buoithi(D),Thoigianthi(E))
Với tập phụ thuộc hàm F3={ A→BCDE, CD→B} và tập khóa M3={A}
Thuộc tính không khóa B phụ thuộc bắc cầu vào thuộc tính khóa A.Do đó, quan hệ
Monthi không ở dạng 3NF.
Đƣa về dạng 3NF
Quan hệ Monthi đƣợc tách thành 2 lƣợc đồ con
Monthi1(ABCDE) khóa A, phụ thuộc hàm F3={ A →BCDE }
Monthi2(CDE) khóa CD, phụ thuộc hàm F4={CD→B}
4. Xét quan hệ Nganh có
(#Manganh(A),Tennganh(B))
Với tập phụ thuộc hàm F5={A→B} và tập khóa M4={A}
Không có thuộc tính không khóa nào phụ thuộc bắc cầu vào thuộc tính khóa A
Do đó quan hệ Nganh ở dạng 3NF.
5.Xét quan hệ Donvi có
(#Madonvi(A),Tendonvi(B))
Với tập phụ thuộc hàm F6={A→B} và tập khóa M5={A}
Không có thuộc tính không khóa nào phụ thuộc bắc cầu vào thuộc tính khóa A
Do đó quan hệ Nganh ở dạng 3NF.
6. Xét quan hệ Canbo có
(#Macanbo(A),Tencanbo(B),Chucvu(C))
Với tập phụ thuộc hàm F7={A→BC} và tập khóa M6={A}
Không có thuộc tính không khóa nào phụ thuộc bắc cầu vào thuộc tính khóa A
Do đó quan hệ Nganh ở dạng 3NF.
VII. Thực hiện 10 câu hỏi truy vấn bằng SQL
1.Tìm tên tất cả các thí sinh đăng ký ngành điện tử viễn thông
SELECT Hoten
FROM Thisinh
WHERE Tennganh=”dientuvienthong”;
2. Tìm tên tất cả thí sinh ở khu vực 2 nông thôn có giới tính là nữ
SELECT Hoten
FROM Thisinh
WHERE Khuvuc=”2 nongthon” AND gioitinh=”Nu”;
3. Tìm tên tất cả các cán bộ trông coi môn tiếng anh tại điểm thi số 3
SELECT Canbo.Tencanbo
FROM Canbo, Monthi, Diadiemthi
WHERE Monthi.Tenmonthi=”tienganh” AND Diadiemthi.Diemthiso=”3”;
4. Tìm tên các thí sinh nam thi tại phòng 12
SELECT Hoten
FROM Thisinh
WHERE Gioitinh=”nam” AND Phong=”12”;
5. Tìm số báo danh và tên thí sinh dự thi sinh năm 1992
SELECT Sobaodanh, Hoten
FROM Thisinh
WHERE YEAR(Ngaysinh)=”1992”;
6. Tìm thí sinh có hộ khẩu thƣờng trú ở Hà Nội sinh trƣớc năm 1992
SELECT Hoten
FROM Thisinh
WHERE Hokhau=”hanoi” AND YEAR(Ngaysinh)<1992;
7.Tìm tên các thí sinh thi môn lý có giới tính là nữ thuộc đối tƣợng 5B
SELECT Thisinh.Hoten
FROM Thisinh, Monthi
WHERE Monthi.Tenmonthi=”ly” AND Thisinh.Gioitinh=”nu” AND
Thisinh.Doituong=”5B” AND
Thisinh.Mamonthi=Monthi.Mamonthi;
Query 8: Tìm tên những cán bộ làm điểm trƣởng thuộc đơn vị PTTH Nguyễn Trãi
SELECT Canbo.Tencanbo
FROM Canbo, Donvi
WHERE Donvi.Chucvu=”diemtruong” AND Donvi.Tendonvi=”PTTH
nguyentrai” AND Canbo.Madonvi=Donvi.Madonvi;
Query 9: Tìm thí sinh có hộ khẩu thƣờng trú ở Hà Nội hoặc ở Nam Định
SELECT Hoten
FROM Thisinh
WHERE Hokhau=”hanoi” OR Hokhau=”namdinh”;
10.Tìm tên tất cả các địa chỉ điểm thi tại địa bàn quận Hà Đông hoặc quận Đống
Đa.
SELECT Diachidiemthi
FROM Diadiemthi
WHERE Diachidiemthi=”hadong” OR Diachidiemthi=”dongda”;