Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 33

Assignment CSDL về Quản lý Thư Viện

I.Statement of the problem (Phát biểu bài toán)


Xây dựng hệ thống quản lý thư viện, có khả năng lưu trữ, quản lý, và cung cấp dịch vụ cho tài
liệu thư viện và người dùng. Mục tiêu của dự án là tạo ra một hệ thống hoàn chỉnh và hiệu quả
để quản lý tài liệu, quản lý người dùng, và cung cấp các dịch vụ thư viện một cách hiệu quả.
Đảm bảo rằng người đọc có thể truy cập và sử dụng tài liệu một cách thuận tiện, còn nhân viên
thư viện có công cụ để quản lý và theo dõi tài liệu và hoạt động của người đọc.

Đối tượng cần quản lý và lưu trữ:

- Tài liệu thư viện: Bao gồm sách, báo, tạp chí, đĩa CD/DVD, tài liệu điện tử và các loại tài liệu
khác.
- Thông tin về tài liệu: Tiêu đề, tác giả, năm xuất bản, chủ đề, vị trí lưu trữ, số lượng có sẵn, v.v.
- Người dùng: Thông tin cá nhân, lịch sử mượn/trả sách, thẻ thư viện, v.v.

Người dùng (Đối tượng sử dụng):

- Nhân viên thư viện: Quản lý tài liệu, xử lý mượn/trả sách, duyệt sách mới, và quản lý hệ thống.
- Người đọc: Tìm kiếm, mượn, và trả sách, đặt sách trước, xem thông tin sách, v.v.

Phạm vi của bài toán:

-Hệ thống quản lý thư viện sẽ bao gồm các tính năng sau:

Quản lý tài liệu: Lưu trữ và cập nhật thông tin về tài liệu thư viện.

Quản lý người dùng: Lưu trữ thông tin cá nhân của người dùng và lịch sử mượn/trả sách.

Tìm kiếm và tra cứu: Cho phép người dùng tìm kiếm tài liệu dựa trên nhiều tiêu chí.

Mượn/Trả sách: Ghi nhận việc mượn và trả sách, quản lý thời hạn mượn.

Đặt sách trước: Cho phép người đọc đặt sách khi chúng đang được mượn bởi người khác.

Báo cáo và thống kê: Tạo ra các báo cáo về hoạt động của thư viện.

II. Description of the system’s operations (Mô tả nghiệp vụ của hệ thống)


*Quản lý tài liệu:

Thêm tài liệu mới vào cơ sở dữ liệu.

Cập nhật thông tin về tài liệu như tiêu đề, tác giả, năm xuất bản, vị trí, …
Xóa tài liệu khi nó đã không còn trong thư viện.

*Quản lý người dùng:

Thêm người dùng mới vào hệ thống.

Cập nhật thông tin cá nhân của người dùng.

Xóa người dùng khi họ không còn là thành viên thư viện.

*Tìm kiếm và tra cứu:

Cho phép người đọc tìm kiếm tài liệu dựa trên tiêu đề, tác giả, chủ đề, ISBN, hoặc các tiêu chí khác.

Hiển thị kết quả tìm kiếm và chi tiết của tài liệu.

*Mượn/Trả sách:

Ghi nhận việc mượn sách bao gồm thông tin về người mượn, tài liệu, ngày mượn, và ngày hết hạn.

Ghi nhận việc trả sách bao gồm thông tin về tài liệu và ngày trả.

Tính toán phí trễ hạn nếu người mượn trả sách sau hạn.

*Đặt sách trước:

Cho phép người đọc đặt sách khi chúng đang được mượn bởi người khác.

Thông báo cho người đọc khi sách đã sẵn sàng để mượn sau khi người trước đó trả sách.

*Báo cáo và thống kê:

Tạo các báo cáo về hoạt động của thư viện như số lượng sách mượn theo thời gian, sách phổ biến, số
lượng đặt sách trước, …

Hiển thị thống kê về người dùng, bao gồm người đọc mượn nhiều sách nhất, số lần trễ hạn, …

III. ER model of the system (Mô hình ER của hệ thống)


- Draw the correct symbol (Vẽ đúng ký hiệu)

IV. Relational model (converted from ER model) Mô hình quan hệ (chuyển từ


mô hình ER)
ReviewID DocumentID ReviewText CardID ExpirationDate
Create

Rate UserID
BookReview
LibraryCards
DocumentID LoanDate
UserID

LoanHistory LateFee

UserID Take
Know

HistoryID ReturnDate

StatusID

Email PhoneNumber
DoCode Rate

Follow Know FullName


Description Author UserID

Documents Users

Title Address
Location Take Create

UserType
DocumentID PublicationYear

LibraryCardNumber
QuantityInStock
DocumentType

ReservationID ReservationDate

Take

UserID Reservations

StatusName DocumentID Status


Create

DocumentStatus
ReportID

StatusID Description
Reports
ReportType

UserID ReportContent
Take
ReturnDate ReportDate

LateFee Creat
e
Loans
Create
StatisticValue
StatisticDate
LoanID UserID
DocumentID
Statistic
LoanDate DueDate
UserID StatisticType StatisticID
Documents Table

Field Name Data Type Field Format Caption Description


Size
DocumentID Integer Mã định danh tài liệu
Title Varchar 50 Tiêu đề
Author Varchar 40 Tác giả
PublicationYear Integer yyyy Năm xuất bản
DoCode Varchar 10 Mã số tài liệu
Location Varchar 100 Vị trí vật lý
QuantityInStock Integer Số lượng tồn kho
DocumentType Varchar 30 Loại tài liệu
Rate Decimal 3,2 Đánh giá
StatusID Integer Mã trạng thái
Description Varchar 100 Mô tả tài liệu
Users Table

Field Name Data Field Format Caption Description


Type Size
UserID Mã người dùng
Integer
FullName Varcha 100 Họ và tên
r
Address Varcha 200 Địa chỉ
r
PhoneNumber Varcha 12 0001101000 Số điện thoại
r
Email Varcha 100 @ Địa chỉ email
r
LibraryCardNumber Varcha 20 Mã số thẻ thư viện
r
UserType Varcha 25 Loại người dùng Nhân viên thư viện,
r người đọc, …

Loans Table

Field Name Data Field Format Caption Description


Type Size
LoanID Intege Mã phiếu mượn
r sách
DocumentID Intege Mã định danh tài
r liệu
UserID Intege Mã người dùng
r
LoanDate Date yyyy/MM/dd Ngày mượn tài liệu
DueDate Date yyyy/MM/dd Ngày hết hạn mượn
tài liệu
ReturnDate Date yyyy/MM/dd Ngày người đọc trả
tài liệu
LateFee Decimal 5,2 Số tiền phí trễ hạn

Reservations Table

Field Name Data Type Field Format Caption Description


Size
ReservationID Integer Mã phiếu đặt sách
DocumentID Integer Mã định danh tài liệu
UserID Integer Mã người dùng
ReservationDate Date Ngày đặt sách trước
Status Varchar 30 Trạng thái của phiếu đặt sách
trước

LoanHistory Table

Field Name Data Field Format Caption Description


Type Size
HistoryID Integer Mã phiếu đặt sách
DocumentID Integer Mã định danh tài liệu
UserID Integer Mã người dùng
LoanDate Date yyyy/MM/dd Ngày mượn tài liệu
ReturnDate Date yyyy/MM/dd Ngày người đọc trả tài liệu
LateFee Decimal 5,2 Số tiền phí trễ hạn

BookReviews Table

Field Name Data Field Format Caption Description


Type Size
ReviewID Integer Mã đánh giá
DocumentID Integer Mã định danh tài liệu
UserID Integer Mã người dùng
Rate Decimal 3,2 Đánh giá
ReviewText Varchar 500 Đánh giá và bình luận

Reports Table

Field Name Data Field Format Caption Description


Type Size
ReportID Integer Mã đánh giá
UserID Integer Mã người dùng
ReportType Varcha 50 Loại báo cáo
r
ReportDate Date yyyy/MM/dd Ngày tạo báo cáo
ReportContent Varcha 200 Dữ liệu chi tiết báo cáo
r

Statistic Table

Field Name Data Fiel Format Caption Description


Type d
Size
StatisticID Integer Mã đánh giá
UserID Integer Mã người dùng
StatisticType Varchar 50 Loại thống kê
StatisticDate Date yyyy/MM/dd Ngày tạo thống kê
StatisticValue Integer Giá trị thống kê

LibraryCards Table

Field Name Data Field Format Caption Description


Type Size
CardID Integer Mã thẻ thư viện
UserID Integer Mã người dùng
ExpirationDate Date yyyy/MM/dd Ngày hết hạn thẻ

DocumentStatus Table

Field Name Data Field Format Caption Description


Type Size
StatusID Integer Mã trạng thái
StatusName Varchar 20 Tên trạng thái
Description Varchar 100 Mô tả chi tiết trạng thái

VI. List of data constraints (Danh sách các ràng buộc dữ liệu)
1. Bảng Documents

- DocumentID là khóa chính (PRIMARY KEY).

- Title, Author, Location không thể là giá trị null (NOT NULL).

- StatusID là khóa ngoại (FOREIGN KEY) tham chiếu đến StatusID trong bảng DocumentStatus.

- PublicationYear, DoCode, QuantityInStock, DocumentType, Rate, và Description có thể là giá trị null.

2. Bảng Users

- UserID là khóa chính (PRIMARY KEY).

- FullName, Address, PhoneNumber, Email không thể là giá trị null (NOT NULL).

- LibraryCardNumber có thể là giá trị null.


- UserType có thể là giá trị null.

3. Bảng Loans

- LoanID là khóa chính (PRIMARY KEY).

- DocumentID là khóa ngoại (FOREIGN KEY) tham chiếu đến DocumentID trong bảng Documents.

- UserID là khóa ngoại (FOREIGN KEY) tham chiếu đến UserID trong bảng Users.

- LoanDate và DueDate không thể là giá trị null (NOT NULL).

- ReturnDate và LateFee có thể là giá trị null.

4. Bảng LoanHistory

- HistoryID là khóa chính (PRIMARY KEY).

- DocumentID là khóa ngoại (FOREIGN KEY) tham chiếu đến DocumentI` trong bảng Documents.

- UserID là khóa ngoại (FOREIGN KEY) tham chiếu đến UserID trong bảng Users.

- LoanDate, ReturnDate, và LateFee không thể là giá trị null (NOT NULL).

5. Bảng Reservations

- ReservationID là khóa chính (PRIMARY KEY).

- DocumentID là khóa ngoại (FOREIGN KEY) tham chiếu đến DocumentID trong bảng Documents.

- UserID là khóa ngoại (FOREIGN KEY) tham chiếu đến UserID trong bảng Users.

- ReservationDate và StatusReservations không thể là giá trị null (NOT NULL).

6. Bảng Statistic

- StatisticID là khóa chính (PRIMARY KEY).

- UserID là khóa ngoại (FOREIGN KEY) tham chiếu đến UserID trong bảng Users.

- StatisticType, StatisticDate, và StatisticValue không thể là giá trị null (NOT NULL).

7. Bảng Reports

- ReportID là khóa chính (PRIMARY KEY).


- UserID là khóa ngoại (FOREIGN KEY) tham chiếu đến `UserID` trong bảng Users.

- ReportType, ReportDate không thể là giá trị null (NOT NULL).

- ReportContent có thể là giá trị null.

8. Bảng BookReviews

- ReviewID là khóa chính (PRIMARY KEY).

- DocumentID là khóa ngoại (FOREIGN KEY) tham chiếu đến DocumentID trong bảng Documents.

- UserID là khóa ngoại (FOREIGN KEY) tham chiếu đến UserID trong bảng Users.

- Rate và ReviewText có thể là giá trị null.

9. Bảng LibraryCards

- CardID là khóa chính (PRIMARY KEY).

- UserID là khóa ngoại (FOREIGN KEY) tham chiếu đến UserID trong bảng Users.

- ExpirationDate có thể là giá trị null.

10. Bảng DocumentStatus

- StatusID là khóa chính (PRIMARY KEY).

- StatusName không thể là giá trị null (NOT NULL).

- Description có thể là giá trị null.

VII. Physical installation (Cài đặt vật lý)


*CREATE TABLE

DocumentStatus
Documents

Users
LibraryCards

Statistic
Reports

BookReviews
LoanHistory

Reservations
Loans

*Fill information in tables


*Các câu lệnh truy vấn dữ liệu

Lấy tất cả thông tin của các tài liệu có tên bắt đầu bằng 'The':
Đếm số lượng tài liệu theo từng thể loại:

Lấy 5 tài liệu có đánh giá cao nhất:

Lấy thông tin người dùng có email kết thúc bằng @example.com và có loại người dung là người quản lý
thư viện.
Đếm số lượt mượn sách theo tháng:

Lấy các tài liệu đang được cho mượn:

Lấy các tài liệu chưa có ai đánh giá:


Lấy thông tin đăng ký mượn sách của tháng 3 năm 2023:

Lấy 5 người dùng mượn nhiều sách nhất:

Lấy danh sách các tài liệu đã quá hạn trả:


Lấy top 3 thể loại tài liệu có nhiều đầu sách nhất:

Lấy các tài liệu có điểm đánh giá trung bình trên 4.5:

Lấy các tài liệu đã được đặt trước nhưng chưa sẵn sàng cho mượn:
Lấy top 5 người dùng có nhiều lượt đặt trước sách nhất:

Lấy tổng số lượt truy cập website hàng ngày trong tháng 10/2023:

Lấy tổng số lượt đăng ký thẻ thư viện còn hiệu lực:
Lấy 5 tài liệu có nhiều lượt đặt trước nhất:

Lấy thống kê số lượt mượn sách theo từng tháng trong năm 2022:

Lấy các báo cáo sự cố được tạo trong quý 1 năm 2023:
*Các trigger

Trigger để kiểm tra số lượng sách trong kho khi có sách được mượn:

Trigger để cập nhật trạng thái tài liệu khi có người mượn:

Trigger để kiểm tra ngày trả sách không được sớm hơn ngày mượn:
Trigger để tự động xóa đặt trước khi cho mượn sách:

Trigger để kiểm tra thẻ thư viện còn hạn khi mượn sách:

Trigger để tự động cập nhật thống kê số lượt mượn sách hàng ngày:
Trigger để kiểm tra số lượng đặt trước không vượt quá số lượng sách trong kho:

Trigger để ngăn chặn xóa dữ liệu đã có trong lịch sử mượn sách:

Trigger giới hạn giá trị rate từ 1.0 đến 5.0


View liệt kê thông tin của các đầu sách có số lượng tồn kho hiện tại lớn hơn 0
Tạo view danh sách các đầu sách đã quá hạn trả
Tạo view danh sách các tác giả có nhiều đầu sách nhất

Tạo hàm tính phí trễ dựa trên số ngày trễ


Tạo hàm kiểm tra xem một đầu sách có sẵn trong kho

Tạo quy trình truy xuất tài liệu có xếp hạng cao nhất

Tạo quy trình lấy danh sách tài liệu theo danh mục

You might also like