1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo bài tập hệ quản trị cơ sở dữ liệu tên Đề tài xây dựng hệ quản trị cơ sở dữ liệu cho quản lý thư viện

69 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Hệ Quản Trị Cơ Sở Dữ Liệu Cho Quản Lý Thư Viện
Tác giả Phạm Bảo Nhi, Nguyễn Bình Nam, Nguyễn Duy Minh, Ngô Đức Thuận
Trường học Trường Đại Học CMC
Chuyên ngành Hệ Quản Trị Cơ Sở Dữ Liệu
Thể loại báo cáo bài tập
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 69
Dung lượng 3,44 MB

Nội dung

Quản lý thông tin trong một thư viện đòi hỏi sự tổ chức và quản lý chặt chẽ, từ việc lưu trữ thông tin về sách, tác giả, độc giả đến việc quản lý mượn trả và thống kê sử dụng.. Thư viện

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CMC

BÁO CÁO BÀI TẬP THI KẾT THÚC HỌC PHẦN HỌC PHẦN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

Tên đề tài: Xây dựng Hệ quản trị Cơ sở dữ liệu cho Quản lý Thư viện Nhóm sinh viên:

Phạm Bảo Nhi – BIT220127 – 22IT1 Nguyễn Bình Nam – BIT220112 – 22IT1 Nguyễn Duy Minh – BIT220103 – 22IT1 Ngô Đức Thuận – BIT220149 – 22IT1

Hà Nội, tháng 04 – 2024

Trang 2

MỤC LỤC

MỤC LỤC 2

DANH MỤC CÁC HÌNH ẢNH 3

MỞ ĐẦU 4

PHẦN I MÔ TẢ DỰ ÁN 5

1 Phân tích nghiệp vụ 5

2 Yêu cầu bài toán 6

3 Thiết kế lược đồ usecase 7

4 Phân công nhiệm vụ 8

5 Kế hoạch dự án 8

PHẦN II MÔ HÌNH HÓA DỮ LIỆU 10

1 Dữ liệu hệ thống 10

2 Sơ đồ mối quan hệ thực thể ER 12

3 Điều chỉnh lược đồ ER để minh họa MongoDB và mối quan hệ 13

4 Tìm hiểu về mô hình hóa dữ liệu SQL và NoSQL 15

PHẦN III TRUY VẤN VÀ THAO TÁC CƠ SỞ DỮ LIỆU 18

PHẦN IV PHÂN TÍCH 66

1 Phân tích và nêu rõ ưu nhược điểm của cơ sở dữ liệu quan hệ và CSDL dựa trên tài liệu (tùy thuộc ngữ cảnh sử dụng) 66

2 Đánh giá công việc 68

PHẦN V KẾT LUẬN 69

PHẦN VI TÀI LIỆU THAM KHẢO 69

Trang 3

DANH MỤC CÁC HÌNH ẢNH

Hình 1 Lược đồ usecase mô tả hệ thống

Hình 2 Lược đồ quan hệ ER

Hình 3 Lược đồ ER minh họa truy vấn MongoDB

Hình 4 Giao diện quản lý Sách

Hình 5 Giao diện quản lý Mượn trả sách

Hình 6 Giao diện quản lý Mượn trả sách

Hình 7 Giao diện quản lý lịch sử Mượn sách

Hình 8 Giao diện quản lý trả sách

Hình 9 Giao diện quản lý phiếu mượn sách

Hình 10 Giao diện quản lý phí phạt

Hình 11 Giao diện quản lý thẻ bạn đọc

Hình 12 Giao diện thống kê sách

Hình 13 Giao diện thống kê mượn trả sách

Hình 14 Giao diện thống kê mượn sách của từng độc giả Hình 15 Giao diện thống kê phí phạt

Hình 16 Giao diện thống kê số lượng

Trang 4

MỞ ĐẦU

Trong thời đại số hóa hiện nay, việc xây dựng một hệ thống quản lý thư viện không chỉ là một nhu cầu mà còn là một yêu cầu cần thiết để thích ứng với sự phát triển của xã hội và nhu cầu thông tin ngày càng tăng của cộng đồng đọc giả Hệ thống này không chỉ là nơi lưu trữ sách và tài liệu, mà còn là trung tâm thông tin quan trọng, giúp cung cấp dịch vụ đa dạng và hiệu quả cho người sử dụng

Quản lý thông tin trong một thư viện đòi hỏi sự tổ chức và quản lý chặt chẽ, từ việc lưu trữ thông tin về sách, tác giả, độc giả đến việc quản lý mượn trả và thống kê sử dụng Với sự phát triển của công nghệ thông tin, hệ thống quản lý thư viện có thể trở nên linh hoạt và tiện ích hơn bao giờ hết, giúp tối ưu hóa quá trình quản lý và tương tác giữa thư viện và độc giả

Trong bối cảnh này, việc thiết kế và triển khai một hệ thống quản lý cơ sở dữ liệu đóng vai trò quan trọng, nhằm đảm bảo tính hiệu quả và linh hoạt trong quản lý thông tin Bằng cách kết hợp các công nghệ mới như SQL và NoSQL, cùng với việc áp dụng các phương pháp phân tích hiệu suất, dự án này mong muốn đem lại một hệ thống quản

lý thư viện toàn diện và hiệu quả, đồng thời đáp ứng được nhu cầu đa dạng của người sử dụng

Trang 5

mã tựa sách sẽ phụ thuộc vào mã đầu sách để xác định tựa sách thuộc đầu sách nào Mỗi tựa sách đều có chứa thông tin tựa sách như mã tựa sách và trạng thái tựa sách đã được trả hoặc chưa trả

Thư viện quản lý bạn đọc dựa trên thông tin bạn đọc khi đăng ký trở thành độc giả Thông tin bạn đọc được lưu trữ trong bảng Readers (Bạn đọc) bao gồm các thông tin về

mã bạn đọc, họ tên, địa chỉ, email và số điện thoại liên hệ Thủ thư sẽ cấp cho bạn đọc một thẻ thành viên thư viện Trên thẻ có mã số thẻ chính là mã số bạn đọc để phân biệt với bạn đọc khác Thẻ này có giá trị một năm kể từ ngày bạn đọc đăng ký thẻ Trước khi thẻ hết hạn, bạn đọc sẽ được thông báo để gia hạn thẻ bạn đọc

Thư viện sẽ quản lý phiếu mượn của bạn đọc dựa trên thông tin được lưu trữ trong bảng BorrowTicket (Phiếu mượn) và BorrowTicketData (Thông tin phiếu mượn) Trong phiếu mượn có lưu trữ các thông tin về mã phiếu mượn, mã bạn đọc, thủ thư cấp phiếu mượn, mã tựa sách được mượn, các thông tin về ngày mượn ngày trả và tình trạng cuốn sách sau khi trả sách của bạn đọc còn nguyên vẹn hay hư hỏng, từ đó thủ thư sẽ tính toán tiền phạt nếu bạn đọc trả sách quá hạn hoặc làm hỏng sách

a Mượn trả sách

- Một cuốn sách có thể được mượn tối đa 30 ngày Nếu quá hạn phải trả sách

mà sách vẫn chưa được trả thì thủ thư sẽ tính phí phạt Khi mượn sách, bạn đọc đem sách đến quầy thủ thư Thủ thư sẽ kiểu tra trên hệ thống quản lý thư viện về bạn đọc đó như: mã bạn đọc, họ tên, địa chỉ, email và số điện thoại bạn đọc Nếu bạn đọc mượn quá 5 cuốn sách thì hệ thống cũng sẽ kiểm tra và cảnh báo giới hạn số sách được phép mượn Thông tin về việc mượn trả sách của bạn đọc bao gồm: tựa sách, mã bạn đọc, ngày mượn, hạn trả, thủ thư trực tại thư viện, trạng thái sách Bên cạnh đó, hệ thống cũng sẽ kiểm tra thông tin sách trước khi mượn để đảm bảo sách đủ điều kiện để cho mượn như cuốn

Trang 6

sách cụ thể có sẵn để mượn không, Nếu tất cả thông tin hợp lệ, thủ thư sẽ cho mượn sách Nếu không đảm bảo đủ điều kiện thì hệ thống sẽ thông báo điều kiện không thỏa mãn là gì và hiện thông báo Nếu cuốn sách được mượn thì sẽ cập nhật trạng thái mượn của sách

- Khi trả sách, thủ thư sẽ kiểm tra trên hệ thống thông tin về cuốn sách được trả Thông tin về mã tựa sách, tựa sách, tác giả, mã bạn đọc, họ tên và ngày trả thực tế, trạng thái sách và tình trạng trả sẽ được cập nhật trên hệ thống bởi thủ thư Nếu sách trả quá hạn cho phép thì sẽ tính phí trễ hạn dựa trên ngày trả sách dự kiến so với ngày trả thực tế

b Quản lý phiếu mượn sách

- Khi một bạn đọc mượn sách tại thư viện, thủ thư sẽ kiểm tra hệ thống và xác nhận cho mượn hay không Nếu một cuốn sách được mượn thành công, thủ thư sẽ tiến hành tạo phiếu mượn sách cho đọc giả, lưu trữ thông tin về sách được mượn, ngày mượn và ngày trả dự kiến Phiếu mượn sẽ lưu trữ thông tin

về ngày mượn, ngày trả dự kiến và ngày trả thực tế Nếu ngày trả thực tế sau ngày trả dự kiến thì thủ thư sẽ tính phiếu phạt

c Quản lý thẻ bạn đọc

- Thẻ bạn đọc sẽ được gia hạn và cập nhật lại thông tin nếu thẻ hết hạn

d Báo cáo thống kê

- Có bao nhiêu cuốn sách được xuất bản trong năm qua?

- Có bao nhiêu bạn đọc đã mượn sách?

- Có những bạn đọc nào mượn sách và chưa trả?

- Tổng số tiền phạt đã phát sinh từ các phiếu mượn quá hạn là bao nhiêu?

- Danh sách các sách có tỉ lệ trả sách quá hạn?

2 Yêu cầu bài toán

a Yêu cầu chức năng

- Danh sách các yêu cầu chức năng như sau:

 Quản lý sách trong thư viện

 Quản lý việc mượn trả sách

Trang 7

 Chỉ cho mượn sách với thẻ còn hạn và sách không có bạn đọc khác mượn

 Mỗi bạn đọc chỉ mượn tối đa 5 cuốn sách trong 1 lần mượn

 Thời hạn mượn của mỗi cuốn sách không quá 30 ngày kể từ ngày mượn Nếu trả sách trễ, tiền phạt: 10000đ/cuốn/ngày

b Yêu cầu chất lượng

- Giao diện: phải thân thiện, dễ sử dụng, đẹp

- Tốc độ xử lý: Nhanh chóng, không để chờ quá lâu

- Không làm ảnh hưởng đến các chức năng khác khi thay đổi một chức năng

3 Thiết kế lược đồ usecase

Hình 1 Lược đồ usecase mô tả hệ thống

Trang 8

4 Phân công nhiệm vụ

1) Phạm Bảo Nhi:

- Truy vấn SQL thực hiện các chức năng cơ bản

- Thiết kế cơ sở dữ liệu MongoDB

- Đánh giá công việc

- Viết báo cáo dự án

2) Ngô Đức Thuận:

- Thực hiện báo cáo mô tả dự án

- Truy vấn SQL sử dụng stored procedures, transactions, đánh giá hiệu quả của stored procedures trong truy vấn CSDL của hệ thống

3) Nguyễn Duy Minh:

- Mô hình hóa dữ liệu

- Phân tích và nêu rõ ưu nhược điểm của cơ sở dữ liệu quan hệ và cơ sở dữ liệu dựa trên tài liệu

- Truy vấn SQL sử dụng trigger, đánh giá hiệu quả của việc sử dụng trigger trong truy vấn CSDL

4) Nguyễn Bình Nam:

- Thực hiện báo cáo mô tả dự án

- Thiết kế tạo bảng cơ sở dữ liệu và nhập dữ liệu cho các bảng

- Thực hiện truy vấn NoSQL

- Xây dựng wireframe cho các chức năng của hệ thống

5 Kế hoạch dự án

Dự án quản lý thư viện này được thiết kế nhằm cung cấp một hệ thống cơ sở dữ liệu hiệu quả và linh hoạt để quản lý thông tin về sách, người đọc, mượn trả và các hoạt động khác trong thư viện Dự án sẽ bao gồm các giai đoạn từ thiết kế cơ sở dữ liệu đến việc thử nghiệm và đánh giá cuối cùng

a Đầu công việc, thiết kế và phân chia công việc:

- Xác định mục tiêu và yêu cầu của dự án thông qua cuộc họp ban đầu

- Phân công nhiệm vụ cho các thành viên trong nhóm, bao gồm việc thiết kế lược

đồ E-R, so sánh SQL và NoSQL, thiết kế câu lệnh truy vấn, procedures, trigger,

và phân tích đánh giá cuối cùng

b Lược đồ E-R và lược đồ use case:

- Sử dụng phần mềm thiết kế cơ sở dữ liệu để tạo lược đồ E-R và mô tả các thực thể và mối quan hệ giữa chúng

- Xác định các use case chính và các actor tương tác với hệ thống

Trang 9

d Thiết kế các câu lệnh truy vấn và thử nghiệm:

- Xây dựng và kiểm tra các câu lệnh truy vấn cơ bản để quản lý thông tin sách, người đọc và mượn trả

- Thực hiện thử nghiệm trên cơ sở dữ liệu để đảm bảo tính đúng đắn và hiệu quả của các truy vấn

e Thiết kế các transaction, procedures và trigger:

- Thiết kế các transaction để đảm bảo tính nhất quán và độ tin cậy của dữ liệu trong các thao tác quan trọng như mượn trả sách

- Xây dựng các stored procedures để thực hiện các nhiệm vụ phức tạp như đăng ký thành viên mới

- Thiết kế trigger để tự động cập nhật thông tin khi có sự thay đổi trong hệ thống

f Phân tích và đánh giá:

- Phân tích cơ sở dữ liệu để tìm ra các điểm cần cải thiện và tối ưu hóa

- Đánh giá hiệu suất, tính nhất quán và khả năng mở rộng của hệ thống

- Đề xuất các biện pháp cải thiện và tối ưu hóa dựa trên phân tích

g Đánh giá hoàn thành công việc và viết báo cáo:

- Tổ chức cuộc họp cuối dự án để đánh giá hoàn thành công việc và xác định bài học học được

- Viết báo cáo dự án, bao gồm mô tả các công việc đã thực hiện, kết quả đạt được, vấn đề gặp phải và đề xuất cho tương lai

Trang 10

PHẦN II MÔ HÌNH HÓA DỮ LIỆU

1 Dữ liệu hệ thống

a Các bảng dữ liệu:

- Nhà xuất bản: Lưu trữ tất cả các nhà xuất bản sách bao gồm các thông tin sau:

mã nhà xuất bản, tên nhà xuất bản và ngày tháng xuất bản

- Thể loại sách: Lưu trữ tất cả các thể loại sách có trong thư viện bao gồm các thông tin sau: mã thể loại, tên thể loại và ngày được phép mượn

- Sách: Lưu trữ tất cả các thông tin về sách có trong thư viện bao gồm các thông tin sau: mã sách, mã thể loại, mã nhà xuất bản, tên sách và tác giả

- Tựa sách: Lưu trữ các thông tin về các tựa sách thuộc các đầu sách bao gồm các thông tin sau: mã tựa sách, mã sách và trạng thái mượn trả của tựa sách

- Thẻ bạn đọc: Lưu trữ thông tin thẻ bạn đọc bao gồm: mã thẻ, mã bạn đọc, ngày cấp thẻ và ngày hết hạn thẻ

b Mô tả chi tiết từng bảng dữ liệu SQL

Bảng Publisher

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

1 PublisherID int primary key not null

2 PublisherName varchar(50)

3 PublicationDate varchar(10)

Bảng Category

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

2 CategoryName varchar(50)

3 AllowedBorrowDate int

Trang 11

Bảng Books

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

5 PublisherID int foreign key not null

Bảng BookItem

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

trả = 1 Sách chưa được trả = 0

Bảng Readers

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

3 Address varchar(100)

Bảng Librarians

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

Bảng BorrowTicket

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

Trang 12

2 ReaderID int foreign key not null

3 LendDate varchar(10)

4 LibrarianID int foreign key not null

Bảng BorrowTicketData

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

3 DueDate varchar(10)

4 ReturnDate varchar(10)

sau khi trả: Intact hoặc Damaged

Bảng Card

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

3 AssignDate varchar(10)

4 ExpirationDate varchar(10)

2 Sơ đồ mối quan hệ thực thể ER

Trang 13

Hình 2 Lược đồ quan hệ ER

3 Điều chỉnh lược đồ ER để minh họa MongoDB và mối quan hệ

a Minh họa MongoDb

Hình 3 Lược đồ ER minh họa truy vấn MongoDB

Trang 14

b Mô tả chi tiết các Collection điều chỉnh từ ER minh họa MongoDb

Trang 15

4 Tìm hiểu về mô hình hóa dữ liệu SQL và NoSQL

Việc sử dụng cả SQL và NoSQL cho mô hình cơ sở dữ liệu của thư viện có thể mang lại lợi ích trong việc tối ưu hóa cho từng loại dữ liệu cụ thể và đáp ứng nhanh chóng các yêu cầu của hệ thống mà không phải đánh đổi hiệu suất hoặc tính toàn vẹn của dữ liệu

1) Tính linh hoạt trong lưu trữ dữ liệu:

- Lí do: Sử dụng NoSQL cho các dạng dữ liệu không cấu trúc như bình luận, đánh giá sách, v.v

- Ví dụ: MongoDB có thể được sử dụng để lưu trữ thông tin về bình luận của người đọc về sách một cách linh hoạt và không cần định trước cấu trúc của dữ liệu

2) Quản lý thông tin về sách và độc giả:

- Lí do: Sử dụng SQL để quản lý thông tin cơ bản về sách và độc giả, vì dữ liệu này thường có cấu trúc rõ ràng và quan hệ với nhau

- Ví dụ: SQL Server có thể được sử dụng để lưu trữ thông tin về sách bao gồm tên sách, tác giả, số lượng tồn kho, và thông tin về độc giả như tên, địa chỉ, và lịch sử mượn/trả sách

3) Tối ưu cho mục đích cụ thể:

- Lí do: Sử dụng NoSQL cho các mục đích cụ thể như tìm kiếm toàn văn, lưu trữ hình ảnh sách, hoặc đặc tính sách

- Ví dụ: MongoDB có thể được sử dụng để lưu trữ hình ảnh bìa sách, với các truy vấn dựa trên tên sách hoặc tác giả để truy xuất hình ảnh tương ứng

4) Mở rộng hệ thống:

Trang 16

- Lí do: Kết hợp cả SQL và NoSQL cho phép mở rộng hệ thống dễ dàng, với mỗi loại dữ liệu được quản lý và mở rộng độc lập với nhau

- Ví dụ: Nếu hệ thống phải xử lý lượng lớn các bình luận và đánh giá từ người đọc, MongoDB có thể được sử dụng cho phần này mà không ảnh hưởng đến hiệu suất của việc quản lý thông tin sách và độc giả trên SQL Server

Bảng so sánh ưu nhược điểm của mô hình hóa dữ liệu SQL và NoSQL

Sử dụng mô hình dữ liệu không quan

hệ, dữ liệu được lưu trữ dưới dạng tài liệu hoặc cặp key-value

Ưu điểm - Dữ liệu có cấu trúc rõ ràng: SQL sử

dụng mô hình dữ liệu quan hệ, giúp dễ dàng quản lý và truy vấn dữ liệu có cấu trúc như thông tin sách, độc giả,

và mượn/trả sách

- Khả năng mở rộng: SQL Server có

thể mở rộng dễ dàng theo chiều ngang (horizontal scaling) và chiều dọc (vertical scaling)

- Khả năng thực hiện các giao dịch phức tạp: SQL Server hỗ trợ các giao

dịch ACID (Atomicity, Consistency, Isolation, Durability) đảm bảo tính toàn vẹn và đồng nhất của dữ liệu

- Tính linh hoạt: MongoDB có khả

năng lưu trữ dữ liệu không cấu trúc hoặc cấu trúc linh hoạt, phù hợp với việc lưu trữ các thông tin mở rộng của thư viện như bình luận, đánh giá sách

- Khả năng mở rộng: MongoDB dễ

dàng mở rộng theo chiều ngang, giúp đáp ứng nhu cầu mở rộng của thư viện khi dữ liệu tăng lên

Nhược

điểm

- Khả năng mở rộng giới hạn: SQL

Server có thể gặp hạn chế trong việc

mở rộng theo chiều ngang do yêu cầu quản lý khóa và mối quan hệ, gây ra vấn đề hiệu suất khi hệ thống phải xử

lý lượng truy vấn lớn

- Tính linh hoạt: Mô hình dữ liệu

quan hệ có thể không phù hợp với các

- Khả năng thực hiện các giao dịch phức tạp: MongoDB không hỗ trợ các

giao dịch ACID như SQL Server, điều này có thể gây ra vấn đề về tính toàn vẹn và đồng nhất của dữ liệu trong một số trường hợp

- Không thích hợp cho dữ liệu có cấu trúc rõ ràng: Do tính linh hoạt của

NoSQL, việc lưu trữ dữ liệu có cấu

Trang 17

ứng dụng có nhu cầu lưu trữ dữ liệu không cấu trúc hoặc linh hoạt

trúc rõ ràng như thông tin sách và độc giả có thể không hiệu quả

Trang 18

PHẦN III TRUY VẤN VÀ THAO TÁC CƠ SỞ DỮ LIỆU

1 Quản lý sách tại thư viện

Hình 4 Giao diện quản lý Sách

1.1 Thêm sách vào thư viện

1.1.1 Truy vấn cơ sở dữ liệu

Trang 20

- Bản ghi 1: CategoryID không tồn tại

INSERT INTO Books BookID, CategoryID, Title, Author, PublisherID)

VALUES (3000, 9999, 'Book Title 2', 'Author 2', 1002);

ERROR: CategoryID does not exist in the Category table

- Bản ghi 2: PublisherID không tồn tại

INSERT INTO Books BookID, CategoryID, Title, Author, PublisherID)

VALUES (3041, 2000, 'Book Title 3', 'Author 3', 9999);

ERROR: CategoryID does not exist in the Category table

- Bản ghi 3: Title là NULL

INSERT INTO Books BookID, CategoryID, Title, Author, PublisherID)

VALUES (3041, 2001, NULL, 'Author 4', 1002);

ERROR: Title cannot be empty

- Bản ghi 4: Author là NULL

INSERT INTO Books BookID, CategoryID, Title, Author, PublisherID)

VALUES (3041, 2001, 'Book Title 5', NULL, 1002);

ERROR: Author cannot be empty

- Bản ghi 5: Dữ liệu hợp lệ

INSERT INTO Books BookID, CategoryID, Title, Author, PublisherID)

VALUES (3041, 2001, 'Life Of Pi', 'Yann Martel', 1002);

1.1.2 Các biến cố xảy ra khi tương tác với giao diện

Trang 21

- Biến cố 1: Click vào 'Save'

 Kiểm tra các textbox có NULL hay không

 Nếu NULL, hệ thống sẽ hiển thị thông báo ERROR

 Hệ thống reset lại các textbox

- Biến cố 2: Kiểm tra tính hợp lệ

 Kiểm tra BookID không bị trùng lặp với dữ liệu đã có sẵn

 Kiểm tra CategoryID hợp lệ hay không

 Kiểm tra PublisherID hợp lệ hay không

 Kiểm tra Title có NULL hay không

 Kiểm tra Author có NULL hay không

- Biến cố 3: Click vào 'Save'

 Nếu thoả mãn tất cả các điều kiện trên, hệ thống sẽ xác nhận lưu thông tin vào cơ sở dữ liệu

 Dữ liệu sau khi nhập thành công sẽ gửi thông báo đến thủ thư xác nhận đã thêm dữ liệu

- Biến cố 4: Kiểm tra dữ liệu

 Sau khi Save thông tin vào cơ sở dữ liệu, thủ thư kiểm tra trong cơ sở dữ liệu xem thông tin đã được thêm vào hay chưa

1.2 Xóa thông tin sách khỏi thư viện dựa trên mã (ID) sách

1.2.1 Truy vấn cơ sở dữ liệu

Trang 22

- Bản ghi 1: Cuốn sách đang được mượn

EXEC DeleteBook @BookID = 3003;

- Bản ghi 2: Cuốn sách đang tại thư viện

EXEC DeleteBook @BookID = 3001;

MESSAGES: The book has been deleted from the system

1.2.2 Giao diện hệ thống

- Biến cố 0: Nhập dữ liệu đầu vào

 Nhập BookID của cuốn sách cần xóa

Trang 23

- Biến cố 1: Kiểm tra tính hợp lệ

 Kiểm tra xem cuốn sách có đang được mượn không Nếu có, in ra thông báo không thể xóa cuốn sách và kết thúc thủ tục

- Biến cố 2: Xóa dữ liệu

 Xóa các thông tin liên quan đến cuốn sách từ bảng BorrowTicketData và BookItem

- Biến cố 3: Xác nhận đã xóa

 Nếu dữ liệu hợp lệ, hệ thống sẽ thực hiện xóa và thông báo đã xóa dòng

dữ liệu đến thủ thư

2 Quản lý thông tin mượn trả sách

Hình 5 Giao diện quản lý Mượn trả sách

2.1 Kiểm tra thông tin sách trước khi cho mượn

2.1.1 Truy vấn cơ sở dữ liệu

- Bản ghi 1: Trường hợp tìm được cuốn sách

Trang 24

- Bản ghi 2: Trường hợp không tìm được cuốn sách hoặc cuốn sách đã bị mượn

Trang 25

2.1.2 Giao diện hệ thống

- Biến cố 0: Kiểm tra sách tại thư viện

 Kiểm tra xem sách có tồn tại và có sẵn để mượn không bằng cách kiểm tra trong bảng BookItem và BorrowTicketData

- Biến cố 1: Hiển thị thông tin chi tiết

 Nếu sách có sẵn để mượn, hiển thị thông báo chi tiết về sách bao gồm tiêu

đề, tác giả, nhà xuất bản, ngày xuất bản và ID của tựa sách

- Biến cố 2: Xử lý ngoại lệ

 Nếu sách không có sẵn để mượn hoặc đã được mượn hết, in ra thông báo

và quay lại trạng thái ban đầu

- Biến cố 3: Hoàn tất

 Hoàn tất transactions sau khi kiểm tra và hiển thị thông tin

2.2 Kiểm tra điều kiện mượn sách tại thư viện

2.2.1 Truy vấn cơ sở dữ liệu

Trang 27

- Bản ghi 1: Sách đã được mượn

INSERT INTO BorrowTicketData TicketID, BookItemID, DueDate,

ReturnDate, Status , Fine)

VALUES (7002, 3002402, '2024-05-20' , NULL, NULL, NULL);

- Bản ghi 2: Sách tại thư viện không còn đủ

Trang 28

- Bản ghi 3: Sách không thể cho mượn

INSERT INTO BorrowTicketData TicketID, BookItemID, DueDate, ReturnDate, Status , Fine)

VALUES (7041, 3001441, '2024-05-20' , NULL, NULL, NULL);

2.2.2 Giao diện hệ thống

- Biến cố 0: Kiểm tra tính hợp lệ của thẻ bạn đọc

 Kiểm tra xem ExpirationDate của CardID mượn sách còn hạn không, nếu không còn hạn thì sẽ thực hiện Rollback Transaction

- Biến cố 1: Kiểm tra số lượng sách mượn

 Nếu có TicketID xuất hiện 5 lần ( nghĩa là 1 ticket đã được gán vào 5 BookItemID - 1 ticket đã mượn 5 quyển sách) thì sẽ in ra thông báo là bạn đã mượn 5 quyển rồi, hãy tạo vé mới

- Biến cố 2: Kiểm tra trạng thái mượn trả của sách

 Kiểm tra xem Giá trị ReturnStatus của quyển sách đó trong bảng BorrowTicket

 Nếu là 0 (sách chưa trả) thì thông báo sách đã được người khác mượn rồi thực hiện Rollback Transaction

 Nếu là 1 (sách sẵn sàng cho mượn) thì chuyển ReturnStatus của quyển sách đó thành 0, thông báo sách đã cho mượn và ghi vào bảng

messageQueue

- Biến cố 3: Kiểm tra số lượng sách còn lại trong thư viện

 Kiểm tra xem loại sách đó (BookId) trong thư viện có còn trên 5 quyển không (count BookItemID), nếu còn ít hơn thì thông báo LowStock 2.3 Giới hạn số lượng sách được phép mượn

Trang 29

Hình 6 Giao diện quản lý Mượn trả sách

2.3.1 Truy vấn cơ sở dữ liệu

Trang 30

- Bản ghi 1: Thêm các bản ghi mới của một bạn đọc mượn nhiều cuốn sách

- Biến cố 2: Giới hạn số lượng sách mượn

 Nếu số lượng phiếu mượn sách vượt quá giới hạn (trong trường hợp này

là 5), trigger sẽ ngăn chặn giao dịch tiếp theo bằng cách sử dụng ROLLBACK TRANSACTION và gửi một thông báo cảnh báo cho người đọc thông qua bảng MessageQueue

- Biến cố 3: Thông báo

 In thông báo cảnh báo ra console để thông báo cho quản trị viên hoặc nhân viên thư viện về việc mượn sách quá giới hạn của một người đọc

Trang 31

2.4 Cập nhật lịch sử mượn sách

Hình 7 Giao diện quản lý lịch sử Mượn sách

2.4.1 Truy vấn cơ sở dữ liệu

Trang 32

- Bản ghi 1: Bạn đọc trả đúng thời hạn trả dự kiến

Trang 33

- Bản ghi 2: Bạn đọc trả trễ hơn so với thời hạn trả dự kiến

2.4.2 Giao diện hệ thống

- Biến cố 0: Theo dõi sự kiện trả sách

 Mỗi lần có sự cập nhật trên bảng này, đặc biệt là khi thông tin về ngày trả sách ReturnDate được cập nhật

- Biến cố 1: Lấy thông tin cần thiết

 Lấy thông tin từ bảng inserted, bao gồm TicketID, BookItemID, ReturnDate, Status, và các thông tin khác từ bảng BorrowTicketData Nó cũng kết hợp với các bảng khác như BorrowTicket và Readers để lấy thêm thông tin về BorrowDate và ReaderName

- Biến cố 2: Xác định phí phạt

 Tính toán phí phạt dựa trên số ngày trễ trả sách Nếu sách được trả sau thời hạn (ReturnDate > DueDate), trigger tính toán số ngày trễ (LateDays)

và tính toán phí phạt (Fine) tương ứng

- Biến cố 3: Ghi lại thông tin

 Nếu sự cập nhật liên quan đến ngày trả sách và không có giá trị NULL, trigger sẽ thêm một bản ghi mới vào bảng BorrowHistory để ghi lại thông tin về việc trả sách, bao gồm TicketID, BookItemID, BorrowDate,

DueDate, ReturnDate, Status, và Fine

- Biến cố 4: Cập nhật thông tin về phí phạt

 Cập nhật cột Fine trong bảng BTD cho bản ghi tương ứng với TicketID Điều này đảm bảo rằng thông tin về phí phạt cũng được cập nhật trong bản ghi gốc

- Biến cố 5: Thông báo

 Xuất thông tin về việc trả sách và phí phạt tương ứng ra console, giúp người quản lý có cái nhìn tổng quan về tình trạng mượn trả sách

2.5 Xác nhận thông tin khi bạn đọc trả sách tại thư viện

Trang 34

Hình 8 Giao diện quản lý trả sách

2.5.1 Truy vấn cơ sở dữ liệu

- Bản ghi 1: Bạn đọc trả sách vào ngày 25/05/2024

EXEC ConfirmBookReturn

@BookItemID = 3002402,

@ReturnDate = '2024-05-25' ,

@Status = "Damage";

Ngày đăng: 22/01/2025, 09:12

w