Mơ tả bài toán thực tế: Bài toán xây dựng 1 hệ cơ sở dữ liệu để quản lý dữ liệu điểm và thông tin sinh viên của 1 ngành trong trường đại học.Chương trình quản lý điểm sinh viên là chương
111Equation Chapter Section TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC - - BÁO CÁO CUỐI KỲ Đề tài: Quản lý điểm số sinh viên viện Giảng viên: TS.Nguyễn T.Thanh Huyền Sinh viên thực hiện: Trần Quốc Khánh 20216841 Hà Nội, năm 2023 Mục lục I Trình bày tốn thực tế: Mơ tả tốn thực tế: Mục tiêu hệ thống: Các quy trình nghiệp vụ: Yêu cầu hệ thống liệu bao gồm: II Mơ tả chức tốn: Sơ đồ phân rã chức năng: Chức cụ thể: III Vận dụng lý thuyết thiết kế CSDL: Xác định tập thuộc tính lược đồ quan hệ: Tập phụ thuộc hàm F: Thực q trình chuẩn hóa: IV Các câu lệnh SQL tạo lập cập nhật liệu cho bảng: Các câu lệnh tạo bảng: Cập nhật liệu: V Các câu truy vấn liệu quan hệ: I Trình bày tốn thực tế: Mơ tả toán thực tế: Bài toán xây dựng hệ sở liệu để quản lý liệu điểm thông tin sinh viên ngành trường đại học Chương trình quản lý điểm sinh viên chương trình xây dựng nhằm đáp ứng địi hỏi đặt q trình quản lý nhập thơng tin sinh viên, tìm kiếm, thống kê, in báo cáo nhiều công việc liên quan khác cách nhanh chóng, thuận tiện xác Mỗi sinh viên có mã sinh viên, không trùng lặp với khác Mỗi sinh viên theo học lớp đại học Các sinh viên lớp đại học học chung ngành thuộc chung viện Ứng với kỳ, sinh viên theo học số môn học mở định Kết thúc học kỳ, sinh viên có điểm số tổng kết mơn học Mục tiêu hệ thống: + Quản lý thông tin sinh viên điểm số họ môn học khác kỳ học khác Hệ thống giúp cho việc quản lý thông tin sinh viên điểm số trở nên nhanh chóng, xác hiệu + Đáp ứng địi hỏi đặt q trình quản lý nhập thơng tin sinh viên, tìm kiếm, thống kê, in báo cáo nhiều công việc liên quan khác cách nhanh chóng xác Các quy trình nghiệp vụ: + Quản lý thơng tin sinh viên: Hệ thống lưu trữ thông tin sinh viên, bao gồm: Mã sinh viên, họ tên, giới tính, thơng tin liên lạc, q qn lớp sinh viên học Hệ thống cung cấp thêm chức thêm, sửa, xóa thơng tin sinh viên để việc quản lý thông tin trở nên dễ dàng + Quản lý điểm sinh viên: Hệ thống lưu trữ thông tin điểm số môn học khác kỳ học khác Các thông tin điểm số sinh viên bao gồm: Mã môn học, tên môn học, kỳ học, điểm Yêu cầu hệ thống liệu bao gồm: + Mỗi sinh viên có đầy đủ thơng tin Mã sinh viên, họ tên, điểm,… + Các thông tin điểm số sinh viên đầy đủ + Dữ liệu sinh viên phải bảo mật truy cập người có quyền hạn + Dữ liệu sinh viên tổ chức cách quán, tránh trùng lặp + Hệ thống cần linh hoạt việc thay đổi cập nhật liệu sinh viên, cho phép xử lý liệu hiệu thời gian thực có khả mở rộng tương lai với số lượng sinh viên lớn hơn, đáp ứng nhu cầu tới II Mô tả chức toán: Sơ đồ phân rã chức năng: + Sơ đồ phân rã chức (Functional Decomposition Diagram - FDD) cơng cụ phân tích thiết kế hệ thống, sử dụng để phân tích chức hệ thống thành thành phần nhỏ dễ quản lý Các thành phần phân rã tiếp thành thành phần nhỏ đến chúng triển khai + Phân rã chức giúp tách chức lớn thành chức nhỏ dễ quản lý hơn, tăng tính linh hoạt tái sử dụng hệ thống, giảm thiểu rủi ro trình phát triển cách phân chia công việc thành phần nhỏ hơn, dễ quản lý dễ kiểm tra Dưới sơ đồ phân chức ứng dụng quản lý điểm sinh viên: Chức cụ thể: + Quản lý thông tin sinh viên: - Thực thêm thông tin sinh viên - Thực chỉnh sửa thơng tin hệ thống - Xóa sinh viên khỏi hệ thống + Quản lý điểm sinh viên: - Thực nhập điểm kỳ cho sinh viên - Thực chỉnh sửa điểm cho sinh viên có sai lệch điểm - Thực tính điểm trung bình sinh viên theo mơn học theo kỳ + Quản lý môn học: - Thực thêm môn học - Thực chỉnh sửa, cập nhật mơn học - Xóa mơn học cũ khơng cịn học + Quản lý thống kê, báo cáo: - Thực xếp, quản lý điểm trùng bình sinh viên Thực xếp có thứ tự sinh viên dựa theo điểm - Thực liệt kê sinh viên nợ môn, tạch môn III Vận dụng lý thuyết thiết kế CSDL: Việc chuẩn hóa liệu đảm bảo tính chất ACID cho sở liệu giảm thiểu vấn đề liên quan đến lưu trữ, truy xuất cập nhật liệu Một số tác dụng việc chuẩn hóa liệu quan hệ là: Giảm thiểu trùng lặp liệu: Khi chuẩn hóa liệu, ta cần phân tách bảng liệu thành bảng riêng biệt, giúp giảm thiểu trùng lặp liệu Từ giúp tiết kiệm khơng gian lưu trữ giảm thiểu thời gian cập nhật liệu Tăng tính qn liệu: Chuẩn hóa liệu đảm bảo tính quán liệu sở liệu Nếu liệu không chuẩn hóa, dẫn đến vấn đề thất liệu hay khơng qn liệu Tăng tính phân cấp linh hoạt liệu: Chuẩn hóa liệu giúp tạo bảng liệu độc lập, sử dụng để tạo nhiều loại báo cáo truy vấn liệu khác Từ tăng tính phân cấp linh hoạt liệu Tăng tính bảo mật liệu: Chuẩn hóa liệu giúp tăng tính bảo mật liệu sở liệu Khi liệu phân tách thành bảng độc lập, quyền truy cập liệu kiểm sốt quản lý cách dễ dàng Giảm thiểu vấn đề liên quan đến cập nhật liệu: Chuẩn hóa liệu giúp giảm thiểu vấn đề liên quan đến cập nhật liệu, bao gồm vấn đề mát liệu, mâu thuẫn liệu lỗi liệu Xác định tập thuộc tính lược đồ quan hệ: Thuộc tính Mơ tả MaSV Mã sinh viên HoTenSV Họ tên đầy đủ sinh viên LienLac Thông tin liên lạc sinh viên (SĐT) GT Giới tính QueQuan Quê quán MaLop Mã lớp sinh viên theo học TenLop Tên lớp sinh viên theo học MaVien Mã viện mà sinh viên theo học TenVien Tên viện mà sinh viên theo học DiaChi Địa văn phòng viện SĐT Hotline viện MaHK Mã học kỳ Diem Điểm số môn học sinh viên kỳ MaMH Mã môn học TenMH Tên mơn học SoTin Số tín mơn học MaNganh Mã ngành học TenNganh Tên ngành học + Tập thuộc tính: U = {MaSV, HoTenSV, LienLac, GT, QueQuan, MaLop, TenLop, MaVien, TenVien, DiaChi, SĐT, MaHK, Diem, MaMH, TenMH, SoTin, MaNganh, TenNganh} Cập nhật liệu: (Dữ liệu KQHT sinh viên có tổng 165 ghi, lưu trữ điểm số mơn học học kì 20221 20222 Phía ghi ví dụ sinh viên có MASV SV001, SV002, SV003, SV004) V Các câu truy vấn liệu quan hệ: Tìm kiếm thơng tin mơn học có sở liệu: Câu lệnh: SELECT * FROM dbo.MONHOC Kết quả: 2.Tìm kiếm thơng tin sinh viên có tên “Nguyễn Đắc Học”, “Tran Quoc Khanh”: Câu lệnh: SELECT * FROM dbo.SINHVIEN WHERE HOTENSV='Nguyen Dac Hoc' OR HOTENSV='Tran Quoc Khanh' Hoặc: SELECT * FROM dbo.SINHVIEN WHERE HOTENSV IN ('Nguyen Dac Hoc','Tran Quoc Khanh') Kết quả: Tìm kiếm thơng tiên liên lạc địa văn phòng viện Ngoại ngữ: Câu lệnh: SELECT DIACHI,SĐT FROM dbo.VIEN WHERE TENVIEN = 'Ngoai Ngu' Kết quả: In bảng điểm mơn Cơ sở liệu có mã môn học MI3090 theo thứ tự tăng dần: Câu lệnh: SELECT MASV,DIEM FROM dbo.KQHT WHERE MAMH = 'MI3090' ORDER BY DIEM ASC Kết quả: In danh sách sinh viên lớp Toán Tin 03: Câu lệnh: SELECT MASV, HOTENSV FROM dbo.SINHVIEN, dbo.LOP WHERE dbo.SINHVIEN.MALOP = dbo.LOP.MALOP AND TENLOP = 'Toan Tin 03' Kết quả: Tìm kiếm thơng tin lớp ngành Tốn Tin thuộc viện Toán: Câu lệnh: SELECT TENLOP FROM dbo.LOP, dbo.VIEN, dbo.NGANH WHERE LOP.MAVIEN= dbo.VIEN.MAVIEN AND dbo.LOP.MANGANH= dbo.NGANH.MANGANH AND TENNGANH='Toan Tin' Kết quả: In điểm trung bình mơn sinh viên Nguyễn Mai Anh học kỳ 20221 20222: Câu lệnh: SELECT KQHT.MAHK, AVG(KQHT.DIEM) AS DTB_KY FROM dbo.SINHVIEN INNER JOIN KQHT ON dbo.SINHVIEN.MASV = KQHT.MASV WHERE dbo.SINHVIEN.HOTENSV = 'Nguyen Mai Anh' AND (KQHT.MAHK = '20221' OR KQHT.MAHK = '20222') GROUP BY KQHT.MAHK; Kết quả: Tìm kiếm mã sinh viên, họ tên điểm số môn CTDL> sinh viên lớp Hệ thống 01: Câu lệnh: SELECT dbo.SINHVIEN.MASV, dbo.SINHVIEN.HOTENSV FROM dbo.KQHT INNER JOIN dbo.SINHVIEN ON KQHT.MASV = SINHVIEN.MASV INNER JOIN dbo.MONHOC ON MONHOC.MAMH = KQHT.MAMH AND MONHOC.MAHK = KQHT.MAHK INNER JOIN dbo.LOP ON LOP.MALOP = SINHVIEN.MALOP WHERE TENMH='CTDL>' AND LOP.TENLOP = 'He Thong 01' Kết quả: Sắp xếp điểm số trung bình kỳ 20221 sinh viên học ngành Toán Tin: Câu lệnh: SELECT SINHVIEN.MASV, SINHVIEN.HOTENSV, AVG(KQHT.DIEM) AS DTB_KY20221 FROM KQHT INNER JOIN SINHVIEN ON KQHT.MASV = SINHVIEN.MASV INNER JOIN LOP ON SINHVIEN.MALOP = LOP.MALOP INNER JOIN NGANH ON NGANH.MANGANH = LOP.MANGANH WHERE KQHT.MAHK = '20221' AND dbo.NGANH.TENNGANH = 'Toan Tin' GROUP BY SINHVIEN.MASV, SINHVIEN.HOTENSV ORDER BY DTB_KY20221 DESC; Kết quả: Tìm kiếm thơng tin mơn học có điểm trung bình thấp nhất: Câu lệnh: SELECT TOP MONHOC.MaMH, MONHOC.TenMH,AVG(KQHT.Diem) AS DTB FROM KQHT INNER JOIN MONHOC ON KQHT.MaMH = MONHOC.MaMH GROUP BY MONHOC.MaMH, MONHOC.TenMH ORDER BY DTB ASC Kết quả: 10 Tìm kiếm sinh viên tạch mơn “Hệ điều hành” liệt kê thơng tin sinh viên đó: Câu lệnh: SELECT dbo.SINHVIEN.MASV, dbo.SINHVIEN.HOTENSV,dbo.SINHVIEN.LIENLAC, MALOP, AVG(DIEM) AS DTB FROM dbo.KQHT INNER JOIN dbo.SINHVIEN ON SINHVIEN.MASV = KQHT.MASV INNER JOIN dbo.MONHOC ON MONHOC.MAMH = KQHT.MAMH AND MONHOC.MAHK = KQHT.MAHK GROUP BY dbo.SINHVIEN.MASV, HOTENSV,dbo.SINHVIEN.LIENLAC,MALOP HAVING SINHVIEN.MASV IN ( SELECT MASV FROM dbo.KQHT INNER JOIN dbo.MONHOC ON MONHOC.MAMH = KQHT.MAMH AND MONHOC.MAHK = KQHT.MAHK WHERE DIEM < AND dbo.MONHOC.TENMH = 'He đieu hanh' ) Kết quả: 11 Tìm thơng tin sinh viên có số mơn khơng đạt lớn Câu lệnh: SELECT * FROM dbo.SINHVIEN WHERE dbo.SINHVIEN.MASV IN ( SELECT dbo.KQHT.MASV FROM dbo.KQHT WHERE DIEM < GROUP BY KQHT.MASV HAVING COUNT(*) >= ) Kết quả: 12 Tìm kiếm thơng tin lớp có số mơn khơng đạt lớn kỳ 20221: Câu lệnh: SELECT LOP.MALOP, LOP.TENLOP, COUNT(*) AS SO_MON_TACH FROM LOP INNER JOIN SINHVIEN ON LOP.MALOP = SINHVIEN.MALOP INNER JOIN KQHT ON SINHVIEN.MASV = KQHT.MASV WHERE KQHT.MAHK = '20221' AND KQHT.DIEM < GROUP BY LOP.MALOP, LOP.TENLOP HAVING COUNT(*) > Kết quả: 13 Tìm kiếm thơng tin mơn học có sinh viên tạch kỳ 20222: Câu lệnh: SELECT MONHOC.MAMH, MONHOC.TENMH FROM MONHOC WHERE MONHOC.MAMH IN ( SELECT MAMH FROM KQHT WHERE KQHT.MAHK = '20222' AND KQHT.DIEM =7 GROUP BY MONHOC.MAMH, TENMH HAVING COUNT(DISTINCT KQHT.MASV) >= Kết quả: 15 Liệt kê danh sách sinh viên không đăng ký môn “Tâm lý học ứng dụng”: Câu lệnh: SELECT MASV, HOTENSV FROM dbo.SINHVIEN WHERE MASV NOT IN ( SELECT dbo.SINHVIEN.MASV FROM dbo.SINHVIEN INNER JOIN dbo.KQHT ON KQHT.MASV = SINHVIEN.MASV WHERE MAMH IN ( SELECT MAMH FROM dbo.MONHOC WHERE TENMH = 'Tam ly hoc ung dung' ) ) Kết quả: 16 Liệt kê danh sách sinh viên có điểm trung bình kỳ 20222 thấp cao nhất: Câu lệnh: SELECT SINHVIEN.MASV, SINHVIEN.HOTENSV, AVG(KQHT.DIEM) AS DIEM_TRUNG_BINH FROM SINHVIEN INNER JOIN KQHT ON SINHVIEN.MASV = KQHT.MASV WHERE KQHT.MAHK = '20222' GROUP BY SINHVIEN.MASV, SINHVIEN.HOTENSV HAVING AVG(KQHT.DIEM) IN ( SELECT TOP AVG(DIEM) AS DIEMTB1 FROM KQHT WHERE MAHK = '20222' GROUP BY MASV ORDER BY DIEMTB1 ASC UNION SELECT TOP AVG(DIEM) AS DIEMTB2 FROM KQHT WHERE MAHK = '20222' GROUP BY MASV ORDER BY DIEMTB2 DESC ) Kết quả: 17 Liệt kê số lượng nam, nữ có lớp học: Câu lệnh: SELECT LOP.TENLOP, COUNT(CASE WHEN SINHVIEN.GT = THEN END) AS SO_SV_NAM, COUNT(CASE WHEN SINHVIEN.GT = THEN END) AS SO_SV_NU FROM LOP INNER JOIN SINHVIEN ON LOP.MALOP = SINHVIEN.MALOP GROUP BY LOP.TENLOP ORDER BY LOP.TENLOP ASC Kết quả: 18 Liệt kê số tín mà sinh viên phải học học kì 20221 20222: Câu lệnh: SELECT SINHVIEN.MASV, SUM(CASE WHEN HOCKY.MAHK = '20221' THEN MONHOC.SOTIN ELSE END) AS TONG_SO_TIN_CHI_20221, SUM(CASE WHEN HOCKY.MAHK = '20222' THEN MONHOC.SOTIN ELSE END) AS TONG_SO_TIN_CHI_20222 FROM SINHVIEN INNER JOIN KQHT ON SINHVIEN.MASV = KQHT.MASV INNER JOIN MONHOC ON KQHT.MAMH = MONHOC.MAMH INNER JOIN HOCKY ON KQHT.MAHK = HOCKY.MAHK WHERE HOCKY.MAHK IN ('20221', '20222') GROUP BY SINHVIEN.MASV Kết quả: 19 Liệt kê thơng tin lớp khơng có gái: Câu lệnh: SELECT LOP.MALOP, LOP.TENLOP FROM LOP LEFT JOIN SINHVIEN ON LOP.MALOP = SINHVIEN.MALOP GROUP BY LOP.MALOP, LOP.TENLOP HAVING COUNT(CASE WHEN SINHVIEN.GT = THEN END) =0 Kết quả: 20 Tìm thơng tin sinh viên đăng ký mơn Cơ sở liệu (MI3090) có điểm cao danh sách sinh viên đăng ký môn học: Câu lệnh: SELECT TOP SV.MASV, SV.HOTENSV, KQ.DIEM FROM SINHVIEN SV JOIN KQHT KQ ON SV.MASV = KQ.MASV WHERE KQ.MAMH = 'MI3090' AND EXISTS ( SELECT FROM KQHT KQ1 WHERE KQ1.MAMH = 'MI3090' AND KQ1.DIEM > KQ.DIEM AND KQ1.MAHK = KQ.MAHK ) ORDER BY KQ.DIEM DESC Kết quả: