Ứng dụng cơ sở dữ liệu
Ứng dụng CSDL (Đại học Kinh tế Quốc dân)
Scan to open on Studeersnel
Studocu is not sponsored or endorsed by any college or university
Ứng dụng cơ sở dữ liệu
Ứng dụng CSDL (Đại học Kinh tế Quốc dân)
Scan to open on Studeersnel
Studocu is not sponsored or endorsed by any college or university
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
ĐẠI HỌC KINH TẾ QUỐC DÂN
--------
BÀI TẬP LỚN
MÔN ỨNG DỤNG CƠ SỞ DỮ LIỆU
Đề tài: Ứng dụng cơ sở dữ liệu trong quản lý tài liệu trong
thư viện đại học
Lớp tín chỉ : TIKT1124_02
Giảng viên : Ths. Trần Thanh Hải
Nhóm : 10
Thành viên : Nguyễn Đức Hiếu - 11235584
Nguyễn Sơn Tùng - 11235677
Trần Quang Huy - 11235590
Phạm Minh Tiến - 11235665
Hà Nội, tháng 4/2025
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
Mục lục
I. Mô tả bài toán................................................................................2
1. Xác định bài toán ............................................................................2
1.1. Thực trạng ............................................................................2
I.2. Một số quy định của thư viện..................................................2
2. Mục tiêu...........................................................................................2
2.1. Mục tiêu tổng quát.................................................................2
2.2. Mục tiêu cụ thể......................................................................3
II. Phân tích yêu cầu..........................................................................3
1. Actors & User story...................................................................3
1.1. Actors...............................................................................3
1.2. User story.........................................................................3
2. Biểu đồ Use Case.......................................................................4
2.1. Use Case Tổng quát.........................................................4
2.2. Use Case phân rã..............................................................5
3. Mô hình nghiệp vụ.....................................................................6
3.1. Nghiệp vụ Mượn sách......................................................6
3.2. Nghiệp vụ Trả sách..........................................................6
3.3. Nghiệp vụ Lập phiếu phạt................................................6
III. Xây dựng mô hình.........................................................................6
1. Mô hình dữ liệu đầu tiên............................................................6
2. Mô hình dữ liệu chi tiết..............................................................7
3. Mô tả các lớp và thuộc tính........................................................7
IV. Thiết kế cơ sở dữ liệu & truy vấn..................................................
1. Lược đồ quan hệ...........................................................................
2. Tạo bảng.......................................................................................
3. Ràng buộc....................................................................................
4. Nhập dữ liệu.................................................................................
5. Truy vấn.......................................................................................
V. Thiết kế giao diện người dùng........................................................
1. Giao diện nhập liệu......................................................................
2. Giao diện báo cáo.........................................................................
1
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
I. Mô tả bài toán
1. Xác định bài toán
1.1. Thực trạng
- Một trường đại học có thư viện vẫn đang thực hiện các công việc quản lý
tài liệu, quản lý việc mượn trả, quản lý các thông tin liên quan trên giấy tờ
và thực hiện các báo cáo 1 cách thủ công bằng các phần mềm văn phòng
như: Word, Excel,…. Việc lưu trữ, kiểm kê cũng như tạo báo cáo 1 cách
thủ công như vậy rất dễ xảy ra tình trạng sai sót, để làm mất sách do việc
lưu trữ không được thực hiện 1 cách khoa học, thiếu đồng bộ và cực kỳ
tốn thời gian, dữ liệu cũng có thể bị mất.
- Nhận thức được khó khăn trong công việc, nhà quản lý đã kiến nghị lên
cấp trên và được ban giám hiệu nhà trường cho phép xây dựng 1 cơ sở dữ
liệu phục vụ công việc quản lý tài liệu trong thư viện của trường nhằm lưu
trữ và tìm kiếm dữ liệu tốt hơn, tối ưu hóa các nghiệp vụ trong thư viện.
1.2. Một số quy định của thư viện
- Điều kiện mượn sách: Độc giả phải hoàn thành nghĩa vụ trả sách hoặc bồi
thường (nếu có) để được tiếp tục mượn sách.
- Độc giả chỉ được mượn mang về các tài liệu cho phép của thư viện, chỉ có
sách.
- Độc giả được mượn tối đa 2 cuốn sách/1 lần mượn.
- Thời gian trả sách: sau 15 ngày kể từ ngày làm thủ tục mượn.
- Khi mượn sách, độc giả phải nộp tiền cọc là 100.000 nghìn đồng. Số tiền sẽ
được nhân viên thu và sẽ trả lại cho độc giả sau khi độc giả trả lại sách.
- Trong trường hợp mượn tối đa 2 cuốn, độc giả phải trả lại đồng thời 2 cuốn
sách trong thời gian cho phép; tức 15 ngày kể từ ngày mượn.
- Mượn sách quá hạn, làm mất, hư hỏng sách; độc giả phải bồi thường theo
quy định của thư viện.
2. Mục tiêu
2.1. Mục tiêu tổng quát
- Xây dựng cơ sở dữ liệu lưu trữ thông tin cần thiết phục vụ công việc quản
lý tài liệu trong thư viện, phục vụ 2 nghiệp vụ chính là quản lý thông tin
tài liệu và quản lý việc mượn trả, ngoài ra còn có lập báo cáo. Giúp đồng
bộ, cập nhật dữ liệu kịp thời, tiết kiệm thời gian, chi phí trong công việc.
Đồng thời người quản lý và thủ thư có thể nắm rõ tình trạng của tài liệu
trong thư viện, kiểm soát tốt hơn việc mượn trả của độc giả.
2
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
2.2. Mục tiêu cụ thể
- Lưu trữ, duy trì thông tin sách, đầu sách và các loại tài liệu khác. Cập nhật
tình trạng của các quyển sách.
- Lưu trữ, duy trì thông tin độc giả và thông tin việc mượn trả: phiếu mượn,
phiếu phạt.
- Lưu trữ, duy trì thông tin liên quan phục vụ việc quản lý tài liệu.
- Báo cáo mượn quá hạn chưa trả.
- Báo cáo Danh sách tài liệu hỏng hoặc mất.
- Báo cáo Danh sách vi phạm.
II. Phân tích yêu cầu
1. Actors
1.1. Thủ thư
- Thủ thư: Là tác nhân chính thực hiện các nghiệp vụ quản lý thông tin tài
liệu và quản lý việc mượn trả, phạt độc giả nếu có, in phiếu mượn & phiếu
phạt.
1.2. Quản lý (Manager)
- Quản lý (Manager): có thẩm quyền để thực hiện các nghiệp vụ của thủ
thư, ngoài ra còn thực hiện nghiệp vụ lập báo cáo.
3
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
2. Biểu đồ Use Case
2.1. Use Case Tổng quát
4
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
2.2. Use Case phân rã
a) Use Case theo thủ thư
5
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
b) Use Case theo Quản lý
3. Mô hình nghiệp vụ
3.1. Nghiệp vụ Mượn sách
3.2. Nghiệp vụ Trả sách
3.3. Nghiệp vụ Lập phiếu phạt
III. Xây dựng mô hình
1. Mô hình dữ liệu đầu tiên
6
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
2. Mô hình dữ liệu chi tiết
3. Mô tả các lớp và thuộc tính
IV. Thiết kế cơ sở dữ liệu & truy vấn
1. Lược đồ quan hệ
7
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
2. Tạo bảng
a) Tạo cơ sở dữ liệu
CREATE DATABASE QuanLyThuVien;
USE QuanLyThuVien;
8
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
b) Tạo các bảng
-- 1. Nhà xuất bản
CREATE TABLE NXB (
ma_nxb VARCHAR(20) PRIMARY KEY,
ten_nxb VARCHAR(50) NOT NULL,
sdt VARCHAR(20),
email VARCHAR(255)
);
-- 2. Khoa Viện
CREATE TABLE KHOA_VIEN (
ma_khoa_vien VARCHAR(10) PRIMARY KEY,
ten_khoa_vien VARCHAR(50) NOT NULL
);
-- 3. Lớp chuyên ngành
CREATE TABLE LOP_CHUYEN_NGANH (
ma_lop VARCHAR(10) PRIMARY KEY,
ten_lop VARCHAR(50) NOT NULL
);
-- 4. Nhân viên
CREATE TABLE NHAN_VIEN (
ma_nv VARCHAR(10) PRIMARY KEY,
ho_ten VARCHAR(50) NOT NULL,
vai_tro ENUM ('Thủ thư', 'Quản lý')
);
-- 5. Chủ đề
CREATE TABLE CHU_DE (
ma_chu_de VARCHAR(10) PRIMARY KEY,
ten_chu_de VARCHAR(50) NOT NULL
);
-- 6. Tài liệu khác
CREATE TABLE TAI_LIEU_KHAC (
ma_tai_lieu_khac VARCHAR(10) PRIMARY KEY,
tieu_de VARCHAR(100) NOT NULL,
tac_gia VARCHAR(200) NOT NULL,
nam_thuc_hien YEAR NOT NULL,
9
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
phan_loai ENUM(
'Luận văn',
'Luận án',
'Bài báo',
'Tạp chí nghiên cứu')
);
-- 7. Độc giả
CREATE TABLE DOC_GIA (
ma_dg VARCHAR(10) PRIMARY KEY,
loai_dg ENUM ('Sinh viên', 'Giảng viên'),
ho_ten VARCHAR(50) NOT NULL,
ma_lop VARCHAR(10),
ma_khoa_vien VARCHAR(10) NOT NULL,
sdt VARCHAR(10) NOT NULL,
email VARCHAR(255),
FOREIGN KEY (ma_lop) REFERENCES LOP_CHUYEN_NGANH
(ma_lop),
FOREIGN KEY (ma_khoa_vien) REFERENCES KHOA_VIEN
(ma_khoa_vien)
);
-- 8. Đầu sách
CREATE TABLE DAU_SACH (
ma_dau_sach VARCHAR(10) PRIMARY KEY,
ten_sach VARCHAR(100) NOT NULL,
tac_gia VARCHAR(50) NOT NULL,
ma_nxb VARCHAR(20) NOT NULL,
ma_chu_de VARCHAR(10),
gia_sach DECIMAL(10, 2) NOT NULL,
so_luong_tong INT UNSIGNED,
so_luong_hien_co INT UNSIGNED,
CHECK (so_luong_hien_co <= so_luong_tong),
FOREIGN KEY (ma_nxb) REFERENCES NXB(ma_nxb),
FOREIGN KEY (ma_chu_de) REFERENCES CHU_DE(ma_chu_de)
);
-- 9. Sách
CREATE TABLE SACH (
ma_sach VARCHAR(10) PRIMARY KEY,
10
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
ma_dau_sach VARCHAR(10) NOT NULL,
nam_xuat_ban YEAR,
tinh_trang ENUM(
'Nguyên vẹn',
'Hỏng',
'Mất'),
mo_ta TEXT,
FOREIGN KEY (ma_dau_sach) REFERENCES
DAU_SACH(ma_dau_sach)
);
-- 10. Phiếu mượn
CREATE TABLE PHIEU_MUON (
ma_muon VARCHAR(10) PRIMARY KEY,
ma_dg VARCHAR(10) NOT NULL,
ngay_muon DATE NOT NULL,
han_tra DATE NOT NULL,
ma_nv_muon VARCHAR(10) NOT NULL,
FOREIGN KEY (ma_dg) REFERENCES DOC_GIA(ma_dg),
FOREIGN KEY (ma_nv_muon) REFERENCES NHAN_VIEN(ma_nv)
);
-- 11. Chi tiết phiếu mượn
CREATE TABLE CHI_TIET_PHIEU_MUON (
ma_muon VARCHAR(10) NOT NULL,
ma_sach VARCHAR(10) NOT NULL,
ngay_tra DATE,
PRIMARY KEY (ma_muon, ma_sach),
FOREIGN KEY (ma_muon) REFERENCES
PHIEU_MUON(ma_muon),
FOREIGN KEY (ma_sach) REFERENCES SACH(ma_sach)
);
-- 12. Phiếu phạt
CREATE TABLE PHIEU_PHAT (
ma_phat VARCHAR(10) PRIMARY KEY,
ma_muon VARCHAR(10) NOT NULL,
ngay_phat DATE NOT NULL,
trang_thai ENUM('Đã đóng', 'Chưa đóng'),
ma_nv_phat VARCHAR(10) NOT NULL,
11
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
FOREIGN KEY (ma_muon) REFERENCES
PHIEU_MUON(ma_muon),
FOREIGN KEY (ma_nv_phat) REFERENCES NHAN_VIEN(ma_nv)
);
-- 13. Chi tiết phiếu phạt
CREATE TABLE CHI_TIET_PHIEU_PHAT (
ma_phat VARCHAR(10) NOT NULL,
ma_sach VARCHAR(10) NOT NULL,
loi_vi_pham ENUM(
'Quá hạn',
'Mất',
'Hỏng',
'Khác') NOT NULL,
so_tien_phat DECIMAL(10, 2) NOT NULL,
mo_ta TEXT,
PRIMARY KEY (ma_phat, ma_sach, loi_vi_pham),
FOREIGN KEY (ma_phat) REFERENCES PHIEU_PHAT(ma_phat),
FOREIGN KEY (ma_sach) REFERENCES SACH(ma_sach)
);
3. Ràng buộc
4. Nhập dữ liệu
12
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
Dữ liệu Nhà xuất bản:
Dữ liệu Khoa Viện:
13
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
Dữ liệu Lớp chuyên ngành:
Dữ liệu Nhân viên thư viện:
14
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
Dữ liệu Chủ đề:
Dữ liệu Tài liệu khác:
15
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
Dữ liệu độc giả:
Dữ liệu đầu sách:
Dữ liệu sách:
16
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
5. Truy vấn
a) -- Báo cáo mượn quá hạn chưa trtrả
SELECT
ROW_NUMBER() OVER (ORDER BY pm.ma_muon) AS STT,
pm.ma_dg,
dg.ho_ten,
ctpm.ma_sach,
ds.ten_sach,
pm.han_tra,
DATEDIFF(CURDATE(), pm.ngay_muon) AS so_ngay_qua_han
FROM PHIEU_MUON pm
JOIN DOC_GIA dg ON pm.ma_dg = dg.ma_dg
JOIN CHI_TIET_PHIEU_MUON ctpm ON pm.ma_muon = ctpm.ma_muon
JOIN SACH s ON ctpm.ma_sach = s.ma_sach
JOIN DAU_SACH ds ON s.ma_dau_sach = ds.ma_dau_sach
WHERE ngay_tra = NULL
AND CURDATE() > pm.han_tra;
b) -- Báo cáo sách hỏng, mất
SELECT
ROW_NUMBER() OVER (ORDER BY s.ma_sach) AS STT,
s.ma_sach,
ds.ten_sach,
s.tinh_trang,
s.mo_ta
FROM SACH s
JOIN DAU_SACH ds ON s.ma_dau_sach = ds.ma_dau_sach
WHERE s.tinh_trang LIKE '%hỏng%'
OR s.tinh_trang LIKE '%mất%';
c) -- Báo cáo Danh sách vi phạm
SELECT
ROW_NUMBER() OVER (ORDER BY pp.ngay_phat,
ctpp.loi_vi_pham) AS STT,
DATE_FORMAT(pp.ngay_phat, '%m/%Y') AS thang_nam,
pm.ma_dg,
dg.ho_ten,
ctpp.ma_sach,
ctpp.loi_vi_pham,
17
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788
ctpp.so_tien_phat
FROM CHI_TIET_PHIEU_PHAT ctpp
JOIN PHIEU_PHAT pp ON ctpp.ma_phat = pp.ma_phat
JOIN PHIEU_MUON pm ON pp.ma_muon = pm.ma_muon
JOIN DOC_GIA dg ON pm.ma_dg = dg.ma_dg
WHERE YEAR(pp.ngay_phat) = 2025
ORDER BY
MONTH(pp.ngay_phat),
pp.ngay_phat;
V. Thiết kế giao diện người dùng
1. Giao diện nhập liệu
2. Giao diện báo cáo
18
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)
lOMoARcPSD|51415788

Preview text:

lOMoARcPSD|51415788
Ứng dụng cơ sở dữ liệu
Ứng dụng CSDL (Đại học Kinh tế Quốc dân) Scan to open on Studeersnel
Studocu is not sponsored or endorsed by any college or university
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788
ĐẠI HỌC KINH TẾ QUỐC DÂN -------- BÀI TẬP LỚN
MÔN ỨNG DỤNG CƠ SỞ DỮ LIỆU
Đề tài: Ứng dụng cơ sở dữ liệu trong quản lý tài liệu trong thư viện đại học Lớp tín chỉ : TIKT1124_02 Giảng viên : Ths. Trần Thanh Hải Nhóm : 10 Thành viên : Nguyễn Đức Hiếu - 11235584 Nguyễn Sơn Tùng - 11235677 Trần Quang Huy - 11235590 Phạm Minh Tiến - 11235665
Hà Nội, tháng 4/2025
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 Mục lục I.
Mô tả bài toán...................................................................... . . . . .2
1. Xác định bài toán ........................................... . . . . . . . . . . . . . . . . 2
1.1. Thực trạng ........................................................ . . . . . . . . . .2
I.2. Một số quy định của thư viện............................................. . . 2
2. Mục tiêu........................................................... . . . . . . . . . . . . . . . .2
2.1. Mục tiêu tổng quát........................................... . . . . . . . . . . .2
2.2. Mục tiêu cụ thể..................................... . . . . . . . . . . . . . . . . 3
II. Phân tích yêu cầu........................................ . . . . . . . . . . . . . . . . .3
1. Actors & User story...................................... . . . . . . . . . . . . . . 3
1.1. Actors........................................................................ . . . 3
1.2. User story.............................................................. . . . . . 3
2. Biểu đồ Use Case.................................................. . . . . . . . . . . 4
2.1. Use Case Tổng quát.................................... . . . . . . . . . . 4
2.2. Use Case phân rã..............................................................5
3. Mô hình nghiệp vụ................................................ . . . . . . . . . . 6
3.1. Nghiệp vụ Mượn sách................................................. . . 6
3.2. Nghiệp vụ Trả sách.................................... . . . . . . . . . . .6
3.3. Nghiệp vụ Lập phiếu phạt............................................. . 6
III. Xây dựng mô hình.......................................................... . . . . . . . 6
1. Mô hình dữ liệu đầu tiên......................................... . . . . . . . . . 6
2. Mô hình dữ liệu chi tiết................................................... . . . . . 7
3. Mô tả các lớp và thuộc tính............................................... . . . . 7
IV. Thiết kế cơ sở dữ liệu & truy vấn.......................... . . . . . . . . . . . .
1. Lược đồ quan hệ........................................................................ .
2. Tạo bảng.................................................................................. . .
3. Ràng buộc.................................................... . . . . . . . . . . . . . . . .
4. Nhập dữ liệu...................................................................... . . . . .
5. Truy vấn............................................................. . . . . . . . . . . . . . V.
Thiết kế giao diện người dùng.................................................... . .
1. Giao diện nhập liệu............................................. . . . . . . . . . . . .
2. Giao diện báo cáo.................................................................... . . 1
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 I. Mô tả bài toán 1. Xác định bài toán 1.1. Thực trạng
- Một trường đại học có thư viện vẫn đang thực hiện các công việc quản lý
tài liệu, quản lý việc mượn trả, quản lý các thông tin liên quan trên giấy tờ
và thực hiện các báo cáo 1 cách thủ công bằng các phần mềm văn phòng
như: Word, Excel,…. Việc lưu trữ, kiểm kê cũng như tạo báo cáo 1 cách
thủ công như vậy rất dễ xảy ra tình trạng sai sót, để làm mất sách do việc
lưu trữ không được thực hiện 1 cách khoa học, thiếu đồng bộ và cực kỳ
tốn thời gian, dữ liệu cũng có thể bị mất.
- Nhận thức được khó khăn trong công việc, nhà quản lý đã kiến nghị lên
cấp trên và được ban giám hiệu nhà trường cho phép xây dựng 1 cơ sở dữ
liệu phục vụ công việc quản lý tài liệu trong thư viện của trường nhằm lưu
trữ và tìm kiếm dữ liệu tốt hơn, tối ưu hóa các nghiệp vụ trong thư viện.
1.2. Một số quy định của thư viện
- Điều kiện mượn sách: Độc giả phải hoàn thành nghĩa vụ trả sách hoặc bồi
thường (nếu có) để được tiếp tục mượn sách.
- Độc giả chỉ được mượn mang về các tài liệu cho phép của thư viện, chỉ có sách.
- Độc giả được mượn tối đa 2 cuốn sách/1 lần mượn.
- Thời gian trả sách: sau 15 ngày kể từ ngày làm thủ tục mượn.
- Khi mượn sách, độc giả phải nộp tiền cọc là 100.000 nghìn đồng. Số tiền sẽ
được nhân viên thu và sẽ trả lại cho độc giả sau khi độc giả trả lại sách.
- Trong trường hợp mượn tối đa 2 cuốn, độc giả phải trả lại đồng thời 2 cuốn
sách trong thời gian cho phép; tức 15 ngày kể từ ngày mượn.
- Mượn sách quá hạn, làm mất, hư hỏng sách; độc giả phải bồi thường theo quy định của thư viện. 2. Mục tiêu 2.1. Mục tiêu tổng quát
- Xây dựng cơ sở dữ liệu lưu trữ thông tin cần thiết phục vụ công việc quản
lý tài liệu trong thư viện, phục vụ 2 nghiệp vụ chính là quản lý thông tin
tài liệu và quản lý việc mượn trả, ngoài ra còn có lập báo cáo. Giúp đồng
bộ, cập nhật dữ liệu kịp thời, tiết kiệm thời gian, chi phí trong công việc.
Đồng thời người quản lý và thủ thư có thể nắm rõ tình trạng của tài liệu
trong thư viện, kiểm soát tốt hơn việc mượn trả của độc giả. 2
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 2.2. Mục tiêu cụ thể
- Lưu trữ, duy trì thông tin sách, đầu sách và các loại tài liệu khác. Cập nhật
tình trạng của các quyển sách.
- Lưu trữ, duy trì thông tin độc giả và thông tin việc mượn trả: phiếu mượn, phiếu phạt.
- Lưu trữ, duy trì thông tin liên quan phục vụ việc quản lý tài liệu.
- Báo cáo mượn quá hạn chưa trả.
- Báo cáo Danh sách tài liệu hỏng hoặc mất.
- Báo cáo Danh sách vi phạm. II. Phân tích yêu cầu 1. Actors 1.1. Thủ thư
- Thủ thư: Là tác nhân chính thực hiện các nghiệp vụ quản lý thông tin tài
liệu và quản lý việc mượn trả, phạt độc giả nếu có, in phiếu mượn & phiếu phạt. 1.2. Quản lý (Manager)
- Quản lý (Manager): có thẩm quyền để thực hiện các nghiệp vụ của thủ
thư, ngoài ra còn thực hiện nghiệp vụ lập báo cáo. 3
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 2. Biểu đồ Use Case 2.1. Use Case Tổng quát 4
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 2.2. Use Case phân rã a) Use Case theo thủ thư 5
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 b) Use Case theo Quản lý
3. Mô hình nghiệp vụ
3.1. Nghiệp vụ Mượn sách 3.2. Nghiệp vụ Trả sách
3.3. Nghiệp vụ Lập phiếu phạt III. Xây dựng mô hình
1. Mô hình dữ liệu đầu tiên 6
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788
2. Mô hình dữ liệu chi tiết
3. Mô tả các lớp và thuộc tính
IV. Thiết kế cơ sở dữ liệu & truy vấn 1. Lược đồ quan hệ 7
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 2. Tạo bảng a) Tạo cơ sở dữ liệu CREATE DATABASE QuanLyThuVien; USE QuanLyThuVien; 8
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 b) Tạo các bảng -- 1. Nhà xuất bản CREATE TABLE NXB (
ma_nxb VARCHAR(20) PRIMARY KEY, ten_nxb VARCHAR(50) NOT NULL, sdt VARCHAR(20), email VARCHAR(255) ); -- 2. Khoa Viện CREATE TABLE KHOA_VIEN (
ma_khoa_vien VARCHAR(10) PRIMARY KEY,
ten_khoa_vien VARCHAR(50) NOT NULL ); -- 3. Lớp chuyên ngành
CREATE TABLE LOP_CHUYEN_NGANH (
ma_lop VARCHAR(10) PRIMARY KEY, ten_lop VARCHAR(50) NOT NULL ); -- 4. Nhân viên CREATE TABLE NHAN_VIEN (
ma_nv VARCHAR(10) PRIMARY KEY, ho_ten VARCHAR(50) NOT NULL,
vai_tro ENUM ('Thủ thư', 'Quản lý') ); -- 5. Chủ đề CREATE TABLE CHU_DE (
ma_chu_de VARCHAR(10) PRIMARY KEY,
ten_chu_de VARCHAR(50) NOT NULL ); -- 6. Tài liệu khác CREATE TABLE TAI_LIEU_KHAC (
ma_tai_lieu_khac VARCHAR(10) PRIMARY KEY,
tieu_de VARCHAR(100) NOT NULL,
tac_gia VARCHAR(200) NOT NULL, nam_thuc_hien YEAR NOT NULL, 9
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 phan_loai ENUM( 'Luận văn', 'Luận án', 'Bài báo', 'Tạp chí nghiên cứu') ); -- 7. Độc giả CREATE TABLE DOC_GIA (
ma_dg VARCHAR(10) PRIMARY KEY,
loai_dg ENUM ('Sinh viên', 'Giảng viên'), ho_ten VARCHAR(50) NOT NULL, ma_lop VARCHAR(10),
ma_khoa_vien VARCHAR(10) NOT NULL, sdt VARCHAR(10) NOT NULL, email VARCHAR(255),
FOREIGN KEY (ma_lop) REFERENCES LOP_CHUYEN_NGANH (ma_lop),
FOREIGN KEY (ma_khoa_vien) REFERENCES KHOA_VIEN (ma_khoa_vien) ); -- 8. Đầu sách CREATE TABLE DAU_SACH (
ma_dau_sach VARCHAR(10) PRIMARY KEY,
ten_sach VARCHAR(100) NOT NULL, tac_gia VARCHAR(50) NOT NULL, ma_nxb VARCHAR(20) NOT NULL, ma_chu_de VARCHAR(10),
gia_sach DECIMAL(10, 2) NOT NULL, so_luong_tong INT UNSIGNED,
so_luong_hien_co INT UNSIGNED,
CHECK (so_luong_hien_co <= so_luong_tong),
FOREIGN KEY (ma_nxb) REFERENCES NXB(ma_nxb),
FOREIGN KEY (ma_chu_de) REFERENCES CHU_DE(ma_chu_de) ); -- 9. Sách CREATE TABLE SACH (
ma_sach VARCHAR(10) PRIMARY KEY, 10
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788
ma_dau_sach VARCHAR(10) NOT NULL, nam_xuat_ban YEAR, tinh_trang ENUM( 'Nguyên vẹn', 'Hỏng', 'Mất'), mo_ta TEXT,
FOREIGN KEY (ma_dau_sach) REFERENCES DAU_SACH(ma_dau_sach) ); -- 10. Phiếu mượn CREATE TABLE PHIEU_MUON (
ma_muon VARCHAR(10) PRIMARY KEY, ma_dg VARCHAR(10) NOT NULL, ngay_muon DATE NOT NULL, han_tra DATE NOT NULL,
ma_nv_muon VARCHAR(10) NOT NULL,
FOREIGN KEY (ma_dg) REFERENCES DOC_GIA(ma_dg),
FOREIGN KEY (ma_nv_muon) REFERENCES NHAN_VIEN(ma_nv) );
-- 11. Chi tiết phiếu mượn
CREATE TABLE CHI_TIET_PHIEU_MUON ( ma_muon VARCHAR(10) NOT NULL, ma_sach VARCHAR(10) NOT NULL, ngay_tra DATE,
PRIMARY KEY (ma_muon, ma_sach),
FOREIGN KEY (ma_muon) REFERENCES PHIEU_MUON(ma_muon),
FOREIGN KEY (ma_sach) REFERENCES SACH(ma_sach) ); -- 12. Phiếu phạt CREATE TABLE PHIEU_PHAT (
ma_phat VARCHAR(10) PRIMARY KEY, ma_muon VARCHAR(10) NOT NULL, ngay_phat DATE NOT NULL,
trang_thai ENUM('Đã đóng', 'Chưa đóng'),
ma_nv_phat VARCHAR(10) NOT NULL, 11
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788
FOREIGN KEY (ma_muon) REFERENCES PHIEU_MUON(ma_muon),
FOREIGN KEY (ma_nv_phat) REFERENCES NHAN_VIEN(ma_nv) );
-- 13. Chi tiết phiếu phạt
CREATE TABLE CHI_TIET_PHIEU_PHAT ( ma_phat VARCHAR(10) NOT NULL, ma_sach VARCHAR(10) NOT NULL, loi_vi_pham ENUM( 'Quá hạn', 'Mất', 'Hỏng', 'Khác') NOT NULL,
so_tien_phat DECIMAL(10, 2) NOT NULL, mo_ta TEXT,
PRIMARY KEY (ma_phat, ma_sach, loi_vi_pham),
FOREIGN KEY (ma_phat) REFERENCES PHIEU_PHAT(ma_phat),
FOREIGN KEY (ma_sach) REFERENCES SACH(ma_sach) ); 3. Ràng buộc 4. Nhập dữ liệu 12
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 Dữ liệu Nhà xuất bản: Dữ liệu Khoa Viện: 13
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788
Dữ liệu Lớp chuyên ngành:
Dữ liệu Nhân viên thư viện: 14
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 Dữ liệu Chủ đề: Dữ liệu Tài liệu khác: 15
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 Dữ liệu độc giả: Dữ liệu đầu sách: Dữ liệu sách: 16
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 5. Truy vấn
a) -- Báo cáo mượn quá hạn chưa trtrả SELECT
ROW_NUMBER() OVER (ORDER BY pm.ma_muon) AS STT, pm.ma_dg, dg.ho_ten, ctpm.ma_sach, ds.ten_sach, pm.han_tra,
DATEDIFF(CURDATE(), pm.ngay_muon) AS so_ngay_qua_han FROM PHIEU_MUON pm
JOIN DOC_GIA dg ON pm.ma_dg = dg.ma_dg
JOIN CHI_TIET_PHIEU_MUON ctpm ON pm.ma_muon = ctpm.ma_muon
JOIN SACH s ON ctpm.ma_sach = s.ma_sach
JOIN DAU_SACH ds ON s.ma_dau_sach = ds.ma_dau_sach WHERE ngay_tra = NULL AND CURDATE() > pm.han_tra;
b) -- Báo cáo sách hỏng, mất SELECT
ROW_NUMBER() OVER (ORDER BY s.ma_sach) AS STT, s.ma_sach, ds.ten_sach, s.tinh_trang, s.mo_ta FROM SACH s
JOIN DAU_SACH ds ON s.ma_dau_sach = ds.ma_dau_sach
WHERE s.tinh_trang LIKE '%hỏng%'
OR s.tinh_trang LIKE '%mất%';
c) -- Báo cáo Danh sách vi phạm SELECT
ROW_NUMBER() OVER (ORDER BY pp.ngay_phat, ctpp.loi_vi_pham) AS STT,
DATE_FORMAT(pp.ngay_phat, '%m/%Y') AS thang_nam, pm.ma_dg, dg.ho_ten, ctpp.ma_sach, ctpp.loi_vi_pham, 17
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com) lOMoARcPSD|51415788 ctpp.so_tien_phat FROM CHI_TIET_PHIEU_PHAT ctpp
JOIN PHIEU_PHAT pp ON ctpp.ma_phat = pp.ma_phat
JOIN PHIEU_MUON pm ON pp.ma_muon = pm.ma_muon
JOIN DOC_GIA dg ON pm.ma_dg = dg.ma_dg
WHERE YEAR(pp.ngay_phat) = 2025 ORDER BY MONTH(pp.ngay_phat), pp.ngay_phat;
V. Thiết kế giao diện người dùng 1. Giao diện nhập liệu 2. Giao diện báo cáo 18
Downloaded by H?ng Anh L??ng (honganh08080808@gmail.com)