Dưới Đây là 1 số mấu bài tập mà chúng nhóm mình làm xem rồi tham khảo , bài tập khác đầy đủ gồm hơn 50 bài mỗi thành viên gầm 5 bài : Bài 1 : Lớp có sinh viên mượn ít sách nhấtBài 2 : Tính tổng sinh viên của từng lớp đã mượn sáchBài 3 : Chỉnh sửa cơ sở dữ liệu để có thể in ra phiếu của người mượn (số lượng mượn, tên sách, tác giá, thời gian …)Bài 4 : khởi tạo trigger Update Số Lượng sách trong bảng Sophieu và sachBài 5 : Tạo procedure cho câu INSERT để thêm sinh viên vào bảng lớpBài 1 : Tác Giả có nhiều sách được mượn nhấtBài 2 : Tính tổng số sách mượn của từng sinh viên theo lớpBài 3 : Tạo thêm cột trong bảng để tính toán số ngày đã mượn sách của từng sinh viênBài 4 : Tạo procedure để xem thông tin sinh viên đã mượn sách trong bảng số phiếuBài 5 : Tạo Trigger cập nhật thông tin sinh viên có soluongmuon trên bảng số phiếuBài 1 : Tác Giả có nhiều sách được mượn nhấtBài 2 : Tính tổng số sách mượn của từng sinh viên theo lớpBài 3 : Tạo thêm cột trong bảng để tính toán số ngày đã mượn sách của từng sinh viênBài 4 : Tạo procedure để xem thông tin sinh viên đã mượn sách trong bảng số phiếuBài 5 : Tạo Trigger cập nhật thông tin sinh viên có soluongmuon trên bảng số phiếuBài 1 : Sinh viên mượn sách dưới 20 tuổiBài 2 : Update số lượng sách sau khi sinh viên mượn thêm sáchBài 3 : Thêm cột tính tổng số sinh viên trên bảng lớp. Tính tổng số sinh viên các lớp đã mượn sáchBài 4 : Từ bảng số phiếu hiển thị thông tin mã sinh viên, mã phiếu, ngày mượn, ngày trả của những sinh viên mượn 2 quyển sáchBài 5 : Tạo 1 trigger để xóa số lượng sách mượnBài 1 : Lớp có sinh viên mượn nhiều sách nhấtBài 2 : Tổng lượng sách đã mượn theo nhà xuất bảnBài 3 : Tạo lập quyền hạn mượn sách của từng sinh viên (2 – 5 quyểntháng). Tính toán số lượng sinh viên đã mượn quá số lượng quy định
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ý thư viện’’ Thành viên nhóm STT Họ Tên Nhiệm vụ Tạo database tạo table Nguyễn Quốc Tuấn Nguyễn Thị Thu Nhập liệu vào bảng sach Nguyễn Trí Tuệ Nhập liệu vào bảng lop Lê Thanh Tùng Nhập liệu vào bảng sinhvien Đinh Doãn Việt Nhập liệu vào bảng sophieu, làm báo cáo Nguyễn Quang Vinh In báo cáo Phạm Xuân Tùng Chỉnh sửa báo cáo Đặng Ngọc Tú Kiểm tra chỉnh sửa liệu bảng sach , lop Nguyễn Văn Thùy Tạo kết nối diagram 10 Phùng Quốc Vương Chuẩn hóa database 11 Nguyễn Xuân Tuấn Kiểm tra chỉnh sửa liệu bảng sinhvien,sophieu Hà Nội, tháng 03 năm 2019 STT Họ Tên Nguyễn Quốc Tuấn Nguyễn Thị Thu Nguyễn Trí Tuệ Lê Thanh Tùng Đinh Doãn Việt Nguyễn Quang Vinh Phạm Xuân Tùng Đặng Ngọc Tú Nguyễn Văn Thùy 10 Phùng Quốc Vương 11 Nguyễn Xuân Tuấn Chữ ký Nhận xét Điểm số -Phần I Mơ tả tốn Sự cần thiết toán a Sự cần thiết toán Đối với thư viện , CSDL cho phép ta kiểm soát lượng liệu sách, người đọc theo thời gian mà không bị nguy mát liệu Trong thư viện, có nhiều loại sách với nhiều thể loại khác nhau, nhiều tác giả có số lượng lại kho khác Lượng sinh viên vậy, có nhiều sinh viên với nhiều mã sinh viên khác nhau, lớp ngành học khác Cho nên chương trình cho phép kiểm sốt thơng tin thư viện để quản lý phục vụ cho nhu cầu đọc mượn người đọc b Yêu cầu CSDL YC01 - Cho phép lưu , cập nhật thông tin sinhvien với thông tin chi tiết YC02 - Cho phép lưu xuất thông tin loại sách thư viện YC03 - Cho phép tính tổng số lượng sách mượn nhiều theo lớp YC04 - Cho phép hiển thị sinh viên có lượng sách mượn nhiều YC05 - Cho phép hiển thị sinh viên có số tuổi lớn (nhỏ) YC06 – Cho phép cập nhật số lượng sách có update, delete, insert YC07 - Cho hiển thị lớp có sinh viên mượn nhiều (ít) sách YC08 - Cho xuất thông tin chi tiết phiếu mượn YC09 - Hiển thị sinh viên mượn nhiều (ít) sách YC10 - Hiển thị lượng sách mượn theo tên sinh viên , thời gian … YC11 - Hiển thị tác giả có lượng sách mượn nhiều (ít) YC12 - Tạo quyền hạn mượn cho sinh viên YC13 - kiểm tra số lượng sách mượn bảng sophieu có vượt giới hạn update liệu YC14 - Cho phép hiển thị phiếu mượn có thời gian nhiều N ngày YC15 - Cập nhật thêm sinh viên , có sinh viên vào lớp -Phần II Xây dựng liệu Sơ Đồ CSDL Tên CSDL : thuvien Gồm bảng sau : - Bảng sach (masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) - Bảng lop (malop, makhoa, tenlop) - Bảng sinhvien (masv, tensv, namsinh, sdt, malop, tuoi) - Bảng sophieu (maphieu, masv, masach, soluong, ngaym, ngayt) o Bảng sach (masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) bảng lưu thông tin loại sách có thư viện Bảng có thuộc tinh sau : masach mã nhận diện sách tensach tên sách tacgia tác giả sách namxb năm xuất sách nhaxb nhà xuất sách theloai thể loại sách soluong số lượng sách có thư viện Khóa chinh – Primary Key masach Ứng với YC02 o Bảng lop (malop, makhoa, tenlop) bảng lưu thông tin lớp, khoa Bảng có thuộc tinh sau: malop mã nhận diện lớp makhoa mã nhận diện khoa tenlop tên lớp Khóa chinh – Primary Key malop o Bảng sinhvien (masv, tensv, namsinh, sdt, malop) bảng lưu thơng tin sinh viên tồn trường Bảng có thuộc tinh sau : masv mã nhận diện sinh viên tensv họ tên sinh viên namsinh ngày tháng năm sinh sinh viên sdt số điện thoại liên lạc sinh viên malop mã nhận diện lớp sinh viên Khóa chinh – Primary Key masv Khóa ngoại – Foreign key malop Ứng với YC01, YC05 o Bảng sophieu (maphieu, masv, masach, soluongmuon, ngaym, ngayt) bảng lưu thông tin việc mượn sách sinh viên trường thông tin thời hạn mượn Bảng có thuộc tinh sau : maphieu mã nhận diện phiều lần mượn masv mã nhận diện sinh viên mượn sách masach mã nhận diện sách mượn soluongmuon số lượng sách sinh viên mượn ngaym ngày tháng năm sách sinh viên mượn ngayt thời hạn sinh viên phải trả sách Khóa chinh – Primary key masv, masach Khóa ngoại – Foreign Key masv, masach Ứng với YC03, YC04,YC06,YC07,YC08,YC09,YC10 Sơ đồ Diagram : Code T-SQL CREATE DATABASE thuvien GO USE thuvien GO DROP DATABASE thuvien CREATE TABLE sach ( masach NVARCHAR(50) NOT NULL, tensach NVARCHAR(50) NOT NULL, tacgia NVARCHAR(50) NOT NULL, namxb DATE , nhaxb NVARCHAR (50) , theloai NVARCHAR (50), soluong INT , CONSTRAINT pk_masach PRIMARY KEY (masach) ); DROP TABLE sach CREATE TABLE lop ( malop NVARCHAR(50), tenkhoa NVARCHAR(50), tenlop NVARCHAR(50), CONSTRAINT pk_malop PRIMARY KEY (malop), ); DROP TABLE lop CREATE TABLE sinhvien ( masv NVARCHAR(50), tensv NVARCHAR(50), namsinh DATE , sdt NVARCHAR(50), malop NVARCHAR(50), CONSTRAINT pk_masv PRIMARY KEY (masv), CONSTRAINT fk_sinhvien_malop FOREIGN KEY (malop) REFERENCES lop(malop) ON DELETE CASCADE ON UPDATE CASCADE ); DROP TABLE sinhvien CREATE TABLE sophieu ( maphieu NVARCHAR(50), masv NVARCHAR (50), masach NVARCHAR(50), soluongmuon INT , ngaym DATE , ngayt DATE, CONSTRAINT pk_maphieu PRIMARY KEY (masv,masach,maphieu), CONSTRAINT fk_sophieu_masv FOREIGN KEY (masv) REFERENCES sinhvien(masv) ON DELETE CASCADE ON UPDATE CASCADE , CONSTRAINT fk_sophieu_masach FOREIGN KEY (masach) REFERENCES sach(masach) ON DELETE CASCADE ON UPDATE CASCADE ); DROP TABLE sophieu SACH INSERT INTO sach(masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) VALUES ('ta1','tieng anh 1','dh su pham','2016','kim dong','giao trinh','10') INSERT INTO sach(masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) VALUES ('ta2','tieng anh 2','dh su pham','2016','quoc gia','giao trinh','9') INSERT INTO sach(masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) VALUES ('ta3','tieng anh 3','dh bach khoa','2017','dh su pham','giao trinh','11') INSERT INTO sach(masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) VALUES ('c++','ngon ngu lap trinh c','dh su pham','2017','phuong nam','giao trinh','12') INSERT INTO sach(masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) VALUES ('vatly','vat ly dai cuong','dh quoc gia','2018','dh su pham','giao trinh','11') INSERT INTO sach(masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) VALUES ('pldc','phap lat dai cuong','dh luat noi','2014','dh su pham','giao trinh','10') INSERT INTO sach(masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) VALUES ('tcc1','toan cao cap 1','nxb nien','1999','dh su pham','giao trinh','5') INSERT INTO sach(masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) VALUES ('dhmt','do hoa may tinh','dh dien luc','2009','dh dien luc','giao trinh','6') INSERT INTO sach(masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) VALUES ('mmt','mang may tinh','thanh nien','2007','thanh nien','giao trinh','7') INSERT INTO sach(masach, tensach, tacgia, namxb, nhaxb, theloai, soluong) VALUES ('KTMT','KIEN TRUC MAY TINH','DH BACH KHOA','2016','PHUONG NAM','GIAO TRINH','8') LOP INSERT INTO lop(malop, tenkhoa, tenlop) VALUES ('tc-01','1782','the chat') INSERT INTO lop(malop, tenkhoa, tenlop) VALUES ('ta-02','ms13','tieng anh') INSERT INTO lop(malop, tenkhoa, tenlop) VALUES ('cntt','ac14','cong nghe thong tin') INSERT INTO lop(malop, tenkhoa, tenlop) VALUES ('cnpm','df15','cong nghe phan mem') INSERT INTO lop(malop, tenkhoa, tenlop) VALUES ('cot','af72','co dien tu') INSERT INTO lop(malop, tenkhoa, tenlop) VALUES ('h2','ck13','dien') INSERT INTO lop(malop, tenkhoa, tenlop) VALUES ('qtdn','qt3','kinh te') INSERT INTO lop(malop, tenkhoa, tenlop) VALUES ('cota','ck14t','co ban') SINHVIEN INSERT INTO sinhvien(masv,tensv,namsinh,sdt,malop) VALUES ('1781310183','dinh doan viet','1998/01/02','0965062715','tc-01') INSERT INTO sinhvien(masv,tensv,namsinh,sdt,malop) VALUES ('1781310184','nguyen thi thu','1997/01/03','0965062716','ta-02') INSERT INTO sinhvien(masv,tensv,namsinh,sdt,malop) VALUES ('1781310185','nguyen quang vinh','1996/01/04','0965062717','cntt') INSERT INTO sinhvien(masv,tensv,namsinh,sdt,malop) VALUES ('1781310186','nguyen quoc tuan','1999/01/05','0965062718','cnpm') INSERT INTO sinhvien(masv,tensv,namsinh,sdt,malop) VALUES ('1781310187','nguyen tri tue','2000/01/06','0965062719','cot') INSERT INTO sinhvien(masv,tensv,namsinh,sdt,malop) VALUES ('1781310188','nguyen xuan tuan','2000/01/07','0965062710','h2') INSERT INTO sinhvien(masv,tensv,namsinh,sdt,malop) VALUES ('1781310189','pham xuan tung','1999/01/09','0965062711','qtdn') INSERT INTO sinhvien(masv,tensv,namsinh,sdt,malop) VALUES ('1781310190','le tung','1999/01/08','0965062712','cota') INSERT INTO sinhvien(masv,tensv,namsinh,sdt,malop) VALUES ('1781310191','nguyen quoc ha','1998/01/10','0965062713','cnpm') INSERT INTO sinhvien(masv,tensv,namsinh,sdt,malop) VALUES ('1781310192','nguyen xuan duc','1999/01/11','0965062714','cnpm') SOPHIEU INSERT INTO sophieu(maphieu, masv, masach,soluongmuon, ngaym, ngayt) VALUES ('157','1781310183','ta1','1','2018/12/27','2018/12/27') INSERT INTO sophieu(maphieu, masv, masach,soluongmuon, ngaym, ngayt) VALUES ('489','1781310192','ta2','2','2018/12/28','2018/12/30') INSERT INTO sophieu(maphieu, masv, masach,soluongmuon, ngaym, ngayt) VALUES ('773','1781310185','ta3','3','2018/12/26','2019/01/05') INSERT INTO sophieu(maphieu, masv, masach,soluongmuon, ngaym, ngayt) VALUES ('480','1781310184','c++','1','2018/12/25','2019/01/06') INSERT INTO sophieu(maphieu, masv, masach,soluongmuon, ngaym, ngayt) VALUES ('470','1781310186','vatly','4','2018/12/24','2019/01/07') INSERT INTO sophieu(maphieu, masv, masach,soluongmuon, ngaym, ngayt) VALUES ('175','1781310189','pldc','2','2018/12/22','2019/01/08') INSERT INTO sophieu(maphieu, masv, masach,soluongmuon, ngaym, ngayt) VALUES ('982','1781310187','tcc1','1','2018/12/23','2019/01/09') INSERT INTO sophieu(maphieu, masv, masach,soluongmuon, ngaym, ngayt) VALUES ('123','1781310184','dhmt','3','2018/12/21','2019/01/10') INSERT INTO sophieu(maphieu, masv, masach,soluongmuon, ngaym, ngayt) VALUES ('456','1781310191','mmt','2','2018/12/20','2019/01/11') INSERT INTO sophieu(maphieu, masv, masach,soluongmuon, ngaym, ngayt) VALUES ('124','1781310184','ta1','3','2018/12/27','2019/01/01') Bài Tập 1.Nguyễn Quốc Tuấn : Bài : Lớp có sinh viên mượn sách Bài : Tính tổng sinh viên lớp mượn sách Bài : Chỉnh sửa sở liệu để in phiếu người mượn (số lượng mượn, tên sách, tác giá, thời gian …) Bài : khởi tạo trigger Update Số Lượng sách bảng Sophieu sach Bài : Tạo procedure cho câu INSERT để thêm sinh viên vào bảng lớp -Bai Tap : Hiển thị danh sách lớp có sinh viên mượn sách SELECT lop.malop AS N'Mã Lớp',lop.tenlop AS N'Tên Lớp', sinhvien.tensv AS N'Tên Sinh Viên', sophieu.soluongmuon AS N'Số Lượng Mượn' FROM lop,sinhvien,sophieu WHERE sinhvien.masv=sophieu.masv AND sinhvien.malop=lop.malop GROUP BY sinhvien.tensv, sophieu.soluongmuon, lop.malop, lop.tenlop HAVING SUM(soluongmuon)Giải thích: Cập nhật bảng sinh viên thay đổi giá trị tên sinh viên có mã sinh viên '1781310183' DINH DOAN VIET = Nguyen Van Thuy Bài : Sử dụng Procedure tạo procedure lấy danh sách sinh viên alter PROCEDURE udsDanhSachSinhVien AS BEGIN SELECT masv, tensv, namsinh FROM sinhvien END tạo procedure lấy danh sách sinh viên theo mã sinh viên alter PROCEDURE udsLaySinhVienByID @masv nvarchar(50) AS BEGIN SELECT masv, tensv, namsinh FROM sinhvien WHERE masv = @masv END Bài 5: Sử dụng Trigger Tao trigger de bat loi so luong nhap Alter trigger TRKiemTraSL on sach For Insert As if exists (Select soluong From sach Where soluong < ) print 'So luong nhap khong dung xin moi nhap lai' else print 'Nhap Du Lieu Thanh Cong' RollBack Tran 10.Phùng Quốc Vương : Bài : Số lượng sách mượn 2017 Bài : Cập nhật mã lớp sinh viên, Tính lại tổng sách mượn lớp Bài : Lập bảng tác giả với chiết khấu (giảm giá) Tính tốn số tiền phải trả cho tổng lượng sách tác giả Bài : Từ bảng sinh viên hiển thị masv,tensv,sdt,malop theo năm sinh Bài : Cập nhật bảng mã sv sau sửa Bài : Số lượng sách mượn 2017 SELECT SUM (soluong) AS 'sosachmuon' FROM SOPHIEU WHERE YEAR(NGAYM)='2018'; Bài Cập nhật mã lớp sinh viên Tính lại tổng sách mượn lớp Update malop Set malop1=malop01,malop2=malop02, ,malopn=malop0n Where Lop; SELECT SUM(sophieu.soluongmuon) as soluongmuon,lop.malop,lop.tenlop from sophieu inner join sinhvien on sinhvien.masv = sophieu.masv inner join lop on lop.malop = sinhvien.malop GROUP BY lop.malop,lop.tenlop Bài Lập bảng tác giả với chiết khấu ( giảm giá ).Tính tốn số tiền phải trả cho tổng lượng sách củ atừng tác giả Create Table Tacgia( Ten vachar (20) not null, Chietkhau int not null, Sotiendachietkhau int not null, ); Select tacgia , Sum(sotienphaitra) as sl_tienphaitra From chietkhau,sotiendachietkhau Where chietkhau.masach = sotiendachietkhau.masach GROUP BY tacgiavoichietkhau) Bai : TỪ bảng sinh viên hiển thị masv,tensv,sdt,malop theo năm sinh create view v_sinhvien AS ( SELECT sinhvien.masv, sinhvien.tensv, sinhvien.sdt, sinhvien.malop, namsinh FROM sinhvien ) DROP VIEW v_sinhvien CREATE PROCEDURE hienthinamsinh @namsinh INT AS BEGIN SELECT * FROM v_sinhvien WHERE YEAR (namsinh) = @namsinh END EXEC hienthinamsinh '1999' DROP PROCEDURE hienthinamsinh Bài Cập nhật bảng mã sinh viên sau sửa UPDATE sinhvien SET masv = masv + ( SELECT (mCREATE TRIGGER ktr_masv ON sinhvien FOR INSERT AS BEGIN UPDATE sinhvien SET masv = masv - ( SELECT masinhvien FROM inserted - WHERE masinhvien = sinhvien.masv ) FROM sinhvien JOIN inserted ON sinhvien.masv = inserted.masv END drop trigger ktr_masv CREATE TRIGGER delete_masv ON sinhvien FOR DELETE AS BEGIN UPDATE sinhvien SET masv = masv + ( SELECT masv FROM deleted WHERE masv = sinhvien.masv ) FROM sinhvien JOIN deleted ON sinhvien.masv = deleted.masv END drop trigger delete_sinhvien CREATE TRIGGER update_masv ON sinhvien FOR UPDATE AS BEGIN asv) FROM inserted WHERE masv = sinhvien.masv ) - (SELECT (masv) FROM deleted WHERE masv = sinhvien.masv) FROM sach JOIN deleted ON sinhvien.masv = deleted.masv END drop trigger update_sinhvien 11.Nguyễn Xuân Tuấn : Bài : Sinh viên mượn sách 20 tuổi Bài : Cập nhật thể loại sách Tính lại tổng sách thể loại Bài : Lập bảng Khoa Tính tổng số sinh viên mượn sách Khoa Bài : Từ bảng sinh viên hiển thị masv , tensv có năm sinh 1999,tính tổng số lượng sinh viên có năm sinh 1999 Bài : tạo trigger đảm bảo cập nhật soluong so sánh sách lớn sách cũ Bài : số sinh viên mượn sách 20 tuổi Code minh họa: SELECT DISTINCT SINHVIEN.MASV,SINHVIEN.TENSV FROM SINHVIEN,SOPHIEU WHERE SINHVIEN.MASV=SOPHIEU.MASV AND (YEAR(GETDATE())-YEAR(SINHVIEN.NAMSINH))>'20'; Bài 2: cập nhật thể loại sách , tính lại tổng sách thể loại Cập nhật: SELECT*FROM sach UPDATE sach SET theloai = 'GIAO TRINH 1' WHERE masach ='ta2' tính lại tổng sách thể loại: SELECT theloai, SUM(soluong) AS " tong sach " FROM sach GROUP BY theloai ; câu 3: lập bảng khoa tính tổng số sinh viên mượn sách khoa câu :từ bảng sinh viên hiển thị masv , tensv có năm sinh 1999 tính tổng số lượng sinh viên có năm 1999: hiển thị SELECT masv,tensv FROM sinhvien WHERE YEAR(namsinh) ='1999'; tính tổng SELECT COUNT(*) AS "tongsv1999" FROM sinhvien WHERE YEAR(namsinh) ='1999'; câu 5: tạo trigger đảm bảo cập nhật soluong sách lớn số lượng sách ban đầu: ... cần thiết toán a Sự cần thiết toán Đối với thư viện , CSDL cho phép ta kiểm soát lượng liệu sách, người đọc theo thời gian mà không bị nguy mát liệu Trong thư viện, có nhiều loại sách với nhiều... tin loại sách có thư viện Bảng có thuộc tinh sau : masach mã nhận diện sách tensach tên sách tacgia tác giả sách namxb năm xuất sách nhaxb nhà xuất sách theloai thể loại sách soluong... NHẬT BẢNG SÁCH SAU KHI THÊM DỮ LIỆU BẢNG PHIẾU MƯỢN ĐỂ ĐẢM BẢO CHO DỮ LIỆU LN ĐÚNG TRONG SUỐT Q TRÌNH LÀM VIỆC EM SẼ XĨA TỒN BỘ DỮ LIỆU CỦA BẢNG SOPHIEU VÀ TẠO TRIGGER Xóa Tồn Bộ Dữ Liệu Có Trong