6. Bố cục luận văn
2.1.3. Mô hình quan hệ
Từ mô hình ER có được ở Hình 2.1, chuyển mô hình này sang mô hình quan hệ ta được mô hình cơ sở dữ liệu của hệ thống như Hình 2.2.
Hình 2.2. Mô hình quan hệ 2.1.4. Mô tả chi tiết thiết kế các bảng
Mô tả chi tiết thiết kế của các bảng trong CSDL như Bảng 2.1.
Bảng 2.1. Mô tả chi tiết các bảng trong CSDL quản lý đào tạo
Bảng Cột Kiểu dữ liệu Ghi chú
GIANGVIEN MaGV int Khóa chính
HoDemGV nvarchar(30) Họ đệm
TenGV nvarchar(10) Tên giáo viên
HocHam nvarchar(20) Học hàm
HocVi nvarchar(20) Học vị
MaKhoa int Khóa ngoài
SINHVIEN MaSV nvarchar(12) Khóa chính
HoDem nvarchar(30) Họ đệm
Bảng Cột Kiểu dữ liệu Ghi chú
NgaySinh date Ngày sinh
GioiTinh bit Giới tính
MaLop int Khóa ngoài
DaTN bit Đã tốt nghiệp
KHOA MaKhoa int Khóa chính
TenKhoa nvarchar(30) Tên khoa
HEDAOTAO MaHe int Khóa chính
TenHe nvarchar(30) Tên hệ đào tạo
NGANH MaNg int Khóa chính
TenNg nvarchar(30) Tên ngành học
MaHe int Khóa ngoài
MaKhoa int Khóa ngoài
LOP MaLop int Khóa chính
TenLop nvarchar(30) Tên lớp
MaNg int Khóa ngoài
KyHT int Học kỳ hiện tại
LOPHOCPHAN MaLopHP int Khóa chính
MaGV int Khóa ngoài
MaMH int Khóa ngoài
MaHK int Khóa ngoài
TrangThai bit Trạng thái
MONHOC MaMH int Khóa chính
TenMH nvarchar(30) Tên môn học
SoTC int Số tín chỉ
MHTruoc int Môn phải học trước
LaBB bit Bắt buộc/tự chọn
CHUONGTRINH KyThu int Kỳ học
MaMH int Khóa chính,
Khóa ngoài
MaNg int
HOC MaSV nvarchar(12) Khóa chính,
Khóa ngoài
MaLopHP int
DiemThi int Điểm thi
DiemTP int Điểm thành phần
Cuoi bit Là điểm cuối cùng
NAMHOC MaNH int Khóa chính
2.2. Mô tả các chức năng của hệ thống
2.2.1. Sơ đồ chức năng tổng quát
Hệ thống thực tế có nhiều chức năng. Sau đây là sơ đồ chức năng tổng quát đã được lược bỏ các chức năng phụ.
2.2.2. Mô tả chi tiết các chức năng
Sau đây, luận văn mô tả chi tiết (biểu đồ tuần tự) của các chức năng thường xuyên trong hệ thống.
a) Tạo học phần:
b) Đăng ký học phần
c) Hủy đăng ký học phần
d) Nhập điểm thành phần
e) Nhập điểm thi
Hình 2.8. Biểu đồ tuần tự nhập điểm thi
f) Xem điểm
g) Lọc danh sách xét học bổng
Hình 2.10. Biểu đồ tuần tự lọc danh sách xét học bổng
h) Lọc danh sách nợ học phần
2.3. Các chức năng sẽ ứng dụng KNT
Các chức năng sẽ ứng dụng KNT là các chức năng mà việc tạo ra dữ liệu sử dụng phải được tính toán nhiều/phức tạp làm tốn nhiều thời gian hoặc bị truy cập đồng thời với số lượng lớn người dùng.
2.3.1. Đăng ký học phần
- Mô tả quá trình thao tác dữ liệu của chức năng: Gồm 2 quá trình + Quá trình 1: lấy danh sách học phần có thể đăng ký
Dữ liệu vào: Masv, KyThu
Dữ liệu ra: Danh sách các lớp học phần mà sinh viên có thể đăng ký: ds
Xử lý: - Danh sách lớp học phần đang mở có thể đăng ký bổ sung: A TrangThai = true count(MaSV)<50 (LOPHOCPHAN)
- Danh sách các môn học có lớp đang mở: B MONHOC.* (A MONHOC)
- Các môn học trong kỳ hiện tại của sinh viên masv:
C MONHOC.* ((SINHVIEN.MaSV = masv KyHT = KyThu) (SINHVIEN
LOP NGANH CHUONGTRINH MONHOC)) - Các môn học mà sinh viên masv đã học:
D MONHOC.* ( SINHVIEN.MaSV = masv (SINHVIEN HOC
LOPHOCPHAN MONHOC))
- Các môn học mà sinh viên masv còn nợ hoặc được phép cải thiện: E MONHOC.* ( (MaSV = masv (DiemTP*0.4 + DiemThi*0.6)<5.5) Cuoi=1
(SINHVIEN HOC LOPHOCPHAN MONHOC)) - Các môn học mà sinh viên masv được phép học vượt:
F MHTruoc in D.MaMH (MONHOC)
- Danh sách môn học mà sinh viên masv được đăng ký: G B (C E F)
- Danh sách các lớp học phần mà sinh viên có thể đăng ký: H MaMH in G.MaMH (A)
ds = H SELECT dbo.LOPHOCPHAN.* FROM dbo.LOPHOCPHAN WHERE ( (TrangThai = 1) AND (dbo.LOPHOCPHAN.MaLopHP in (
select dbo.LOPHOCPHAN.MaLopHP FROM dbo.LOPHOCPHAN INNER JOIN
dbo.HOC ON dbo.LOPHOCPHAN.MaLopHP = dbo.HOC.MaLopHP GROUP BY dbo.LOPHOCPHAN.MaLopHP HAVING (count(MaSV)<50)) ) AND dbo.LOPHOCPHAN.MaMH in ( SELECT dbo.MONHOC.MaMH
FROM dbo.LOPHOCPHAN INNER JOIN
dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH WHERE (dbo.LOPHOCPHAN.TrangThai = 1) INTERSECT ( SELECT dbo.MONHOC.MaMH FROM dbo.SINHVIEN INNER JOIN
dbo.LOP ON dbo.SINHVIEN.MaLop = dbo.LOP.MaLop INNER JOIN
dbo.NGANH ON dbo.LOP.MaNg = dbo.NGANH.MaNg INNER JOIN
dbo.CHUONGTRINH ON dbo.NGANH.MaNg = dbo.CHUONGTRINH.MaNg INNER JOIN
dbo.MONHOC ON dbo.CHUONGTRINH.MaMH = dbo.MONHOC.MaMH
WHERE (dbo.LOP.KyHT - dbo.CHUONGTRINH.KyThu = 0) AND (dbo.SINHVIEN.MaSV = masv)
SELECT dbo.MONHOC.MaMH FROM dbo.SINHVIEN INNER JOIN
dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN
dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN
dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH
WHERE (dbo.SINHVIEN.MaSV = masv) AND (dbo.HOC.Cuoi = 1) AND (dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6 < 5.5) UNION
SELECT dbo.MONHOC.MaMH FROM dbo.MONHOC
WHERE dbo.MONHOC.MAMH in ( SELECT dbo.MONHOC.MaMH FROM dbo.SINHVIEN INNER JOIN
dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN
dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN
dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH WHERE (dbo.HOC.Cuoi = 1) ) ) ) )
+ Quá trình 2: đăng ký lớp học phần
Dữ liệu vào: masv, danh sách lớp học phần đăng ký ds
Dữ liệu ra: Thông báo kết quả đăng ký tb
Xử lý: - Tính tổng số tín chỉ tong mà sv đăng ký: tong Sum(SoTC) (ds MONHOC)
Nếu tong phù hợp thì chấp nhận đăng ký, tb = ‘Thành công’. Ngược lại, không chấp nhận đăng ký, tb = ‘Số tín chỉ đăng ký không phù hợp’
SQL truy vấn số tín chỉ đăng ký
SELECT SUM(dbo.MONHOC.SoTC) AS tong FROM dbo.LOPHOCPHAN INNER JOIN
dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH
WHERE (dbo.LOPHOCPHAN.MaLopHP IN (ds)) - Nhận xét:
+ Vào đợt đăng ký lớp học phần, sinh viên toàn trường tập trung đăng ký/hủy đăng ký làm tạo ra một lượng lớn user truy cập đồng thời.
+ Để có được danh sách lớp học phần mà sinh viên có thể đăng ký, chương trình phải tính nhiều dữ liệu trung gian, đặc biệt là tính các môn học: sinh viên đã học, sinh viên còn nợ hoặc được phép học cải thiện và các môn học được phép học vượt. Các phép tính này dùng nhiều phép nối (). Trong đó phép tính các môn học sinh viên còn nợ hoặc được phép học cải thiện phải dùng thêm phép thống kê (Max).
- Tiểu kết: Chức năng đăng ký học phần cần được hỗ trợ KNT.
2.3.2. Hủy đăng ký học phần
- Mô tả quá trình thao tác dữ liệu của chức năng: Gồm 2 quá trình + Quá trình 1: lấy danh sách học phần có thể hủy đăng ký
Dữ liệu vào: masv
Dữ liệu ra: Danh sách các lớp học phần mà sinh viên có thể hủy đăng ký: ds
Xử lý: - Danh sách các lớp học phần mà sinh viên masv đang đăng ký A LOPHOCPHAN.* ( SINHVIEN.MaSV = masv TrangThai = 1 (SINHVIEN
HOC LOPHOCPHAN)) ds = A SQL truy vấn danh sách học phần mà sinh viên SELECT dbo.LOPHOCPHAN.*
FROM dbo.SINHVIEN INNER JOIN
dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN
masv đang đăng ký
dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP
WHERE (dbo.LOPHOCPHAN.TrangThai = 1) AND (dbo.SINHVIEN.MaSV = masv )
+ Quá trình 2: hủy đăng ký lớp học phần
Dữ liệu vào: masv, danh sách lớp học phần còn lại sau hủy đăng ký ds Dữ liệu ra: Thông báo kết quả hủy đăng ký tb
Xử lý: Tính tổng số tín chỉ còn lại tong sau khi sv hủy đăng ký:
tong Sum(SoTC) (LOPHOCPHAN.MaLopHP in ds (LOPHOCPHAN
MONHOC))
Nếu tong phù hợp thì chấp nhận đăng ký, tb = ‘Thành công’. Ngược lại, không chấp nhận đăng ký, tb = ‘Không thể hủy đăng ký quá số tín chỉ cho phép’
SQL truy vấn số tín chỉ hủy đăng ký
SELECT SUM(dbo.MONHOC.SoTC) AS tong
FROM dbo.LOPHOCPHAN INNER JOIN
dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH
WHERE (dbo.LOPHOCPHAN.MaLopHP IN (ds)) - Nhận xét:
+ Vào đợt đăng ký lớp học phần, sinh viên toàn trường tập trung đăng ký/hủy đăng ký làm tạo ra một lượng lớn user truy cập đồng thời.
+ Sử dụng 02 phép nối () trong câu truy vấn xử lý dữ liệu. - Tiểu kết: Nên hỗ trợ KNT cho chức năng hủy đăng ký học phần
2.3.3. Xem điểm
- Mô tả quá trình thao tác dữ liệu của chức năng xem điểm: Dữ liệu vào: masv
Dữ liệu ra: Danh sách kết quả điểm ds, số tín chỉ tích lũy sotctl, điểm trung bình tích lũy diemtbtl
Xử lý: - Danh sách điểm chưa tính điểm học phần:
A SINHVIEN.MaSV = masv (SINHVIEN HOC
LOPHOCPHAN MONHOC HOCKY NAMHOC) - Danh sách điểm đã tính điểm học phần:
B A.*, diemtbDiem4(DiemTP*0.4+DiemThi*0.6)(A) ds = B
- Số tín chỉ tích lũy, điểm trung bình tích lũy:
C sotctlSum(SoTC),tongdiemtbSum(diemtb)(Cuoi = true (B)) - Điểm trung bình tích lũy:
D diemtbtl (tongdiemtb/sotctl) (C) SQL truy
vấn danh sách điểm hiện tại của sinh viên
SELECT dbo.SINHVIEN.MaSV, dbo.SINHVIEN.HoDem, dbo.SINHVIEN.TenSV, dbo.MONHOC.TenMH, dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6 AS diem,
CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END AS diemtb
FROM dbo.SINHVIEN INNER JOIN
dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN
dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN
dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH
WHERE (dbo.HOC.Cuoi = 1) AND (dbo.SINHVIEN.MaSV =
masv)
SQL truy vấn số tín chỉ tích lũy, điểm tich lũy của sinh viên
SELECT dbo.SINHVIEN.MaSV, dbo.SINHVIEN.HoDem, dbo.SINHVIEN.TenSV, dbo.MONHOC.TenMH, dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6 AS diem,
CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END AS diemtb, SUM(dbo.MONHOC.SoTC)
AS sotctl, SUM((CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END) * dbo.MONHOC.SoTC)
/ SUM(dbo.MONHOC.SoTC) AS diemtbtl FROM dbo.SINHVIEN INNER JOIN
dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN
dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN
dbo.MONHOC.MaMH
WHERE (dbo.HOC.Cuoi = 1)
GROUP BY dbo.SINHVIEN.MaSV, dbo.SINHVIEN.HoDem, dbo.SINHVIEN.TenSV, dbo.MONHOC.TenMH, dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6
HAVING (dbo.SINHVIEN.MaSV = masv) - Nhận xét:
+ Để xem được bảng điểm, chương trình phải thực hiện 05 phép nối.
+ Để có được số tín chỉ tích lũy, điểm trung bình tích lũy, chương trình phải thực hiện thêm 02 phép thống kê (Sum).
- Tiểu kết: chức năng xem điểm cần được hỗ trợ KNT.
2.3.4. Lọc danh sách xét học bổng
- Chức năng này chỉ lọc danh sách điểm của những sinh viên đủ tiêu chí xét học bổng học tập trong năm học cụ thể. Từ danh sách này, Khoa, Phòng CT HSSV sẽ xem xét lại, cân đối, chọn lọc để cấp học bổng học tập.
- Mô tả quá trình thao tác dữ liệu của chức năng lọc danh sách xét học bổng: Dữ liệu vào: manh
Dữ liệu ra: Danh sách xét cấp học bổng ds
Xử lý: - Danh sách điểm chưa tính điểm học phần:
A NAMHOC.MaNH = manh (SINHVIEN HOC
LOPHOCPHAN MONHOC HOCKY NAMHOC
LOP NGANH KHOA) - Danh sách điểm đã tính điểm học phần: B A.*, diemtbDiem4(DiemTP*0.4+DiemThi*0.6)(A) - Danh sách sinh viên đạt đạt điều kiện:
C Min(diemtb)≥1.0 Average(diemtb)≥ 2.5 Sum(SoTC) ≥ 15 (B) - Danh sách sau sắp xếp:
D Sort MaKhoa Asc, MaLop Asc, diemtbnh Desc( diemtbnh(Sum(diemtb)/Sum(SoTC)) (C)) ds = D SQL truy vấn danh sách xét cấp học bổng
SELECT TOP (100) PERCENT dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6 AS diem,
CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1
ELSE 0 END AS diemtb, dbo.SINHVIEN.MaSV,
SUM(dbo.MONHOC.SoTC) AS sotctl, SUM(CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END) * 'dbo.MONHOC.SoTC)' /
SUM(dbo.MONHOC.SoTC) AS diemtbtl,
dbo.LOPHOCPHAN.MaMH, dbo.SINHVIEN.HoDem,
dbo.SINHVIEN.TenSV, dbo.KHOA.MaKhoa, dbo.NGANH.MaNg, dbo.LOP.MaLop FROM dbo.SINHVIEN INNER JOIN
dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN
dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN
dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH INNER JOIN
dbo.LOP ON dbo.SINHVIEN.MaLop = dbo.LOP.MaLop INNER JOIN
dbo.NGANH ON dbo.LOP.MaNg = dbo.NGANH.MaNg INNER JOIN
dbo.KHOA ON dbo.NGANH.MaKhoa = dbo.KHOA.MaKhoa
GROUP BY dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6,
dbo.SINHVIEN.MaSV, dbo.LOPHOCPHAN.MaMH,
dbo.SINHVIEN.HoDem, dbo.SINHVIEN.TenSV,
dbo.KHOA.MaKhoa,
dbo.NGANH.MaNg, dbo.LOP.MaLop
HAVING (dbo.LOPHOCPHAN.MaMH = 123) AND (MIN(CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END)
> 0) AND (SUM(CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END)
SUM(dbo.MONHOC.SoTC) >= 2.5)
ORDER BY dbo.KHOA.MaKhoa, dbo.NGANH.MaNg, dbo.LOP.MaLop, dbo.SINHVIEN.TenSV, dbo.SINHVIEN.HoDem, diemtbtl DESC
- Nhận xét:
+ Để có được bảng điểm, chương trình phải thực hiện 08 phép nối, lấy dữ liệu từ nhiều bảng SINHVIEN, HOC, LOPHOCPHAN, MONHOC, HOCKY, NAMHOC, LOP, NGANH, KHOA
+ Để có được danh sách xét cấp học bổng cuối cùng, chương trình phải thực hiện thêm 05 phép thống kê (Sum, Min, Average).
- Tiểu kết: Chức năng lọc danh sách xét học bổng cần được hỗ trợ KNT.
2.3.5. Lọc danh sách nợ học phần
- Chức năng này chỉ lọc danh sách điểm của những sinh viên nợ học phần. Từ danh sách này, Khoa, Phòng Đào tạo sẽ xem xét lại, để cố vấn cho sinh viên. Trong những trường hợp nặng (điểm tích lũy thấp, số môn nợ nhiều, đã cảnh báo học tập…) thì sẽ ra cảnh báo học tập.
- Mô tả quá trình thao tác dữ liệu của chức năng lọc danh sách nợ học phần: Dữ liệu vào:
Dữ liệu ra: Danh sách nợ học phần sv, danh sách số tín chỉ tích lũy t, danh sách điểm tích lũy d
Xử lý: - Danh sách điểm chưa tính điểm học phần:
A (SINHVIEN HOC LOPHOCPHAN MONHOC
LOP NGANH KHOA) - Danh sách điểm đã tính điểm học phần: B A.*, diemtbDiem4(DiemTP*0.4+DiemThi*0.6)(A) - Danh sách sinh viên nợ học phần:
C diemtb = 0 Cuoi = true (B)
- Danh sách số tín chỉ tích lũy, điểm trung bình tích lũy:
D Sort MaKhoa Asc, MaLop Asc, diemtbtl Desc( diemtbtl(Sum(diemtb*SoTC)/Sum(SoTC)), sotctlSum(SoTC) (C))
ds = C
t = sotctl (D) d = diemtbtl (D)
SQL truy vấn danh sách sinh viên nợ học phần dsno
SELECT dbo.SINHVIEN.*, dbo.MONHOC.TenMH,
CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END AS diemtb
FROM dbo.SINHVIEN INNER JOIN
dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN
dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN
dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH INNER JOIN
dbo.LOP ON dbo.SINHVIEN.MaLop = dbo.LOP.MaLop INNER JOIN
dbo.NGANH ON dbo.LOP.MaNg = dbo.NGANH.MaNg INNER JOIN
dbo.KHOA ON dbo.NGANH.MaKhoa = dbo.KHOA.MaKhoa
WHERE (dbo.HOC.Cuoi = 1) AND (dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6 < 4) SQL truy vấn số tín chỉ tích lũy, điểm trung bình tích lũy của sinh viên masv
SELECT TOP (100) PERCENT dbo.SINHVIEN.MaSV,
dbo.SINHVIEN.HoDem, dbo.SINHVIEN.TenSV,
SUM(dbo.MONHOC.SoTC) AS sotctl,
SUM(CASE WHEN diem >= 8.5 THEN 4 WHEN diem >= 7 THEN 3 WHEN diem >= 5.5 THEN 2 WHEN diem >= 4 THEN 1 ELSE 0 END)
* 'dbo.MONHOC.SoTC)' / SUM(dbo.MONHOC.SoTC) AS diemtbtl, dbo.KHOA.MaKhoa, dbo.NGANH.MaNg
FROM dbo.SINHVIEN INNER JOIN
dbo.HOC ON dbo.SINHVIEN.MaSV = dbo.HOC.MaSV INNER JOIN
dbo.LOPHOCPHAN ON dbo.HOC.MaLopHP = dbo.LOPHOCPHAN.MaLopHP INNER JOIN-
dbo.MONHOC ON dbo.LOPHOCPHAN.MaMH = dbo.MONHOC.MaMH INNER JOIN
dbo.LOP ON dbo.SINHVIEN.MaLop = dbo.LOP.MaLop INNER JOIN
dbo.NGANH ON dbo.LOP.MaNg = dbo.NGANH.MaNg INNER JOIN
dbo.KHOA ON dbo.NGANH.MaKhoa = dbo.KHOA.MaKhoa
WHERE (dbo.HOC.Cuoi = 1)
GROUP BY dbo.HOC.DiemTP * 0.4 + dbo.HOC.DiemThi * 0.6,
dbo.SINHVIEN.MaSV, dbo.SINHVIEN.HoDem,
dbo.SINHVIEN.TenSV, dbo.KHOA.MaKhoa, dbo.NGANH.MaNg HAVING (dbo.SINHVIEN.MaSV = masv)
ORDER BY dbo.KHOA.MaKhoa, dbo.NGANH.MaNg, dbo.SINHVIEN.TenSV, dbo.SINHVIEN.HoDem
- Nhận xét:
+ Để có được bảng điểm, chương trình phải thực hiện 06 phép nối.
+ Để có được danh sách cuối cùng, chương trình phải thực hiện thêm 02 phép thống kê (Sum).
- Tiểu kết: Chức năng lọc danh sách nợ học phần cần được hỗ trợ KNT.
2.4. Thiết kế KNT hỗ trợ cho các chức năng đã đề xuất * Đánh giá: * Đánh giá:
Có 5 chức năng cần được triển khai ứng dụng KNT:
1. Đăng kí tín chỉ (thống kê danh sách các môn cùng lớp học phần có thể đăng kí của sinh viên)
2. Hủy đăng kí (thống kê danh sách các môn đang được đăng kí để hủy đăng kí) 3. Xem bảng điểm (thống kê, tính toán điểm của từng môn học ứng với lớp học phần và sinh viên qua các lần học)
4. Thống kê sinh viên để xét học bổng 5. Thống kê sinh viên nợ học phần.
* Nhận xét:
- Các truy vấn phục vụ chức năng 1, 3, 4 ,5 đều cần truy vấn vào kết quả học tập của sinh viên (table Hoc) để làm tiền đề, điều kiện lọc ra dữ liệu theo yêu cầu.
- Truy vấn cho chức năng 2 chỉ cần xem danh sách các môn đang được đăng kí ở (table lophocphan) để sinh viên hủy đăng kí.
- Truy vấn cho các chức năng 1 phức tạp do nối nhiều truy vấn khác nữa sau khi có dữ liệu từ truy vấn ở chức năng 3.
* Kết luận:
- Không cần tạo riêng KNT cho các truy vấn phục vụ cho chức năng 4, 5. Có thể dùng chung KNT với chức năng 3.
- Phải tạo riêng KNT cho chức năng 1. KNT này có truy cập đến KNT của chức