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
Trang 1TRƯỜ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 7
Tên hệ thống “Quản lý điểm danh sinh viên’’
Thành viên nhóm
Hà Nội, tháng năm
Trang 2I)Mô tả bài toán
1.Sự cần thiết của bài toán:
a Sự cần thiết của bài toán:
Trường đại học là môi trường đào tạo nên những nhân tài đóng góp vào sự phát của đất nước Do vậy, sinh viên là một nhân tố vô cùng quan trọng Để biết được sinh viên có trang bị đầy đủ kiến thức hay không thì chúng ta 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ế, chúng ta cần một chương trình quản lý điểm danh sinh viên để kiểm tra xem sinh viên có đi học đầy đủ hay không
b 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
Trang 3
II)Xây dựng bài toán:
1)Sơ đồ SQL:
Tên CSDL: Quản lý điểm danh sinh viên
Bảng lop (malop, tenlop) là bảng lưu thông tin các lớp học Mảng có malop
là mã lớp và tenlop là tên của các lớp học Khóa chính – Primary key là malop Ứng với YC02
Bảng sinhvien (masv, ten, ngaysinh, gt) là bảng lưu thông tin của các sinh
viên Bảng có masv là mã sinh viên, tên và họ của từng sinh viên, ngaysinh
là ngày sinh của sinh viên, gt là giới tính của sinh viên Khóa chính-
Primary key là masv Ứng với YC01
Bảng monhoc (mamh, tenmh, tc) là bảng lưu thông tin của các môn học
Bảng có mamh là mã môn học, tenmh là tên môn học và tc là tín chỉ Khóa chính – Primary key là mamh Ứng với YC03
Trang 4 Bảng diemdanh (malop, mamh, masv, cp, kp) là bảng lưu thông tin điểm
danh của từng sinh viên Bảng có malop là mã lớp, mamh là mã môn học, masv là mã sinh viên, cp là có phép, kp là không phép Khóa ngoại – Foreign key là malop tham chiếu đến lop(malop), mamh tham chiếu đến monhoc(mamh) và masv tham chiếu đến sinhvien(masv) Ứng với YC04, YC05, YC06, YC07
Trang 5Diagram:
Trang 62)Code T - SQL:
CREATEDATABASE quanly
malop NVARCHAR ( 10 ),
tenlop NVARCHAR ( 10 ),
);
INSERT INTO Lop VALUES ( 'NV1' , 'CNPM' );
INSERT INTO Lop VALUES ( 'NV2' , 'CNDT' );
INSERT INTO Lop VALUES ( 'NV3' , 'HTD' );
masv NVARCHAR ( 20 ),
ten VARCHAR ( 30 ),
ngaysinh DATE ,
gt BIT ,
);
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 Thii Uyen' , '3/12/1999' , '0' );
INSERT INTO sinhvien VALUES ( 'A105' , 'Nguyen Van A' , '3/12/1999' , '0' );
mamh NVARCHAR ( 10 ),
tenmh VARCHAR ( 30 ),
tc INT ,
);
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' );
malop NVARCHAR ( 10 ),
mamh NVARCHAR ( 10 ),
masv NVARCHAR ( 20 ),
cp INT ,
kp INT ,
);
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' );
Trang 7Bài Tập Và Lời Giải Chi Tiết
Bài 1 : Danh sách sinh viên có vần A
SELECT mamh,sinhvien.*,cp,kp
WHERE sinhvien.masv=diemdanh.masv and ten like '%a%'
GROUP BY
mamh,sinhvien.masv,sinhvien.ten,sinhvien.ngaysinh,sinhvien.gt,cp,kp
Bài 2 : Cập nhật môn học với phí phạt không đi học.Căn cứ vào số buổi không đi học của từng sinh viên.Cập nhật tổng tiền phạt
ALTER TABLE monhoc ADD tienphat int
UPDATE monhoc
WHERE mamh='MH1' AND mamh='MH3' AND mamh='MH4' AND
mamh='MH5'
UPDATE monhoc
WHERE mamh='MH2'
UPDATE monhoc
WHERE mamh='MH6'
ALTER TABLE diemdanh ADD tongtienphat int
UPDATE diemdanh
WHERE diemdanh.mamh=monhoc.mamh )
Bài 3 : Danh sách sinh viên sinh vào tháng 1 đi học đầy đủ
Trang 8SELECT 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 4 : Cập nhật thời gian điểm danh của 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 5 : Tính số lượng sinh viên đi học trong 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'
Trang 9ELSE
PRINT('KHONG CO SINH VIÊN DI HOC TRONG NGAY 20/11')
Bài 6:Thêm tổng cột sinh viên đi học trong 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 7 :Danh sách lớp có sinh viên đi học ít nhất
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 8 :Môn học có sinh viên đi học đầy đủ nhất
SELECT DISTINCT diemdanh.mamh,tenmh,count(masv) AS 'So luong sinh vien'
FROM monhoc,diemdanh
Trang 10WHERE 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 9 : Danh sách sinh viên đi 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 ít đi học nhất
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
Trang 11III)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
Trang 127) Vũ Nguyên Ngọc Tâm:
https://drive.google.com/file/d/1Byhzgv0eLglYiP4VBEtnyasvVbaECgOb/view? usp=sharing