ĐẠI HỌC KINH TẾ QUỐC DÂNVIỆN CÔNG NGHỆ THÔNG TIN VÀ KINH TẾ SỐ
-oOo -BÀI TẬP LỚN ỨNG DỤNG CƠ SỞ DỮ LIỆU
Đề tài: Ứng dụng cơ sở dữ liệu trong quản lý mượn trảsách tại thư viện trường đại học Kinh tế quốc dân
Lớp tín chỉ: Ứng dụng cơ sở dữ liệu (01)GVHD: Th.s Trần Thanh Hải
Nhóm thực hiện: 02
Thành viên: Lê Thủy Phương - 11225217 Ngô Thị Thùy Dương - 11221572 Lê Phương Anh - 11220259 Vũ Hà Mỹ Duyên - 11221713 Trần Thu Trang - 11226537
Hà Nội, năm 2024
Trang 2Mục lục
Trang 3I Mô tả bài toán
1 Giả định bài toán1.1 Thực trạng
Các nghiệp vụ quản lý thư viện nói chung và quản lý việc mượn trả sách nói riêng như lưu trữ thông tin sách, độc giả, lập các phiếu mượn, phiếu phạt, tìm kiếm … vẫn thực hiện trên giấy tờ và các công cụ cơ bản như Word, Excel Điều này làm tốn nhiều thời gian và chi phí Hơn nữa khi tạo các báo cáo rất mất thời gian, công sức, lãng phí nguồn lực, có thể xảy ra sai sót do dữ liệu không được lưutrữ đồng bộ và thống nhất Do đó, người quản lý khó nắm bắt được tình hình của thư viện, chậm trễ trong việc đưa ra các quyết định cũng như phương án hoạt độngtrong thời gian tới
Nhận thức được những khó khăn, bất cập đó, nhà quản lý đề xuất xây dựng một hệ thống quản lý dựa trên nền tảng số để tối ưu hóa các nghiệp vụ, tăng hiệu quả công việc.
1.2 Một số quy định của thư viện
- Mượn mang về:
○ Chỉ được mượn mang về các tài liệu tại kho mượn của thư viện○ Độc giả được mượn tối đa 3 tài liệu/1 lần mượn
○ Thời gian trả sách: sau 15 ngày từ ngày làm thủ tục mượn
○ Mượn sách quá hạn hoặc làm mất, hư hỏng sách, độc giả phải bồi thườngtheo quy định của thư viện
- Mượn đọc tại thư viện
○ Được mượn tối đa 2 tài liệu/ 1 lần mượn
○ Độc giả được sử dụng các tài liệu đọc tại chỗ, gồm có: ■ Những loại luận án, luận văn, chuyên đề tốt nghiệp.■ Những tài liệu được mượn mang về
○ Khi tìm kiếm được tài liệu đọc tại chỗ độc giả phải đăng ký với nhân viênthủ thư trước khi sử dụng và trả lại sau khi sử dụng, không được mang rabên ngoài phòng đọc
- Độc giả phải hoàn tất nghĩa vụ trả sách để được tiếp tục mượn sách- Xử lý vi phạm
○ Làm mất sách: Bồi thường bằng 100% giá bìa○ Làm rách, viết hoặc vẽ bậy lên sách, tài liệu học tập
■ Trường hợp sách vẫn còn giá trị sử dụng: Cảnh cáo
■ Trường hợp sách không còn giá trị sử dụng: Bồi thường bằng 100%giá bìa
○ Làm rách bìa hoặc bung tay sách: Bồi thường kinh phí tu bổ từ 5.000đ 15.000đ tùy theo bìa cứng hoặc bìa mềm
-○ Giữ sách quá hạn: Nộp lệ phí quá hạn 3.000đ/tài liệu/ngày
Trang 42 Mục tiêu
2.1 Mục tiêu tổng thể:
Xây dựng cơ sở dữ liệu quản lý thư viện giúp giúp nâng cao hiệu quả và tự độnghóa các nghiệp vụ quản lý việc mượn trả sách, giảm khối lượng công việc cho nhânsự trong thư viện, tiết kiệm thời gian, chi phí trong việc xử lý các nghiệp vụ Giúptăng trải nghiệm của sinh viên, giảng viên khi mượn trả sách
2.2 Mục tiêu cụ thể:
- Hỗ trợ lưu trữ và cập nhật thông tin sách, độc giả, thủ thư
- Hỗ trợ độc giả và thủ thư tra cứu sách theo nhiều tiêu chí
- Hỗ trợ thủ thư tạo và lưu trữ thông tin phiếu mượn sách, phiếu phạt, tính toán ngàyphải trả, thông báo quá hạn
- Báo cáo các phiếu mượn quá hạn nhưng chưa trả
- Báo cáo danh sách sách hỏng và mất trong quá trình cho mượn
- Báo cáo doanh thu từ việc xử lý vi phạm theo tháng
II Phân tích yêu cầu
1 Mô hình nghiệp vụ1.1 Nghiệp vụ mượn sách
- Khi độc giả muốn mượn sách, thủ thư sẽ yêu cầu cung cấp mã sinh viên/mã giảngviên để tiến hành tra cứu thông tin độc giả, nếu không có thông tin/sai thông tin,độc giả không được mượn sách, thủ thư từ chối yêu cầu và không lập phiếu; nếuđộc giả đủ điều kiện mượn sách, thủ thư tiến hành tạo phiếu mượn sách
- Nếu độc giả chưa hoàn tất nghĩa vụ trả sách của phiếu mượn trước thì không đượcmượn sách
- Độc giả cung cấp thông tin sách cần mượn cho thủ thư Thủ thư tiến hành thao táckiểm tra tình trạng cuốn sách độc giả yêu cầu (còn, đã mượn, chỉ được mượn tạithư viện…); nếu cuốn sách có thể mượn, thủ thư ghi lại tình trạng sách hiện tại(lành lặn hay rách ở trang nào), sau đó cập nhật vào phiếu mượn,
- Độc giả được yêu cầu nộp tiền cọc, hẹn ngày trả để hoàn tất phiếu mượn Thủ thưcập nhật vào CSDL (đã mượn)
Trang 61.2 Nghiệp vụ nhận sách từ độc giả (độc giả trả sách)
- Khi độc giả muốn trả sách, thủ thư sẽ yêu cầu xuất trình phiếu mượn
- Thủ thư sẽ kiểm tra thông tin trên phiếu mượn như tên người mượn, ngày mượn, hạntrả, Nếu sách được trả quá hạn, thủ thư sẽ xử lý theo quy định của thư viện
- Thủ thư sẽ kiểm tra tình trạng sách như có bị rách, bìa gáy nhăn nhúm, ghi chép hay vẽbậy, hay không Nếu sách bị hư hỏng, thủ thư sẽ xử lý theo quy định của thư viện
- Độc giả nhận lại đầy đủ tiền cọc nếu sách mượn còn nguyên vẹn và trả về đúng hạn.
- Thủ thư cập nhật ngày thực trả trong phiếu mượn, cập nhật tình trạng sách vào CSDL(còn, mất, hỏng)
Trang 71.3 Nghiệp vụ lập phiếu phạt
Khi độc giả trả sách muộn hơn hạn định/làm mất/làm hư hại sách, thủ thư sẽ lập phiếuphạt để xử lý theo quy định của thư viện Sau khi hoàn tất phiếu phạt, thủ thư có tráchnhiệm lập báo cáo, ghi nhận số tiền người mượn nộp phạt (nếu có), cập nhật tình trạng sáchtương ứng vào CSDL
Trang 82 Biểu đồ Use case2.1 Biểu đồ UC tổng quát
2.2 Biểu đồ phân rã UCa UC theo quản lý thư viện
Trang 9b UC phân rã theo thủ thư
III Mô hình dữ liệu
1 Mô hình dữ liệu đầu tiên
Trang 102 Mô hình dữ liệu
IV Thiết kế cơ sở dữ liệu và truy vấn.
1 Tạo bảng và ràng buộc
-TẠO BẢNG NXBcreate table NXB
Ma_NXB char(10) primary key,Ten_NXB nvarchar(50) not null,email char(50),
-TẠO BẢNG THỂ LOẠIcreate table THE_LOẢIMa_TL char(10 ) primary key,
Trang 11Ten_TL nvarchar(50) not null,)
-TẠO BẢNG CHỦ create table CHỦ_DE
ĐỂ-Ma_Chu_De char(10) primary key ,Ten_Chu_De nvarchar(50) not null,)
-TẠO BẢNG KHO SÁCHCreate table KHO_SẢCH(
Ma_Kho char(10) primary key ,Ten_Kho nvarchar(50) not null,)
-TẠO BẢNG ĐẦ-Ủ SÁCHcreate table DẢỦ_SẢCH(
Ma_Dau_Sach char(10 ) primary key
Ten_Dau_Sach nvarchar(80 ) not null,Tac_Gia nvarchar(50),
Nam int,
Ma_TL char(10 ) foreign key references THE_LOẢI(Ma_TL),Ma_NXB char(10 ) foreign key references NXB(Ma_NXB),Ma_Chu_De char(10 ) foreign key references CHỦ_DE(Ma_Chu_De),
Ma_Kho char(10 ) foreign key references KHO_SẢCH(Ma_Kho ) not null,
Gia_Bia money,)
-TẠO BẢNG TÌNH TRẠNG SÁCHcreate table TINH_TRẢNG
Ma_Tinh_Trang char(10) primary key ,Ten_Tinh_Trang nvarchar(20) not null,)
-TẠO BẢNG SÁCHcreate table SẢCH
Ma_Sach char(10 ) primary key
Ma_Dau_Sach char(10 ) foreign key references
DẢỦ_SẢCH Ma_Dau_Sach( ) not null,
Ma_Tinh_Trang char(10 ) foreign key references
TINH_TRẢNG Ma_Tinh_Trang( ) not null,Lib_Only bit not null,)
Trang 12-TẠO BẢNG KHOẢ VIỆNcreate table KHOẢ_VIEN(
Ma_Khoa_Vien char(15) primary key
Ten_Khoa_Vien nvarchar(50 ) not null,)
-TẠO BẢNG LỚP CHỦYỂN NGÀNHcreate table LOP_CHỦYEN_NGẢNHMa_Lop char(15) primary key ,Ten_Lop nvarchar(50) not null,)
-TẠO BẢNG ĐỘC GIẢcreate table DOC_GIẢ
Ma_Doc_Gia char(10 ) primary key not null,Ho_Ten nvarchar(80 ) not null,
Ma_Lop char(15 ) foreign key references LOP_CHỦYEN_NGẢNH(Ma_Lop),
Ma_Khoa_Vien char(15 ) foreign key references KHOẢ_VIEN(Ma_Khoa_Vien) not null,
Ma_Thu_Thu char(10) primary key
Ten_Thu_Thu nvarchar(50) not null,SDT char(20),
Trang 13Ma_Kieu_Muon char( ) not null foreign key references
KIEỦ_MỦON Ma_Kieu_Muon),Ngay_Muon date not null,Han_Tra as (
Ma_Thu_Thu char(10 ) foreign key references
THỦ_THỦ Ma_Thu_Thu( ) not null,)
-TẠO BẢNG CHI TIỂDT PHIỂDỦ MƯỢNcreate table CT_PHIEỦ_MỦON
Ma_Phieu_Muon char(10 ) not null foreign key (Ma_Phieu_Muon)
references PHIEỦ_MỦON(Ma_Phieu_Muon),
Ma_Sach char(10 ) not null foreign key (Ma_Sach)
references SẢCH Ma_Sach),Mo_Ta nvarchar(80),
Constraint PK_CTPHMT primary key(Ma_Phieu_Muon Ma_Sach, ))
-TẠO BẢNG VI PHẠMcreate table VI_PHẢM(
Ma_Vi_Pham char(10) primary key not null,Ten_Vi_Pham nvarchar (50 ) not null,
Hinh_Thuc_Phat nvarchar(120) not null,)
-TẠO BẢNG PHIỂDỦ PHẠTcreate table PHIEỦ_PHẢT
Ma_Phieu_Phat char(10 ) primary key not null,Ma_Phieu_Muon char(10 ) foreign key references
PHIEỦ_MỦON Ma_Phieu_Muon( ) not null,
Ma_Thu_Thu char(10 ) foreign key references THỦ_THỦ(Ma_Thu_Thu ) not null,
Ngay_Phat date not null,)
-TẠO BẢNG CHI TIỂDT PHIỂDỦ PHẠTcreate table CT_PHIEỦ_PHẢT
Trang 14Ma_Phieu_Phat char (10) foreign key references
PHIEỦ_PHẢT Ma_Phieu_Phat( ) not null,
Ma_Vi_Pham char(10 ) foreign key references
VI_PHẢM Ma_Vi_Pham( ) not null,
Ma_Sach char(10) foreign key references SẢCH Ma_Sach) notnull,
Nop_Phat money,Mo_Ta nvarchar(120),)
-TẠO RÀNG BỦỘC ĐỘC GIẢ KHÔNG ĐƯỢC MƯỢN KHI CHƯẢ TRẢ SÁCHCREẢTE TRIGGER check_docgiatrasach
on PHIEỦ_MỦON
after insertas
declare @Ngaytra_gannhat date, @Ma_Doc_Gia char(10);
select @Ma_Doc_Gia Ma_Doc_Gia = from inserted select @Ngaytra_gannhat = MẢX(Ngay_thuc_tra) from PHIEỦ_MỦON
where Ma_doc_gia @Ma_doc_gia= ; if @Ngaytra_gannhat IS NỦLL
Trang 15if (@Ma_Kieu_Muon = 'MV' ẢND @SoLuongMuon 3 > ) OR(@Ma_Kieu_Muon = 'TC' ẢND @SoLuongMuon 2> )
Trang 162.3 Dữ liệu bảng Chủ đề
Trang 172.4 Dữ liệu bảng Kho Sách
Trang 182.5 Dữ liệu bảng Thủ Thư
2.6 Dữ liệu bảng Khoa/Viện
2.7 Dữ liệu bảng Lớp Chuyên Ngành
Trang 192.8 Dữ liệu bảng Đầu Sách
Trang 202.9 Dữ liêu bảng Tình trạng sách
2.10 Dữ liệu bảng Sách
Trang 212.11 Dữ liệu bảng Độc Giả
Trang 222.12 Dữ liệu bảng Kiểu Mượn
2.13 Dữ liệu bảng Phiếu Mượn
Trang 232.14 Dữ liệu bảng Chi tiết Phiếu Mượn
Trang 242.15 Dữ liệu bảng Phiếu Phạt
Trang 252.16 Dữ liệu bảng Vi Phạm
Trang 262.17 Dữ liệu bảng Chi tiết Phiếu Phạt
Trang 273 Truy vấn
3.1 Các phiếu mượn về quá hạn nhưng chưa trả
SELECT Ma_Phieu_Muon ẢS N'Mã phiếDu mượn', P Ma_Doc_Gia ẢS N'Mã độc gia', Ho_Ten ẢS N'Họ tến',
Ngay_Muon ẢS N'Ngày mượn' , Han_Tra ẢS N'Hạn tra',
Ngay_Thuc_Tra ẢS N'Ngày thực tra'
FROM PHIEỦ_MỦON P INNER JOIN DOC_GIẢ D ON P.Ma_Doc_Gia =D Ma_Doc_Gia
WHERE '2024-04-01' Han_Tra and Ngay_Thuc_Tra is null
ORDER BY Han_Tra
3.2 Các sách bị mất và hết giá trị sử dụng trong quá trình cho mượn
SELECT Ma_Sach ẢS N'Mã sách', Ten_Dau_Sach ẢS N'Tến sách', Tac_Gia ẢS N'Tác gia',
Ten_Tinh_Trang ẢS N'Tình trạng'
FROM (SẢCH S INNER JOIN TINH_TRẢNG TT ON S Ma_Tinh_Trang =TT Ma_Tinh_Trang ) INNER JOIN DẢỦ_SẢCH D ON S.Ma_Dau_Sach = D Ma_Dau_Sach
WHERE S Ma_Tinh_Trang = 'MẢT' OR S.Ma_Tinh_Trang = 'HGTSD'
Trang 283.3 Tổng tiền phạt và số lượng phiếu phạt trong tháng 1
SELECT Ngay_Phat ẢS N'Ngày phạt',
COỦNT( Ma_Phieu_Phat ) ẢS N'SốD lượng phiếDu phạt', SỦM(Nop_Phat) ẢS N'Tống tiế-n phạt'
FROM CT_PHIEỦ_PHẢT CT INNER JOIN PHIEỦ_PHẢT P ON
P Ma_Phieu_Phat CT= Ma_Phieu_Phat ẢND MONTH(Ngay_Phat) = 1
GROỦP BY Ngay_Phat
SELECT COỦNT( P Ma_Phieu_Phat ) ẢS 'Tống phiếDu phạt tháng 1', SỦM(Nop_Phat) ẢS N'Tống tiế-n phạt tháng 1'
FROM CT_PHIEỦ_PHẢT CT INNER JOIN PHIEỦ_PHẢT P ON
P Ma_Phieu_Phat CT= Ma_Phieu_Phat ẢND MONTH(Ngay_Phat) = 1
V Thiết kế giao diện người dùng.
1 Form nhập liệu
Trang 302 Báo cáo