























Preview text:
  lOMoAR cPSD| 36006831
TRƯỜNG ĐH CÔNG NGHỆ GIAO THÔNG VẬN TẢI 
KHOA HỆ THỐNG THÔNG TIN 
----- o0o ----- 
BÁO CÁO BÀI TẬP LỚN 
MÔN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU 
Đề tài: Quản Lý Thư Viện 
Giảng viên bộ môn :  Lớp: 
72 DCHT 22  Nhóm sinh viên : 
1 .Ninh Đức Toàn 
2 . Lã Văn Toàn 
3 . Vũ Thanh Nam 
4 . Trần Đình Thành 
  Hà Nội  –   2023          lOMoAR cPSD| 36006831 MỤC LỤC  
No table of contents entries found.      lOMoAR cPSD| 36006831       lOMoAR cPSD| 36006831
I.Phát biểu bài toán  
Để quản lý thư viện một cách hợp lý và hiệu quả , ta cần xây dựng một hệ thống 
quản lý thư viện một cách hiệu quả và tối ưu nhất. Vì vậy, cần xác định rõ các chủ thể 
cần quản lý cũng như các hoạt động chính. 
Qua việc tìm kiếm và tham khảo các mô hình quản lý các hoạt động của thư viện 
trường học, ta có thể thấy được các chủ thể chính cần được quản lý : quản lý sách 
của thư viện, quản lý nhân viên làm việc cho thư viện, quản lý NXB, quản lý việc 
mượn trả sách của thư viện và quản lý thẻ độc giả.  Quản lý Sách:  - 
Thư viện có nhiều SÁCH, mỗi sách sẽ bao gồm các thông tin như mã 
sách,tên sách, tác giả, thể loại, năm xuất bản,số lượng, giá tiền. Các cuốn 
sách phân biệt với nhau bằng mã sách và tên sách không trùng nhau.  Quản lý NXB:  - 
Trong mỗi cuốn sách có chứa thông tin của NHÀ XUẤT BẢN. Một NXB 
cóthể cung cấp một hoặc nhiều sách cho thư viện.Và để tiện cho việc liên 
lạc cần lưu lại thông tin của NXB gồm: Mã NXB ,tên NXB, Địa chỉ,email, 
SĐT. Quản lý Nhân viên:  - 
Mỗi NHÂN VIÊN làm việc trong thư viện cần lưu lại các thông tin sau: 
MãNV, Họ tên, Ngày sinh, Ngày vào làm , SĐT, Giới tính,Địa chỉ, HSL, PC. 
Quy định mỗi nhân viên phải có mã riêng biệt và lớn hơn 18 tuổi. 
Quản lý Thẻ Độc Giả:  - 
Khi đến mượn sách, độc giả sẽ được cấp một THẺ ĐỘC GIẢ, trên đó có 
mãthẻ (Mã thẻ được đánh số tự động bắt dầu từ 1,2,3…), tên độc giả , 
ngày sinh, giới tính, địa chỉ, số điện thoại, ngày bắt đầu, ngày hết hạn. Với 
mỗi thẻ, độc giả có thể mượn được nhiều sách và ngược lại mỗi sách có 
thể được mượn bởi nhiều thẻ độc giả.  1    lOMoAR cPSD| 36006831
Quản lý Phiếu Mượn Trả:  - 
Độc giả sau khi đến mượn sách cần lưu lại thông tin của PHIẾU MƯỢN 
TRẢ bao gồmmã mượn trả, ngày mượn , ngày hẹn trả. Độc giả chỉ được 
mượn sách tối đa trong 15 ngày kể từ ngày mượn. 
II.Xây dựng bảng cơ sở dữ liệu của bài toán  
1.Mô hình cơ sở dữ liệu (cấu trúc các bảng) 
NXB: lưu trữ thông tin của bảng NXB  STT Tên thuộc tính  Kiểu dữ liệu  Ràng buộc Ghi chú  1  MaNXB  varchar(10)  PK  Mã nhà xuất bản  2  TenNXB  nvarchar(100)    Tên nhà xuất bản  3  Diachi  nvarchar(100)    Địa chỉ  4  Email  varchar(100)    Email  5  SDT  int    Số điện thoại 
SACH: lưu trữ thông tin của bảng sách  STT Tên thuộc  Kiểu dữ liệu  Ràng buộc  Ghi chú  tính  1  MaSach  varchar(10)  PK  Mã sách  2  MaNXB  varchar(10)  FK, tham chiếu NXB  Mã nhà xuất  bản  3  TenSach  nvarchar(100)  Tên sách  4  TacGia  nvarchar(100)  Tác giả  5  TheLoai  varchar(100)    Thể loại  6  NamXB  date    Năm xuất bản  7  SoLuong  int    Số lượng  8  GiaTien  float    Giá tiền 
NHANVIEN : lưu trữ thông tin của bảng NHÂN VIÊN  2    lOMoAR cPSD| 36006831 STT Tên thuộc  Kiểu dữ liệu  Ràng buộc  Ghi chú  tính  1  MaNV  varchar(10)  PK  Mã nhân viên  2  TenNV  nvarchar(100)  Tên nhân viên  3  NgaySinh  Date    Ngày sinh  4  NgayVaoLam  date    Ngày vào làm  5  SDT  int    Số diện thoại  6  GioiTinh  varchar(10)    Giới tính  7  DiaChi  Nvarchar(100)  Địa chỉ  8  HeSoLuong  Float    Hệ số lương  9  PhuCap  Float    Phụ cấp 
THEDOCGIA: lưu trữ thông tin của bảng THẺ ĐỘC GIẢ 
STT Tên thuộc tính Kiểu dữ liệu  Ràng buộc  Ghi chú  1  Mathe  Varchar(10)  PK  Mã thẻ  2  TenDG  nvarchar(100)  Tên độc giả  3  NgaySinh  Date    Ngày sinh  4  GioiTinh  varchar(10)    Giới tính  5  DiaChi  nvarchar(30)    Địa chỉ  6  SDT  varchar(10)    Số diện  thoại  2  Ngaybatdau  Date  Ngày bắt    đầu  3  Ngayhethan  Date    Ngày hết  hạn 
PHIEUMUONTRA: lưu trữ thông tin của PHIẾU MƯỢN TRẢ  3    lOMoAR cPSD| 36006831 STT Tên thuộc tính  Kiểu dữ liệu  Ràng buộc  Ghi chú  1  MaMT  varchar(10)  PK  Mã mượn  trả  2  Mathe  varchar(10)  FK, tham chiếu đến  Mã thẻ  THEDOCGIA  3  MaNV  varchar(10)  FK, tham chiếu đến  Mã nhân  NHANVIEN  viên  4  NgayMuon  Date    Ngày  mượn  5  NgayHenTra  Date    Ngày hẹn  trả 
CT_PHIEUMUONTRA :lưu trữ thông tin của bảng CHI TIẾT PHIẾU MƯỢN  TRẢ  STT Tên thuộc tính  Kiểu dữ liệu  Ràng buộc  Ghi chú  1  MaMT  varchar(10)  PK  Mã mượn trả  2  Masach  varchar(10)  PK,FK, tham chiếu  Mã sách  đến SACH  3  NgayTra  Date    Ngày trả  4  TinhTrang  Nvarchar(20)    Tình trạng 
2.Mô hình thực thể liên kết(diagram):    4    lOMoAR cPSD| 36006831  
III.Thiết Lập Cơ Sở Dữ Liệu a.Tạo 
database   CREATE DATABASE QLTHUVIEN  GO  USE QLTHUVIEN  GO  b.Tạo bảng  1. Bảng NXB   CREATE TABLE NXB (  5    lOMoAR cPSD| 36006831 MaNXB VARCHAR(10) NOT NULL, 
TenNXB NVARCHAR(100) UNIQUE NOT  NULL, 
Diachi NVARCHAR(100) NOT NULL,  Email VARCHAR(100) NOT NULL,  SDT INT NOT NULL 
CONSTRAINT PRK_NXB PRIMARY KEY (MaNXB));  2. Bảng SACH  CREATE TABLE SACH ( MaSach  VARCHAR(10) NOT NULL,  MaNXB VARCHAR(10) NOT NULL, 
TenSach NVARCHAR(100) UNIQUE NOT NULL, 
TacGia NVARCHAR(100) NOT NULL, TheLoai NVARCHAR(100)  NULL,  NamXB INT NOT NULL, SoLuong  INT NOT NULL,  GiaTien FLOAT NOT NULL, 
CONSTRAINT PRK_MaSach PRIMARY KEY (MaSach));  3. Bảng NHANVIEN   CREATE TABLE NHANVIEN ( MaNV  VARCHAR(10) NOT NULL, 
TenNV NVARCHAR(100) NOT NULL, NgaySinh  DATE NOT NULL, 
NgayVaoLam DATE NOT NULL, SDT INT  NOT NULL, 
GioiTinh VARCHAR(10) NOT NULL, 
DiaChi NVARCHAR(100) NOT NULL , HeSoLuong  FLOAT NOT NULL ,  PhuCap FLOAT NOT NULL , 
CONSTRAINT PRK_MaNV PRIMARY KEY (MaNV) );  4. Bảng THEDOCGIA   CREATE TABLE THEDOCGIA( MaThe  VARCHAR(10) NOT NULL,  6    lOMoAR cPSD| 36006831 TenDG NVARCHAR(100) NOT NULL, 
NgaySinh DATE NULL, GioiTinh VARCHAR(10)  NOT NULL, 
DiaChi NVARCHAR(100) NOT NULL, SDT  INT NULL,  Ngaybatdau DATE NOT NULL,  Ngayhethan DATE NOT NULL, 
CONSTRAINT PK_MaThe PRIMARY KEY (MaThe)); 
5. Bảng PHIEUMUONTRA   CREATE TABLE PHIEUMUONTRA (  MaMT INT NOT NULL, MaThe  VARCHAR(10) NOT NULL,  MaNV VARCHAR(10) NOT NULL,  NgayMuon DATE NOT NULL,  NgayHenTra DATE NOT NULL 
CONSTRAINT PK_MaMT PRIMARY KEY (MaMT)); 
6. Bảng CT_PHIEUMUONTRA  
CREATE TABLE CT_PHIEUMUONTRA ( MaMT  INT NOT NULL,  MaSach VARCHAR(10) NOT NULL ,  NgayTra DATE NULL, 
TinhTrang NVARCHAR(20) NOT NULL 
CONSTRAINT PK_CT_MaMT PRIMARY KEY (MaMT,MaSach)); c,  
Tạo ràng buộc  
1. Ràng buộc trong bảng SACH 
ALTER TABLE SACH ADD CONSTRAINT FK_MaNXB FOREIGN KEY (MaNXB )  REFERENCES NXB (MaNXB) 
2. Ràng buộc trong bảng PHIEUMUONTRA 
ALTER TABLE PHIEUMUONTRA ADD CONSTRAINT FK_Mathe FOREIGN 
KEY(MaThe) REFERENCES THEDOCGIA(MaThe);  ALTER TABLE PHIEUMUONTRA ADD  CONSTRAINT FK_MaNV FOREIGN  7    lOMoAR cPSD| 36006831
KEY(MaNV) REFERENCES NHANVIEN(MaNV); 
3. Ràng buộc trong bảng CT_PHIEUMUONTRA 
ALTER TABLE CT_PHIEUMUONTRA ADD CONSTRAINT FK_MaMT FOREIGN 
KEY(MaMT ) REFERENCES PHIEUMUONTRA (MaMT ); 
ALTER TABLE CT_PHIEUMUONTRA ADD  CONSTRAINT FK_MaSach 
FOREIGN KEY(MaSach ) REFERENCES SACH(MaSach); 
IV. Chèn dữ liều vào bảng  
1.Chèn dữ liệu bảng NXB  INSERT INTO NXB VALUES 
('NXB001', N'Kim Đồng', N'55 Quang Trung,Hà Nội','nxbkimdong@gmail.com',  '0343023261'), 
('NXB002', N'Bách Khoa Hà Nội', N'42 Hai Bà Trưng,Hà 
Nội','nxbbachkhoahn@gmail.com', '0968103472'), 
('NXB003', N'Dân Trí', N'Hoàng Cầu,Đống Đa,Hà Nội','nxbdantri@gmail.com',  '0344688190'), 
('NXB004', N'Phụ Nữ', N'39 Hàng Chuối,Hà Nội','nxbphunu@gmail.com', '0267748899'), 
('NXB005', N'Thông Tấn', N'79 Hoàn Kiếm,Hà Nội','nxbthongtan@gmail.com',  '0927361782'), 
('NXB006', N'Thời Đại', N'Mỹ Đình 1,Từ Liêm,Hà Nội','nxbthoidai@gmail.com',  '0349960221'), 
('NXB007', N'Văn học', N'Trúc Bạch,Ba Đình,Hà Nội','nxbvanhoc@gmail.com',  '0349991890'), 
('NXB008', N'Hà Nội', N'Tống Duy Tân,Hoàn Kiếm,Hà Nội','nxbhanoi@gmail.com',  '0260201988')   
2.Chèn dữ liệu bảng SACH  8    lOMoAR cPSD| 36006831 INSERT INTO SACH VALUES 
('S001', 'NXB001', N'Chiến tranh và hòa bình', N'L.Tonxtoi', N'Văn học nghệ thuật', 2009,  120,70000), 
('S002', 'NXB001', N'Tuổi thơ dữ dội', N'Phùng Quán', N'Truyện ngắn', 2015, 120,70000), 
('S003', 'NXB002', N'Tôi thấy hoa vàng trên cỏ xanh', N'Nguyễn Nhật Ánh',N'Tiểu thuyết',  2015, 100,63000), 
('S004', 'NXB002', N'Bến không chồng', N'Dương Hướng', N'Tiểu thuyết', 2014, 90,50000), 
('S005', 'NXB003', N'Vợ nhặt', N'Kim Lân', N'Truyện ngắn', 2010, 110,70000), 
('S006', 'NXB003', N'Người xa lạ', N'Abert Camus', N'Văn học nghệ thuật', 2010,  78,100000), 
('S007', 'NXB003', N'Mắt biếc', N'Nguyễn Nhật Ánh', N'Truyện ngắn', 2014, 60,45000), 
('S008', 'NXB004', N'Tam quôc diên nghĩa', N'La Quán Trung', N'Văn học nghệ thuật', 2010,  100,200000), 
('S009', 'NXB004', N'Những ngày thơ ấu', N'Nguyên Hồng ', N'Truyện ngắn', 2015,  190,45000), 
('S010', 'NXB004', N'Số đỏ', N'Vũ Trọng Phụng', N'Tiểu thuyết', 2015, 100,95000), 
('S011', 'NXB005', N'Những tấm long cao cả', N'Emondo De Amicis', N'Tiêu thuyết', 2010,  30,100000), 
('S012', 'NXB005', N'Lò sát sinh số 5', N'Kurt Vonnegut', N'Kinh dị ', 2013, 190,65000), 
('S013', 'NXB006', N'Phía sau nghi can X', N'Higasino Keigo', N'Trinh thám', 2013,  40,105000), 
('S014', 'NXB006', N'Bí mật của Naoko', N'Higasino Keigo', N'Trinh thámTruyện ngắn',  2016, 170,210000), 
('S015', 'NXB007', N'Đề thi đấm máu', 'Lôi Mễ', N'Kinh dị', 2010, 150,80000), 
('S016', 'NXB007', N'Tắt Đèn', N'Ngô Tất Tố',N'Truyện ngắn', 2013, 100,45000), 
('S017', 'NXB008', N'Án mạng trên sông Nile', N'Agatha Christie',N'Trinh thám', 2011,  32,199000);  9    lOMoAR cPSD| 36006831  
3.Chèn dữ liệu bảng NHANVIEN  INSERT INTO NHANVIEN VALUES 
('NV001', N'Lã Văn Toàn', '2003/12/10','2022/01/01','0963974836', N'Nam', N'Hai Bà  Trưng,Hà Nội',5.6,0.5), 
('NV002', N'Vı Ngọc Quỳnh', '2000/08/18','2022/11/01', '0967220264',N'Nữ', N'Gia Lâm,Hà  Nội',4.3,0.2), 
('NV003', N'Ninh Đức Toàn', '2003/07/13','2023/8/01', '0965458216',N'Nam', N'Triều  khúc,Hà Nội',6.1,0.4), 
('NV004', N'Vũ Thanh Nam', '2000/09/19','2022/11/01', '0967468137',N'Nam', N'Kim  Giang,Hà Nội',4.5,0.3), 
('NV005', N'Trần Đình Thành', '2001/05/17','2023/11/01', '0964563249',N'Nam', N'Gia  Lâm,Hà Nội',4.9,0.4), 
('NV006', N'Trần Nghĩa Trung', '2000/06/18','2023/05/01', '0965647825',N'Nữ', N'Gia  Lâm,Hà Nội',4.1,0.5), 
('NV007', N'Đào Bích Hạnh', '1995-05-16','2014-12-19','0383640295',N'Nam', N'Huyện Ý  Yên, Nam Định',6.3,0.6);  10    lOMoAR cPSD| 36006831  
4.Chèn dữ liệu bảng THEDOCGIA  INSERT INTO THEDOCGIA VALUES 
('T001', N'Đào Thị Quỳnh','1999/11/20',N'Nữ',N'Q.Hoàng Mai,Hà 
Nội','0929033563','2022/07/12','2023/07/12'), 
('T002', N'Giang Bích Ngọc','2001/10/10',N'Nữ',N'Tân Sơn,Phú 
Thọ','0965273925','2022/05/20','2023/05/20'), 
('T003', N'NGuyễn Phúc Ninh','2006/06/13',N'Nam',N'Kiên Xương , Thái 
Bình','0912364892','2022/05/20','2023/05/20'), 
('T004', N'Trần Hoang Lân','2007/04/30',N'Nam',N'Vụ Bản, Nam 
Định','0912567953','2022/06/20','2023/06/20'), 
('T005', N'Nguyễn Thị Lan Nhi','2001/04/12',N'Nữ',N'Nghĩa Hưng, Nam 
Định','091215697','2022/01/20','2023/01/20'), 
('T006', N'Đỗ Tuấn Phong','2003/08/03',N'Nam',N'Thanh Xuân, Hà 
Nội','091265259','2022/12/20','2023/12/20'), 
('T007', N'Phạm Minh Nhật','2003/05/03',N'Nam',N'Ba Vì, Hà 
Nội','091265549','2022/11/27','2023/11/27'), 
('T008', N'Chu Thanh Hà','2003/09/28',N'Nữ',N'Ninh 
Bình','091265659','2022/12/20','2023/12/20'), 
('T009', N'Cao Minh Kỳ','1990/04/11',N'Nam',N'Q.Ba Đình,Hà 
Nội','0374950570','2022/10/09','2023/10/09'), 
('T010', N'Trần Tiến Minh','2002/11/29',N'Nam',N'Hải Hậu,Nam 
Định','0337488963','2023/05/19','2023/05/19')  11    lOMoAR cPSD| 36006831  
5.Chèn bảng dữ liệu PHIEUMUONTRA  INSERT INTO PHIEUMUONTRA  VALUES 
('1','T001', 'NV001', '2023/08/20','2023/08/30'), ('2','T001', 
'NV002', '2023/11/05','2023/11/19'), 
('3','T002', 'NV003', '2023/05/21','2023/05/29'), ('4','T002', 
'NV001', '2023/09/11','2023/09/17'), 
('5','T003', 'NV006', '2022/12/29','2023/01/10'), 
('6','T004', 'NV007', '2023/03/10','2023/03/21'), 
('7','T006', 'NV005', '2022/12/27','2023/01/06'), 
('8','T008', 'NV004', '2022/11/22','2022/12/02'), 
('9','T009', 'NV003', '2023/10/10','2023/10/20'), 
('10','T010', 'NV002', '2023/05/20','2023/05/30')   
6.Chèn dữ liệu bảng CT_PHIEUMUONTRA  INSERT INTO CT_PHIEUMUONTRA  VALUES 
('1', 'S001','2023/08/26', N'Đã trả'), 
('1', 'S002','2023/08/30', N'Đã trả'),  12    lOMoAR cPSD| 36006831
('1', 'S003','2023/08/30', N'Đã trả'), ('2', 
'S004',NULL, N'Đang mượn'), 
('2', 'S005',NULL, N'Đang mượn'), ('3', 
'S006','2023/05/29', N'Đã trả'), 
('3', 'S007', NULL , N'Làm mất'), 
('4', 'S003', NULL , N'Làm mất'), 
('5', 'S006','2023/01/15', N'Đã trả'), ('5',  'S008', NULL, N'Làm mất'), 
('5', 'S014','2023/01/10', N'Đã trả'), 
('6', 'S001','2023/03/18', N'Đã trả'), 
('6', 'S003','2023/03/23', N'Đã trả'), 
('6', 'S006','2023/03/18', N'Đã trả'), 
('7', 'S001','2023/01/10', N'Đã trả'), 
('8', 'S002','2022/12/02', N'Đã trả'), 
('8', 'S008','2022/12/09', N'Đã trả'), 
('9', 'S011',NULL, N'Làm mất'), 
('10', 'S010','2023/05/30', N'Đã trả'), 
('10', 'S016','2023/05/30', N'Đã trả')   
V. Truy vấn dữ liệu   13    lOMoAR cPSD| 36006831
--1. Cho biết tên những cuốn sách chưa được mượn lần nào   SELECT MaSach,TenSach  FROM SACH  WHERE MaSach NOT IN 
(SELECT MaSach FROM CT_PHIEUMUONTRA)   
--2. Cho biết những nhân viên có địa chỉ ở Hà Nội và đã làm việc từ 1 năm trở lên  SELECT TenNV  FROM NHANVIEN 
WHERE Diachi LIKE N'%Hà Nội%' 
AND YEAR(GETDATE()) - YEAR(Ngayvaolam) >=1   
--3. Hiện những độc giả chưa đủ 18 tuổi  SELECT Mathe,TenDG  FROM THEDOCGIA 
WHERE YEAR(GETDATE()) -YEAR(Ngaysinh) <18   
--4. Cho biết tên các sách ,tên NXB thuộc thể loại 'Truyện ngắn' 
SELECT TenSach,TenNXB, TheLoai  FROM SACH INNER JOIN NXB  ON NXB.MaNXB = SACH.MaNXB 
WHERE TheLoai=N'Truyện ngắn'  14    lOMoAR cPSD| 36006831  
--5.Cho biết tổng số lượng sach và tổng số tiền sach của từng NXB 
 SELECT TenNXB,SUM(SoLuong)AS [Tổng số lượng] ,SUM(SoLuong * GiaTien) AS  [Tổng tiền]  FROM SACH INNER JOIN NXB  ON NXB.MaNXB = SACH.MaNXB  GROUP BY TenNXB   
--6. Cho xem danh sách top 3 các đầu sách có số lần mượn nhiều nhất 
SELECT TOP (3) TenSach,COUNT(SACH.MaSach) AS [Số lần mượn] 
FROM SACH INNER JOIN CT_PHIEUMUONTRA 
ON CT_PHIEUMUONTRA.MaSach = SACH.MaSach  GROUP BY TenSach 
ORDER BY COUNT(SACH.MaSach ) DESC   
--7. Hiện tên những độc giả trả sách quá hạn và tính số ngày quá hạn 
SELECT PHIEUMUONTRA.Mathe,TenDG,DATEDIFF(DAY,Ngayhentra,Ngaytra) AS  [Số ngày quá hạn] 
FROM THEDOCGIA INNER JOIN PHIEUMUONTRA  15    lOMoAR cPSD| 36006831
ON PHIEUMUONTRA.MaThe= THEDOCGIA.Mathe INNER JOIN  CT_PHIEUMUONTRA 
ON CT_PHIEUMUONTRA.MaMT = PHIEUMUONTRA.MaMT  WHERE Ngaytra > Ngayhentra   
--8. Cho biết tên độc giả và tính số tiền đền bù khi độc giả làm mất sach ,biết số tiền đền bù  bằng 20 % giá sách 
SELECT THEDOCGIA.Mathe,TenDG,(GiaTien*0.2) AS [Số tiền đền bù] FROM  THEDOCGIA 
INNER JOIN PHIEUMUONTRA ON PHIEUMUONTRA.Mathe = THEDOCGIA.Mathe 
INNER JOIN CT_PHIEUMUONTRA ON CT_PHIEUMUONTRA.MaMT =  PHIEUMUONTRA.MaMT 
INNER JOIN SACH ON SACH.MaSach = CT_PHIEUMUONTRA.MaSach  AND TinhTrang =N'Làm mất'   
VI. Xây dựng các view  
-- 1.Tạo view hiện thÙng tin những độc giả chưa trả s·ch 
CREATE VIEW DocGia_ChuaTraSach  AS 
SELECT DISTINCT THEDOCGIA.MaThe,TenDG  FROM THEDOCGIA  INNER JOIN PHIEUMUONTRA 
ON PHIEUMUONTRA.MaThe = THEDOCGIA.MaThe  INNER JOIN CT_PHIEUMUONTRA 
ON CT_PHIEUMUONTRA.MaMT = PHIEUMUONTRA.MaMT AND  TinhTrang =N'Đang mượn'  16    lOMoAR cPSD| 36006831  
--2. Tạo view hiện tên trong năm 2023, những độc giả nào chỉ đến mượn sách 2 lần  CREATE VIEW DOCGIA_MUON2LAN  AS 
 SELECT TenDG , COUNT(*) AS [số lần] 
 FROM THEDOCGIA INNER JOIN PHIEUMUONTRA 
ON PHIEUMUONTRA.MaThe = THEDOCGIA.MaThe  AND YEAR(NgayMuon) =2023  GROUP BY TenDG 
HAVING COUNT(THEDOCGIA.MaThe) = 2   
--3. Tạo view tính tổng số đầu sách của từng nhà xuất bản  CREATE VIEW Tongdausach_NXB  AS 
 SELECT TenNXB, COUNT(SACH.MaNXB) AS [Tổng đầu sách]  FROM SACH,NXB  WHERE SACH.MaNXB=NXB.MaNXB  GROUP BY TenNXB   
--4. Tạo view thống kê số lượng nhân viên theo giới tính  CREATE VIEW NhanVien_GioiTinh  AS  SELECT   CASE GioiTinh   WHEN 'Nữ' THEN N'Nữ'  17    lOMoAR cPSD| 36006831  ELSE N'Nam'   END AS [Giới tính], 
 COUNT(MaNV) AS [Số Lượng]  FROM NHANVIEN  GROUP BY GioiTinh;   
--5. Tạo view hiện tên những cuốn sách không được mượn vào 12/2022 
CREATE VIEW Sach_Khongduocmuon  AS 
 SELECT CT_PHIEUMUONTRA.Masach,Tensach  FROM SACH  INNER JOIN CT_PHIEUMUONTRA 
ON CT_PHIEUMUONTRA.MaSach = SACH.MaSach  INNER JOIN PHIEUMUONTRA 
ON PHIEUMUONTRA.MaMT = CT_PHIEUMUONTRA.MaMT 
AND MONTH(Ngaymuon) <>12 AND YEAR(NgayMuon) <>2022   
VII. Xây dựng các thủ tục  
--1.Tạo thủ tục in ra thông tin cơ bản của nhân viên với tên nhân viên được nhập vào  18    lOMoAR cPSD| 36006831
CREATE PROC pr_thongtincoban_NhanVien @tennv nvarchar(30)  AS  BEGIN 
IF NOT EXISTS (SELECT* FROM NHANVIEN WHERE TenNV = @tennv ) 
 PRINT N'Không tìm thấy nhân viên có tên '+@tennv  ELSE 
SELECT *FROM NhanVien WHERE TenNV=@tennv END 
pr_thongtincoban_NhanVien @tennv= N'Vı Ngọc Quỳnh'   
 pr_thongtincoban_NhanVien @tennv= N'Nguyễn Thanh Thủy'   
--2.Tạo thủ tục in ra tổng tiền của cuốn sách nào đó với tham số truyền vào là tên sách 
CREATE PROC pr_tongtien_sach @tensach NVARCHAR(50)  AS  BEGIN 
IF not exists (SELECT* FROM Sach WHERE Tensach= @tensach) 
PRINT N'không tồn tại sách có tên '+@tensach  ELSE 
SELECT Tensach [tên sách], SUM(Soluong*Giatien) [tổng tiền sách]  FROM Sach  WHERE Tensach=@tensach  GROUP BY Tensach  END 
EXEC pr_tongtien_sach N'Tuổi thơ dữ dội'   
--3 .Tạo thủ tục cho biết tên nhân viên đã lập phiếu mượn trả với mã phiếu mượn truyền  vào 
CREATE PROC pr_NV_Lap_PM @maphieu INT  AS  BEGIN 
SELECT TenNV AS [tên nhân viên lập phiếu]  FROM NHANVIEN ,PHIEUMUONTRA  19    lOMoAR cPSD| 36006831
WHERE NHANVIEN.MaNV=PHIEUMUONTRA.MaNV  AND MaMT = @maphieu  END 
EXEC pr_NV_Lap_PM @maphieu = 5   
--4 . thủ tục cho biết nhân viên có HSL cao nhất 
CREATE PROC pr_nhanvien_luongcaonhat  AS  BEGIN  DECLARE @hsluongmax FLOAT 
SET @hsluongmax =(SELECT MAX(hesoluong) AS N'Hệ số lương cao nhất' FROM  NHANVIEN) 
SELECT MaNV [mã nhân viên] ,TenNV [ tên nhân viên ], @hsluongmax [hệ số lương cao  nhất]  FROM NHANVIEN  WHERE hesoluong = @hsluongmax  END  EXEC pr_nhanvien_luongcaonhat   
--5 .Tạo thủ tục cho biết tình trạng sách lúc trả của của những độc giả mượn sách với mã  sách đuọc nhập vào 
CREATE PROC pr_TinhTrangSach_ĐG (@masach VARCHAR(10))  AS  BEGIN 
IF NOT EXISTS (SELECT* FROM CT_PHIEUMUONTRA WHERE Masach =  @masach ) 
 PRINT N'không tồn tại mã sách ' +@masach  ELSE 
SELECT TenDG [tên độc giả], Tinhtrang [tình trạng sách] 
FROM PHIEUMUONTRA INNER JOIN CT_PHIEUMUONTRA 
ON CT_PHIEUMUONTRA.MaMT = PHIEUMUONTRA.MaMT  INNER JOIN THEDOCGIA 
ON THEDOCGIA.Mathe=PHIEUMUONTRA.Mathe  AND Masach=@masach  20    lOMoAR cPSD| 36006831 GROUP BY TenDG, Tinhtrang  END 
EXEC pr_TinhTrangSach_ĐG @masach ='S001'    21  
