1.Mô tả hệ thống:Thư viện lưu trữ thông tin về danh mục sách, danh mục độc giả và ghi nhận quá trình mượn trả sách của từng độc giả.. Quy trình mượn trả được thực hiện như sau: - Độc giả
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM
BÁO CÁO CUỐI KÌ
MÔN HỌC: CƠ SỞ DỮ LIỆU
MHP: DMSY230184_23_1_02CLC
GVHD: Lê Thị Minh Châu Sinh viên thực hiện:
TP Hồ Chí Minh, tháng 12 năm 2023
Họ và tên MSSV Hoàng Phan Đăng Anh 22126003 Trương Thi Thảo Uyên 22126074 Hoàng Gia Hân 22126022 Nguyễn Thành Phong 22126045
Trang 21.Mô tả hệ thống:
Thư viện lưu trữ thông tin về danh mục sách, danh mục độc giả và ghi nhận quá trình mượn trả sách của từng độc giả
Mỗi người dùng muốn sử dụng được hệ thống đều phải thực hiện quá trình đăng nhập Nhân viên thư viện có khả năng quản lý danh mục sách: thêm sách mới, thanh lý sách cũ, cập nhật tình trạng của từng quyển sách trong thư viện
Đồng thời, nhân viên thư viện cũng thực hiện quản lý độc giả, lập thẻ độc giả, gia hạn thẻ, thanh lý thẻ
Độc giả có thể sử dụng hệ thống để tra cứu, tìm kiếm sách hoặc xem chi tiết thông tin mượn trả của mình
Quy trình mượn trả được thực hiện như sau:
- Độc giả tự tra cứu xem thông tin về tình trạng và vị trí của những quyển sách cần mượn
- Độc giả tự đến các kệ để lấy sách, mang ra quầy cho mượn
- Thủ thư kiểm tra tình trạng độc giả, kiểm tra sách, nhập các thông tin cần thiết để lập phiếu mượn Trên phiếu cho mượn có ghi rõ ngày hẹn trả của từng quyển sách
Khi độc giả mang sách đến trả thì thủ thư nhận sách, nhập thông tin trả sách và ghi nhận trả, đồng thời có thể tính và thu tiền phạt, tiền đền nếu có Thủ thư sẽ tự mang sách được trả xếp lên kệ ở những vị trí tương ứng
Trưởng thư viện có thể xem thống kê về tình hình mượn trả sách theo từng tháng, quý
Có thể theo dõi tình hình mượn trả của một độc giả hoặc một quyển sách nào đó Ngoài
ra, cũng có thể thay đổi quy định mượn trả
Quản trị hệ thống có nhiệm vụ quản lý người dùng
Trang 32 Sơ đồ ERD
3.Lược đồ quan hệ:
nhanvien (manhanvien, hoten, ngaysinh, gioitinh, sdt, diachi, chucvu) loaisach (maloai, tenloai)
sach (masach, tensach, tacgia, namxuatban, maloai, soluong, giaban) thedocgia (mathe, ngaygiahan, ngayhethan)
docgia (madg, hoten, diachi, ngaysinh, gioitinh, email, dienthoai, mathe) phieumuon (maphieu, ngaymuon, ngaytra, mathe, manhanvien)
lapphieumuon (maphieu, masach, soluong)
phieuphat (maphieu, ngayphat, sotien, lydo, mathe, manhanvien)
Trang 44 Tạo CSDL với SQL SERVER
Create database QLTV;
use QLTV;
Tạo bảng nhân viên
CREATE TABLE nhanvien (
manhanvien INT PRIMARY KEY, hoten NVARCHAR(100),
ngaysinh DATE,
gioitinh NVARCHAR(3),
sdt NVARCHAR(15),
diachi NVARCHAR(100),
chucvu NVARCHAR(50)
);
Tạo bảng loại sách
CREATE TABLE loaisach (
maloai INT PRIMARY KEY, tenloai NVARCHAR(50)
);
Tạo bảng sách
CREATE TABLE sach (
masach INT PRIMARY KEY, tensach NVARCHAR(100),
tacgia NVARCHAR(100),
namxuatban INT,
maloai INT,
Trang 5soluong INT,
giaban DECIMAL(18, 2),
FOREIGN KEY (maloai) REFERENCES loaisach(maloai) );
Tạo bảng thẻ độc giả
CREATE TABLE thedocgia (
mathe INT PRIMARY KEY,
ngaygiahan DATE,
ngayhethan DATE
);
Tạo bảng độc giả
CREATE TABLE docgia (
madg INT PRIMARY KEY,
hoten NVARCHAR(100),
diachi NVARCHAR(100),
ngaysinh DATE,
gioitinh NVARCHAR(3),
email NVARCHAR(100),
dienthoai NVARCHAR(15),
mathe INT,
FOREIGN KEY (mathe) REFERENCES thedocgia(mathe) );
Tạo bảng phiếu mượn
CREATE TABLE phieumuon (
Trang 6maphieu INT PRIMARY KEY,
ngaymuon DATE,
ngaytra DATE,
mathe INT,
manhanvien INT,
FOREIGN KEY (mathe) REFERENCES thedocgia(mathe),
FOREIGN KEY (manhanvien) REFERENCES nhanvien(manhanvien) );
Tạo bảng chi tiết phiếu mượn
CREATE TABLE chitietphieumuon (
maphieu INT,
masach INT,
soluong INT,
PRIMARY KEY (maphieu, masach),
FOREIGN KEY (maphieu) REFERENCES phieumuon(maphieu), FOREIGN KEY (masach) REFERENCES sach(masach)
);
Tạo bảng phiếu phạt
CREATE TABLE phieuphat (
maphieu INT PRIMARY KEY,
ngayphat DATE,
sotien DECIMAL(18, 2),
lydo NVARCHAR(255),
mathe INT,
manhanvien INT,
Trang 7FOREIGN KEY (mathe) REFERENCES thedocgia(mathe),
FOREIGN KEY (manhanvien) REFERENCES nhanvien(manhanvien)
);
5 Chèn dữ liệu
INSERT INTO nhanvien (manhanvien, hoten, ngaysinh, gioitinh, sdt, diachi, chucvu) VALUES
(1, N'Nguyễn Văn An', '1990-01-05', N'Nam', '0987654321', N'Hà Nội', N'Trưởng thư viện'),
(2, N'Trần Thị Binh', '1995-03-10', N'Nữ', '0901234567', N'Hồ Chí Minh', N'Nhân viên'), (3, N'Lê Văn Chương', '1985-12-20', N'Nam', '0978123456', N'Đà Nẵng', N'Nhân viên'), (4, N'Phạm Thị Doanh', '1992-07-15', N'Nữ', '0912345678', N'Hải Phòng', N'Nhân viên'), (5, N'Hoàng Văn Bình', '1988-09-25', N'Nam', '0965432198', N'Cần Thơ', N'Nhân viên'), (6, N'Vũ Thị Nụ', '1993-04-30', N'Nữ', '0932165498', N'Hà Nội', N'Nhân viên'),
(7, N'Đinh Văn Hoàng', '1987-06-18', N'Nam', '0943219876', N'Hồ Chí Minh', N'Nhân viên'),
(8, N'Lý Thị Hương', '1991-11-12', N'Nữ', '0987654321', N'Đà Nẵng', N'Nhân viên'), (9, N'Ngô Văn Lộc', '1986-08-22', N'Nam', '0909876543', N'Hải Phòng', N'Nhân viên'), (10, N'Mai Thị Khai', '1994-05-01', N'Nữ', '0912345678', N'Cần Thơ', N'Nhân viên'), (11, N'Bùi Văn Long', '1989-02-14', N'Nam', '0978123456', N'Hà Nội', N'Nhân viên'), (12, N'Chu Thị Mai', '1990-10-08', N'Nữ', '0965432198', N'Hồ Chí Minh', N'Nhân viên'), (13, N'Phan Văn Na', '1984-07-03', N'Nam', '0932165498', N'Đà Nẵng', N'Nhân viên'), (14, N'Dương Thị Son', '1995-06-29', N'Nữ', '0943219876', N'Hải Phòng', N'Nhân viên'), (15, N'Hoàng Văn Phú', '1983-09-17', N'Nam', '0909876543', N'Cần Thơ', N'Nhân viên'), (16, N'Nguyễn Thị Quỳnh', '1991-04-23', N'Nữ', '0987654321', N'Hà Nội', N'Nhân viên'), (17, N'Trần Văn Dũng', '1982-12-19', N'Nam', '0901234567', N'Hồ Chí Minh', N'Nhân viên'),
(18, N'Lê Thị An', '1993-11-25', N'Nữ', '0978123456', N'Đà Nẵng', N'Nhân viên'),
(19, N'Phạm Văn Thế', '1981-08-13', N'Nam', '0912345678', N'Hải Phòng', N'Nhân viên'),
Trang 8(20, N'Vũ Thị Yến', '1994-02-28', N'Nữ', '0965432198', N'Cần Thơ', N'Nhân viên');
INSERT INTO loaisach (maloai, tenloai)
VALUES
(1, N'Tiểu thuyết'),
(2, N'Khoa học'),
(3, N'Văn học'),
(4, N'Kinh tế'),
(5, N'Lịch sử'),
(6, N'Tôn giáo'),
(7, N'Địa lý'),
(8, N'Kỹ năng sống'),
(9, N'Trinh thám'),
(10, N'Tâm lý học'),
(11, N'Y học'),
(12, N'Tự nhiên'),
(13, N'Xã hội học'),
(14, N'Ngôn ngữ học'),
(15, N'Văn hóa học'),
(16, N'Khoa học xã hội'),
(17, N'Âm nhạc'),
(18, N'Thể thao'),
(19, N'Nghệ thuật'),
(20, N'Kỹ thuật');
INSERT INTO sach (masach, tensach, tacgia, namxuatban, maloai, soluong, giaban) VALUES
Trang 9(1, N'Cuộc phiêu lưu của Alice', N'Lewis Carroll', 1865, 1, 100, 50000),
(2, N'Chiến tranh và hòa bình', N'Lê Quý Đôn', 2005, 1, 150, 60000),
(3, N'Vũ trụ trong vỏ hạt dẻ', N'Stephen Hawking', 2010, 2, 120, 55000),
(4, N'Thuyết vạn vật', N'Albert Einstein', 1920, 2, 130, 58000),
(5, N'Những ngôi sao lạc lõng', N'Nguyễn Nhật Ánh', 2003, 3, 200, 45000),
(6, N'Tiếng gọi của nơi hoang dã', N'Jack London', 2007, 3, 180, 48000),
(7, N'Kinh tế học hài hước', N'Nassim Nicholas Taleb', 2012, 4, 90, 65000),
(8, N'Thế giới phẳng', N'Thomas Friedman', 2011, 4, 110, 70000),
(9, N'Biên niên sử Narnia', N'C.S Lewis', 2009, 5, 160, 52000),
(10, N'Đại thần thoại Hy Lạp', N'Nathaniel Hawthorne', 2004, 5, 140, 54000),
(11, N'Đạo Phật và đời sống', N'Thích Nhất Hạnh', 2011, 6, 80, 73000),
(12, N'Kinh điển Phật giáo', N'Thích Minh Châu', 2006, 6, 100, 75000),
(13, N'Trải nghiệm Nam Mỹ', N'Che Guevara', 2013, 7, 120, 62000),
(14, N'Cuộc đời của một nhà địa lý', N'Jared Diamond', 2017, 7, 90, 68000),
(15, N'7 thói quen của người thành công', N'Stephen R Covey', 2002, 8, 150, 50000), (16, N'Thức tỉnh', N'Robin Sharma', 2016, 8, 110, 55000),
(17, N'Trinh thám Sherlock Holmes', N'Arthur Conan Doyle', 2001, 9, 170, 47000), (18, N'Người mẹ tội lỗi', N'Paulo Coelho', 2011, 9, 130, 52000),
(19, N'Tâm lý học hạnh phúc', N'Martin Seligman', 2011, 10, 100, 60000),
(20, N'Tâm lý học ứng dụng', N'Daniel Kahneman', 2000, 10, 120, 58000);
INSERT INTO thedocgia (mathe, ngaygiahan, ngayhethan)
VALUES
(1, '2021-01-01', '2022-01-01'),
(2, '2021-01-02', '2022-01-02'),
(3, '2021-01-03', '2022-01-03'),
(4, '2021-01-04', '2022-01-04'),
Trang 10(5, '2021-01-05', '2022-01-05'),
(6, '2021-01-06', '2022-01-06'),
(7, '2021-01-07', '2022-01-07'),
(8, '2021-01-08', '2022-01-08'),
(9, '2021-01-09', '2022-01-09'),
(10, '2021-01-10', '2022-01-10'),
(11, '2021-01-11', '2022-01-11'),
(12, '2021-01-12', '2022-01-12'),
(13, '2021-01-13', '2022-01-13'),
(14, '2021-01-14', '2022-01-14'),
(15, '2021-01-15', '2022-01-15'),
(16, '2021-01-16', '2022-01-16'),
(17, '2021-01-17', '2022-01-17'),
(18, '2021-01-18', '2022-01-18'),
(19, '2021-01-19', '2022-01-19'),
(20, '2021-01-20', '2022-01-20');
INSERT INTO docgia (MaDG, HoTen, DiaChi, NgaySinh, GioiTinh, Email, DienThoai, MaThe)
VALUES
(1, N'Nguyễn Văn Anh', N'Hà Nội', '1990-01-01', N'Nam',
'nguyenvana@example.com', '123456789', 1),
(2, N'Trần Thị Ba', N'Hồ Chí Minh', '1991-01-02', N'Nữ', 'tranthib@example.com', '987654321', 2),
Trang 11(3, N'Lê Văn Chinh', N'Hải Phòng', '1992-01-03', N'Nam', 'levanc@example.com', '456123789', 3),
(4, N'Phạm Thị Dương', N'Đà Nẵng', '1993-01-04', N'Nữ', 'phamthid@example.com', '789456123', 4),
(5, N'Hoàng Văn Én', N'Cần Thơ', '1994-01-05', N'Nam', 'hoangvane@example.com', '321654987', 5),
(6, N'Vũ Thị Phương', N'Huế', '1995-01-06', N'Nữ', 'vuthif@example.com',
'654987321', 6),
(7, N'Đặng Văn Giang', N'Nghệ An', '1996-01-07', N'Nam', 'dangvang@example.com', '987321654', 7),
(8, N'Bùi Thị Hương', N'Bắc Ninh', '1997-01-08', N'Nữ', 'buithih@example.com', '147258369', 8),
(9, N'Nguyễn Văn Linh', N'Hà Tĩnh', '1998-01-09', N'Nam',
'nguyenvani@example.com', '369258147', 9),
(10, N'Trần Thị Ka', N'Quảng Bình', '1999-01-10', N'Nữ', 'tranthik@example.com', '258369147', 10),
(11, N'Lê Văn L'ong, N'Quảng Trị', '2000-01-11', N'Nam', 'levanl@example.com', '369147258', 11),
(12, N'Phạm Thị Mạnh', N'Quảng Ngãi', '2001-01-12', N'Nữ',
'phamthim@example.com', '147258369', 12),
(13, N'Hoàng Văn Năm', N'Quảng Nam', '2002-01-13', N'Nam',
'hoangvann@example.com', '258369147', 13),
(14, N'Vũ Thị Phương', N'Quảng Ninh', '2003-01-14', N'Nữ', 'vuthip@example.com', '369147258', 14),
(15, N'Đặng Văn Quỳnh', N'Quảng Trị', '2004-01-15', N'Nam',
'dangvanq@example.com', '147258369', 15),
(16, N'Bùi Thị Huế', N'Quảng Ngãi', '2005-01-16', N'Nữ', 'buithir@example.com', '258369147', 16),
(17, N'Nguyễn Văn Sinh', N'Quảng Nam', '2006-01-17', N'Nam',
'nguyenvans@example.com', '369147258', 17),
(18, N'Trần Thị Thu', N'Quảng Ninh', '2007-01-18', N'Nữ', 'tranthit@example.com', '147258369', 18),
Trang 12(19, N'Lê Văn Sơn', N'Quảng Trị', '2008-01-19', N'Nam', 'levanu@example.com', '258369147', 19),
(20, N'Phạm Thị Vân', N'Quảng Ngãi', '2009-01-20', N'Nữ', 'phamthiv@example.com', '369147258', 20);
INSERT INTO phieumuon (maphieu, ngaymuon, ngaytra, mathe, manhanvien)
VALUES
(1, '2021-01-01', '2021-01-10', 1, 3),
(2, '2021-01-02', '2021-01-11', 2, 2),
(3, '2021-01-03', '2021-01-12', 3, 3),
(4, '2021-01-04', '2021-01-13', 4, 5),
(5, '2021-01-05', '2021-01-14', 5, 5),
(6, '2021-01-06', '2021-01-15', 6, 6),
(7, '2021-01-07', '2021-01-16', 7, 7),
(8, '2021-01-08', '2021-01-17', 8, 4),
(9, '2021-01-09', '2021-01-18', 9, 5),
(10, '2021-01-10', '2021-01-19', 10, 5),
(11, '2021-01-11', '2021-01-20', 11, 5),
(12, '2021-01-12', '2021-01-21', 12, 9),
(13, '2021-01-13', '2021-01-22', 13, 9),
(14, '2021-01-14', '2021-01-23', 14, 5),
(15, '2021-01-15', '2021-01-24', 15, 2),
(16, '2021-01-16', '2021-01-25', 16, 2),
(17, '2021-01-17', '2021-01-26', 17, 3),
(18, '2021-01-18', '2021-01-27', 18, 3),
Trang 13(19, '2021-01-19', '2021-01-28', 19, 3),
(20, '2021-01-20', '2021-01-29', 20, 3);
INSERT INTO chitietphieumuon (maphieu, masach, soluong) VALUES
(1, 1, 2),
(1, 2, 1),
(2, 3, 3),
(2, 4, 1),
(3, 5, 2),
(3, 6, 2),
(4, 7, 1),
(4, 8, 3),
(5, 9, 1),
(5, 10, 2),
(6, 11, 1),
(6, 12, 2),
(7, 13, 2),
(7, 14, 1),
(8, 15, 3),
(8, 16, 2),
Trang 14(9, 17, 2),
(9, 18, 3),
(10, 19, 1),
(10, 20, 1);
INSERT INTO phieuphat (maphieu, ngayphat, sotien, lydo, mathe, manhanvien) VALUES
(1, '2023-01-01', 100000, 'Trả sách quá hạn', 1, 2),
(2, '2023-01-02', 150000, 'Trả sách quá hạn', 1, 2),
(3, '2023-01-03', 200000, 'Trả sách quá hạn', 1, 3),
(4, '2023-01-04', 120000, 'Trả sách quá hạn', 1, 4),
(5, '2023-01-05', 80000, 'Trả sách quá hạn', 12, 5),
(6, '2023-01-06', 90000, 'Trả sách quá hạn', 1, 6),
(7, '2023-01-07', 110000, 'Trả sách quá hạn', 1, 7),
(8, '2023-01-08', 130000, 'Trả sách quá hạn', 10, 8),
(9, '2023-01-09', 140000, 'Trả sách quá hạn', 19, 9),
(10, '2023-01-10', 160000, 'Trả sách quá hạn', 11, 11),
(11, '2023-01-11', 170000, 'Trả sách quá hạn', 12, 11),
(12, '2023-01-12', 180000, 'Trả sách quá hạn', 12, 2),
(13, '2023-01-13', 190000, 'Trả sách quá hạn', 1, 3),
(14, '2023-01-14', 200000, 'Trả sách quá hạn', 14, 4),
Trang 15(15, '2023-01-15', 210000, 'Trả sách quá hạn', 15, 11),
(16, '2023-01-16', 220000, 'Trả sách quá hạn', 11, 16),
(17, '2023-01-17', 230000, 'Trả sách quá hạn', 11, 17),
(18, '2023-01-18', 240000, 'Trả sách quá hạn', 8, 18),
(19, '2023-01-19', 250000, 'Trả sách quá hạn', 19, 19),
(20, '2023-01-20', 260000, 'Trả sách quá hạn', 1, 12);
6 Truy vấn
1 Liệt kê tất cả các sách có số lượng tồn kho lớn hơn 100 và được sắp xếp theo tên sách SELECT masach, tensach, soluong
FROM sach
WHERE soluong > 100
ORDER BY tensach;
2 Tính tổng số sách mỗi loại sách và sắp xếp theo tổng số sách giảm dần:
SELECT maloai, COUNT(masach) AS tong_so_sach
FROM sach
GROUP BY maloai
ORDER BY tong_so_sach DESC;
3 Liệt kê thông tin của những độc giả đã mượn sách và có hạn trả sách trong tháng 1 năm 2021 này:
SELECT dg.hoten, pm.maphieu, pm.ngaymuon, pm.ngaytra
FROM docgia dg
JOIN phieumuon pm ON dg.mathe = pm.mathe
WHERE MONTH(pm.ngaytra) = 1 and YEAR(pm.ngaytra) = 2021
4 Tính tổng số sách mỗi tác giả đã viết và sắp xếp theo tổng số sách giảm dần
Trang 16SELECT tacgia, COUNT(masach) AS tong_so_sach
FROM sach
GROUP BY tacgia
ORDER BY tong_so_sach DESC;
5 Liệt kê thông tin của những độc đã bị phạt trong tháng 1 năm 2023
SELECT *
FROM docgia dg
JOIN phieuphat pp ON dg.madg = pp.madg
WHERE MONTH(pp.ngayphat) = 1 and YEAR(pp.ngayphat) = 2023
6 Tính tổng số sách mỗi độc giả đã mượn và sắp xếp theo tổng số sách giảm dần: SELECT dg.hoten, COUNT(ctpm.masach) AS tong_so_sach_muon
FROM docgia dg
JOIN phieumuon pm ON dg.mathe = pm.mathe
JOIN chitietphieumuon ctpm ON pm.maphieu = ctpm.maphieu
GROUP BY dg.hoten
ORDER BY tong_so_sach_muon DESC;
7 Liệt kê thông tin của những sách có giá bán cao nhất trong từng loại sách
SELECT ls.tenloai, s.tensach, s.giaban
FROM loaisach ls
JOIN sach s ON ls.maloai = s.maloai
WHERE s.giaban = (SELECT MAX(giaban) FROM sach WHERE maloai = ls.maloai);
8 Tính tổng số tiền phạt mỗi độc giả đã bị phạt và sắp xếp theo tổng số tiền phạt giảm dần:
SELECT dg.hoten, SUM(pp.sotien) AS tong_so_tien_phat