Mong Rằng tài liệu này sẽ giúp ích cho bạn phần nào về ý tưởng cũng như bài tập mẫu , cách giải , giúp bạn trong quá trình học tập Yêu cầu về CSDL: YC01: Cho phép lưu thông tin về cá nhân của từng sinh viên học trong trường YC02: Cho phép lưu thông tin về lớp học của từng sinh viên học trong trường YC03: Cho phép lưu thông tin về từng môn học mà có sinh viên đó đang học YC04: Cho phép lưu thông tin về số ngày nghỉ của từng sinh viên theo môn học tín chỉ YC05: Cho phép tính số này nghỉ của từng sinh viên để biết sinh viên nào đi học đầy đủ nhất và sinh viên nào nghỉ học nhiều nhất YC06: Cho biết lớp nào có sinh viên đi học đầy đủ nhất và sinh viên nghỉ học nhiều nhất YC07: Cho biết môn học nào có sinh viên đi học đầy đủ nhất và sinh viên nghỉ học nhiều nhất
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU Tên nhóm: Nhóm Tên hệ thống “Quản lý điểm danh sinh viên’’ Thành viên nhóm STT Họ Tên Nguyễn Đức Phú Lê Công Quyền Trần Minh Sơn Đặng Hùng Sơn Lê Văn Thiêm Nguyễn Đức Thịnh Vũ Nguyên Ngọc Tâm Nhiệm vụ Hà Nội, tháng năm I)Mơ tả tốn 1.Sự cần thiết toán: a Sự cần thiết tốn: Trường đại học mơi trường đào tạo nên nhân tài đóng góp vào phát đất nước Do vậy, sinh viên nhân tố vơ quan trọng Để biết sinh viên có trang bị đầy đủ kiến thức hay khơng cần phải xem sinh viên có đến lớp, đến trường, học hành có đầy đủ hay khơng Vì thế, cần chương trình quản lý điểm danh sinh viên để kiểm tra xem sinh viên có học đầy đủ hay không b Yêu cầu CSDL: YC01: Cho phép lưu thông tin cá nhân sinh viên học trường YC02: Cho phép lưu thông tin lớp học sinh viên học trường YC03: Cho phép lưu thông tin mơn học mà có sinh viên học YC04: Cho phép lưu thông tin số ngày nghỉ sinh viên theo mơn học tín YC05: Cho phép tính số nghỉ sinh viên để biết sinh viên học đầy đủ sinh viên nghỉ học nhiều YC06: Cho biết lớp có sinh viên học đầy đủ sinh viên nghỉ học nhiều YC07: Cho biết mơn học có sinh viên học đầy đủ sinh viên nghỉ học nhiều II)Xây dựng toán: 1)Sơ đồ SQL: Tên CSDL: Quản lý điểm danh sinh viên • Bảng lop (malop, tenlop) bảng lưu thơng tin lớp học Mảng có malop mã lớp tenlop tên lớp học Khóa – Primary key • malop Ứng với YC02 Bảng sinhvien (masv, ten, ngaysinh, gt) bảng lưu thơng tin sinh viên Bảng có masv mã sinh viên, tên họ sinh viên, ngaysinh ngày sinh sinh viên, gt giới tính sinh viên Khóa chính• Primary key masv Ứng với YC01 Bảng monhoc (mamh, tenmh, tc) bảng lưu thơng tin mơn học Bảng có mamh mã môn học, tenmh tên môn học tc tín Khóa • – Primary key mamh Ứng với YC03 Bảng diemdanh (malop, mamh, masv, cp, kp) bảng lưu thông tin điểm danh sinh viên Bảng có malop mã lớp, mamh mã môn học, masv mã sinh viên, cp có phép, kp khơng phép Khóa ngoại – Foreign key malop tham chiếu đến lop(malop), mamh tham chiếu đến monhoc(mamh) masv tham chiếu đến sinhvien(masv) Ứng với YC04, YC05, YC06, YC07 Diagram: SQLQuery1.sql 2)Code T - SQL: CREATE DATABASE quanly CREATE TABLE lop( malop NVARCHAR(10), tenlop NVARCHAR(10), PRIMARY KEY(malop) ); INSERT INTO Lop VALUES('NV1','CNPM'); INSERT INTO Lop VALUES('NV2','CNDT'); INSERT INTO Lop VALUES('NV3','HTD'); CREATE TABLE sinhvien( masv NVARCHAR(20), ten VARCHAR(30), ngaysinh DATE, gt BIT, PRIMARY KEY(masv) ); INSERT INTO sinhvien VALUES('A100','Nguyen Van Anh','1/1/1999','0'); INSERT INTO sinhvien VALUES('A101','Le Van Anh','2/3/1999','1'); INSERT INTO sinhvien VALUES('A102','Nguyen Dinh Duong','1/21/1999','1'); INSERT INTO sinhvien VALUES('A103','Nguyen Tri Tue','2/8/1999','1'); INSERT INTO sinhvien VALUES('A104','Ngo Thi Uyen','3/12/1999','0'); INSERT INTO sinhvien VALUES('A105','Nguyen Van A','3/12/1999','0'); CREATE TABLE monhoc( mamh NVARCHAR(10), tenmh VARCHAR(30), tc INT, PRIMARY KEY(mamh) ); INSERT INTO monhoc VALUES('MH1','Toan','2'); INSERT INTO monhoc VALUES('MH2','Ly','3'); INSERT INTO monhoc VALUES('MH3','Hoa','2'); INSERT INTO monhoc VALUES('MH4','Sinh','2'); INSERT INTO monhoc VALUES('MH5','CSDL','2'); INSERT INTO monhoc VALUES('MH6','GDTC','1'); CREATE TABLE diemdanh( malop NVARCHAR(10), mamh NVARCHAR(10), masv NVARCHAR(20), cp INT, kp INT, CONSTRAINT fk_diemdanh_malop FOREIGN KEY(malop) REFERENCES Lop(malop), CONSTRAINT fk_diemdanh_masv FOREIGN KEY(masv) REFERENCES sinhvien(masv), CONSTRAINT fk_diemdanh_mamh FOREIGN KEY(mamh) REFERENCES monhoc(mamh) ); INSERT INTO diemdanh VALUES('NV1','MH1','A100','0','0'); INSERT INTO diemdanh VALUES('NV2','MH2','A100','4','2'); INSERT INTO diemdanh VALUES('NV1','MH1','A101','0','1'); INSERT INTO diemdanh VALUES('NV3','MH3','A102','2','3'); INSERT INTO diemdanh VALUES('NV1','MH4','A103','4','2'); INSERT INTO diemdanh VALUES('NV2','MH5','A104','4','2'); INSERT INTO diemdanh VALUES('NV3','MH6','A104','4','2'); INSERT INTO diemdanh VALUES('NV3','MH1','A105','4','2'); Bài Tập Và Lời Giải Chi Tiết Bài : Danh sách sinh viên có vần A SELECT mamh,sinhvien.*,cp,kp From sinhvien,diemdanh WHERE sinhvien.masv=diemdanh.masv and ten like '%a%' GROUP BY mamh,sinhvien.masv,sinhvien.ten,sinhvien.ngaysinh,sinhvien.gt,cp,kp Bài : Cập nhật mơn học với phí phạt khơng học.Căn vào số buổi không học sinh viên.Cập nhật tổng tiền phạt ALTER TABLE monhoc ADD tienphat int UPDATE monhoc SET tienphat='20000' WHERE mamh='MH1'AND mamh='MH3' AND mamh='MH4' AND mamh='MH5' UPDATE monhoc SET tienphat='30000' WHERE mamh='MH2' UPDATE monhoc SET tienphat='10000' WHERE mamh='MH6' ALTER TABLE diemdanh ADD tongtienphat int UPDATE diemdanh SET tongtienphat=(SELECT SUM((cp+kp)*tienphat) WHERE diemdanh.mamh=monhoc.mamh ) Bài : Danh sách sinh viên sinh vào tháng học đầy đủ SELECT malop,diemdanh.mamh, sinhvien.*, cp, kp FROM sinhvien, diemdanh WHERE sinhvien.masv=diemdanh.masv and kp=0 and cp=0 and month(ngaysinh) = '1' Bài : Cập nhật thời gian điểm danh lớp ALTER TABLE dbo.diemdanh ADD timedd DATE UPDATE dbo.diemdanh SET timedd='2018/11/19' WHERE malop='NV1' UPDATE dbo.diemdanh SET timedd='2018/11/21' WHERE malop='NV2' UPDATE dbo.diemdanh SET timedd='2018/11/20' WHERE malop='NV3' Bài : Tính số lượng sinh viên học ngày 20-11 IF EXISTS ( SELECT COUNT(masv) FROM dbo.diemdanh WHERE timedd='2018/11/20') BEGIN PRINT('TONG SO SINH VIÊN ĐI HOC TRONG NGAY 20-11') SELECT COUNT(masv) FROM dbo.diemdanh WHERE timedd='2018/11/20' END ELSE PRINT('KHONG CO SINH VIÊN DI HOC TRONG NGAY 20/11') Bài 6:Thêm tổng cột sinh viên học bảng môn học ALTER TABLE monhoc ADD tongsinhvien INT GO UPDATE monhoc SET tongsinhvien = (SELECT COUNT(diemdanh.masv) FROM monhoc,diemdanh where monhoc.mamh = diemdanh.mamh group by monhoc.mamh ) SELECT * FROM monhoc Bài :Danh sách lớp có sinh viên học SELECT DISTINCT diemdanh.malop,tenlop,count(masv) AS'So luong sinh vien' FROM lop,diemdanh WHERE lop.malop=diemdanh.malop and diemdanh.malop in (SELECT malop FROM diemdanh WHERE (cp+kp) in (SELECT max (cp+kp) FROM diemdanh) ) GROUP BY diemdanh.malop,tenlop,diemdanh.masv Bài :Mơn học có sinh viên học đầy đủ SELECT DISTINCT diemdanh.mamh,tenmh,count(masv) AS 'So luong sinh vien' FROM monhoc,diemdanh WHERE monhoc.mamh=diemdanh.mamh and diemdanh.mamh in (SELECT mamh FROM diemdanh WHERE (cp+kp) in (SELECT min(cp+kp) FROM diemdanh)) GROUP BY diemdanh.mamh,tenmh,diemdanh.masv Bài : Danh sách sinh viên học đầy đủ theo lớp SELECT malop,mamh,sinhvien.*,cp,kp FROM diemdanh,sinhvien WHERE diemdanh.masv = sinhvien.masv and cp=0 and kp=0 GROUP BY sinhvien.masv,ten,ngaysinh,gt,malop,mamh,cp,kp Bài 10 ;Danh sách sinh viên học SELECT DISTINCT sinhvien.*,tenmh,cp,kp,sum(cp+kp) AS 'So buoi nghi' FROM sinhvien,diemdanh,monhoc WHERE sinhvien.masv=diemdanh.masv and diemdanh.masv in (SELECT DISTINCT masv FROM diemdanh WHERE (cp+kp) in (SELECT DISTINCT max(cp+kp) FROM diemdanh)) GROUP BY sinhvien.masv,ten,ngaysinh,gt,cp,kp,monhoc.tenmh III)Thao tác với CSDL: 1)Nguyễn Đức Thịnh: https://drive.google.com/file/d/1JDwhv9i4mHasr0cUnX1DUDURrHXiMQCj/view? usp=sharing 2) Nguyễn Đức Phú: https://drive.google.com/file/d/1R7V1wDaL2bwoYJoS1Jwnz7UlfARVMv4T/view? usp=sharing 3) Lê Công Quyền: https://drive.google.com/file/d/1GGPQGaELVBoCzNEsG0BLN6muezhPppKg/view? usp=sharing 4) Trần Minh Sơn: https://drive.google.com/open? id=1JGsrQmjzTeSLCFNEWfAWLALkhVbuHzYx 5) Đặng Hùng Sơn: https://drive.google.com/file/d/1nnCA_RTtmNX9udRJMQip3aSy20E3gsZb/view? usp=sharing 6) Lê Văn Thiêm: https://drive.google.com/file/d/1rGta6ugePjQV2ulxmSoQE83y0UNjlrvl/view? usp=sharing 7) Vũ Nguyên Ngọc Tâm: https://drive.google.com/file/d/1Byhzgv0eLglYiP4VBEtnyasvVbaECgOb/view? usp=sharing ... mơn học tín YC05: Cho phép tính số nghỉ sinh viên để biết sinh viên học đầy đủ sinh viên nghỉ học nhiều YC06: Cho biết lớp có sinh viên học đầy đủ sinh viên nghỉ học nhiều YC07: Cho biết mơn học. .. biết mơn học có sinh viên học đầy đủ sinh viên nghỉ học nhiều II)Xây dựng toán: 1)Sơ đồ SQL: Tên CSDL: Quản lý điểm danh sinh viên • Bảng lop (malop, tenlop) bảng lưu thơng tin lớp học Mảng có malop... nhân sinh viên học trường YC02: Cho phép lưu thông tin lớp học sinh viên học trường YC03: Cho phép lưu thông tin mơn học mà có sinh viên học YC04: Cho phép lưu thông tin số ngày nghỉ sinh viên