Bối cảnh và vấn đề nghiên cứu

Tại các cơ sở giáo dục đại học nói chung và Trường Đại học Công nghệ Đông Á nói riêng, thư viện đóng vai trò là trung tâm lưu trữ, cung cấp học liệu, giáo trình và tài liệu nghiên cứu phục vụ cán bộ, giảng viên và sinh viên. Cùng với sự gia tăng nhanh chóng về quy mô đào tạo và số lượng ấn phẩm, công tác quản lý thủ công hoặc sử dụng các hệ thống rời rạc bộc lộ nhiều bất cập trong việc kiểm soát thông tin độc giả, theo dõi quá trình mượn - trả, thống kê tài liệu và kiểm soát số lượng sách tồn.

Đề tài "Xây dựng cơ sở dữ liệu hệ thống quản lý thư viện" (Đề số 8 thuộc học phần Hệ quản trị cơ sở dữ liệu với Oracle) được nhóm sinh viên Khoa Công nghệ Thông tin, Trường Đại học Công nghệ Đông Á thực hiện vào năm 2023 nhằm giải quyết các yêu cầu thực tiễn trên.

Mục tiêu và nhiệm vụ nghiên cứu của đồ án bao gồm:

  1. Khảo sát và phân tích các yêu cầu nghiệp vụ quản lý thông tin trong thư viện đại học.
  2. Xác định các thực thể, thuộc tính và xây dựng mô hình thực thể liên kết (ERD) hoàn chỉnh.
  3. Chuyển đổi mô hình quan niệm sang mô hình dữ liệu quan hệ, thiết kế cấu trúc các bảng và thiết lập các ràng buộc toàn vẹn (khóa chính, khóa ngoại).
  4. Cài đặt cơ sở dữ liệu trên hệ quản trị Oracle Database bằng ngôn ngữ SQL (DDL, DML, DQL).
  5. Xây dựng các khối lệnh, hàm (Functions) và thủ tục lưu trữ (Stored Procedures) bằng ngôn ngữ PL/SQL nhằm tự động hóa các thao tác xử lý dữ liệu và thống kê nghiệp vụ.
  6. Nghiên cứu các chức năng quản trị cơ sở dữ liệu (quản trị người dùng, sao lưu, phục hồi) và định hướng phát triển ứng dụng giao diện.

Đối tượng nghiên cứu của đề tài là quy trình quản lý dữ liệu thư viện trường đại học (bao gồm sách, danh mục loại sách, tác giả, nhà xuất bản, hồ sơ độc giả, tài khoản hệ thống và lịch sử mượn trả). Phạm vi nghiên cứu giới hạn trong việc thiết kế mô hình dữ liệu và cài đặt kỹ thuật trên nền tảng Oracle Database tại Trường Đại học Công nghệ Đông Á, thực hiện trong khuôn khổ học phần học thuật năm 2023.


Cơ sở lý thuyết và phương pháp

Đồ án áp dụng lý thuyết cơ sở dữ liệu quan hệ (Relational Database) và các nguyên lý chuẩn hóa dữ liệu để xây dựng hệ thống. Nền tảng công nghệ chính được sử dụng là hệ quản trị cơ sở dữ liệu Oracle Database kết hợp với ngôn ngữ lập trình cấu trúc mở rộng PL/SQL (Procedural Language/Structured Query Language).

Các phương pháp và công cụ kỹ thuật được triển khai bao gồm:

  • Phương pháp phân tích và thiết kế hệ thống: Sử dụng mô hình thực thể liên kết (Entity-Relationship Diagram - ERD) để mô hình hóa các đối tượng dữ liệu. Nhóm tác giả phân loại rõ ràng các thực thể mạnh (Độc giả, Nhà xuất bản, Tác giả, Sách, Loại sách, Tài khoản) và thực thể yếu/bảng kết hợp (Phiếu mượn, Phiếu trả).
  • Phương pháp mô hình hóa quan hệ: Xác lập các mối quan hệ giữa các thực thể gồm liên kết một - nhiều ($1-N$), nhiều - nhiều ($N-N$) và một - một ($1-1$), sau đó khử mối quan hệ nhiều - nhiều bằng cách bổ sung thực thể liên kết trung gian.
  • Phương pháp cài đặt và lập trình cơ sở dữ liệu:
    • Ngôn ngữ định nghĩa dữ liệu (DDL) và thao tác dữ liệu (DML) chuẩn Oracle.
    • Ngôn ngữ truy vấn dữ liệu (DQL) từ các câu lệnh đơn giản, truy vấn lồng nhau (Subqueries), truy vấn gộp nhóm (Aggregation) đến truy vấn nâng cao phân trang (FETCH FIRST, ROWNUM, bảng ảo DUAL kết hợp mệnh đề CONNECT BY).
    • Lập trình thủ tục PL/SQL sử dụng cấu trúc điều kiện (IF-THEN-ELSE), cấu trúc vòng lặp (FOR, WHILE, LOOP), con trỏ tường minh (CURSOR), biến con trỏ kiểu bảng (SYS_REFCURSOR), và cơ chế xử lý ngoại lệ (EXCEPTION WHEN OTHERS).
  • Nguồn dữ liệu: Dữ liệu kiểm thử mẫu được khởi tạo trực tiếp trong hệ thống với các bản ghi mô phỏng độc giả, đầu sách, tài khoản, nhà xuất bản, tác giả và phiếu mượn/trả thực tế.

Thiết kế và triển khai

Hệ thống cơ sở dữ liệu quản lý thư viện được thiết kế gồm 8 bảng quan hệ, phản ánh đầy đủ các nghiệp vụ quản lý tài nguyên và hoạt động mượn trả sách.

Tên bảng Mã bảng Khóa chính (PK) Khóa ngoại (FK) Chức năng quản lý
Tài khoản id MaID Không có Quản lý thông tin đăng nhập, phân quyền truy cập (QuyenTC) và trạng thái tài khoản (TThaiTK).
Độc giả DGia MaDGia Không có Quản lý thông tin cá nhân độc giả: họ tên, ngày sinh, giới tính, địa chỉ, số điện thoại, trạng thái.
Loại sách LSach MaLSach Không có Phân loại thể loại sách (tiểu thuyết, khoa học, lịch sử...).
Nhà xuất bản NXB MaNXB Không có Quản lý danh mục các nhà xuất bản cung cấp ấn phẩm.
Tác giả TGia MaTGia Không có Quản lý danh sách tác giả sáng tác sách.
Sách Sach MaSach MaLSach, MaTGia, MaNXB Lưu trữ thông tin chi tiết từng đầu sách và số lượng tồn kho (SoLuong).
Mượn sách Muon MaMuon MaID, MaSach, MaDGia Quản lý phiếu mượn sách, ngày mượn, số lượng mượn và trạng thái mượn.
Trả sách Tra MaTra MaMuon Quản lý thông tin trả sách tương ứng với từng phiếu mượn và ngày trả thực tế.

Quy tắc liên kết và toàn vẹn tham chiếu được cài đặt như sau:

  • Quan hệ $1-N$ giữa NXB, LSach, TGia với Sach: Khóa chính của bảng danh mục (MaNXB, MaLSach, MaTGia) đóng vai trò là khóa ngoại trong bảng Sach.
  • Quan hệ $N-N$ giữa DGia và Sach: Được chuẩn hóa thông qua bảng trung gian Muon chứa các khóa ngoại tham chiếu đến DGia(MaDGia), Sach(MaSach) và id(MaID).
  • Quan hệ $1-1$ giữa Muon và Tra: Khóa chính MaMuon của bảng Muon được tham chiếu làm khóa ngoại trong bảng Tra.

Nội dung chính theo từng chương

Chương 1: Giới thiệu về đề tài

Chương 1 trình bày tổng quan về bài toán quản lý thư viện tại Đại học Công nghệ Đông Á, xác định rõ nhu cầu tin học hóa quy trình lưu trữ, tra cứu và kiểm soát mượn trả. Nội dung chương tập trung xác định các thực thể nghiệp vụ:

  • Phân định các thực thể mạnh bao gồm DGia, NXB, TGia, Sach, LSach, id và thực thể yếu Muon, Tra.
  • Liệt kê chi tiết các thuộc tính định danh và thuộc tính mô tả của từng thực thể (ví dụ: thực thể DGia gồm MaDGia, TenDGia, NgaySinhDGia, GTinh, DChiDGia, TTDGia, SDT; thực thể Sach gồm MaSach, TenSach, MaLSach, MaTGia, MaNXB, SoLuong).
  • Thiết lập các mối quan hệ liên kết dữ liệu giữa các thực thể và hoàn thiện sơ đồ mô hình thực thể liên kết (ERD).

Chương 2: Xây dựng cơ sở dữ liệu

Chương 2 mô tả chi tiết quá trình vật lý hóa cơ sở dữ liệu trên Oracle Database:

  • Thiết kế đặc tả kỹ thuật cho 8 bảng dữ liệu với các kiểu dữ liệu tương ứng trong Oracle (NVARCHAR2, DATE, NUMBER, NUMBER(1,0) đại diện cho kiểu logic).
  • Thiết lập các ràng buộc toàn vẹn dữ liệu: định nghĩa khóa chính (PRIMARY KEY), khóa ngoại (FOREIGN KEY ... REFERENCES) và ràng buộc không rỗng (NOT NULL).
  • Viết mã kịch bản SQL DDL để khởi tạo cấu trúc bảng và nạp tập dữ liệu thử nghiệm (DML INSERT INTO) vào các bảng id, DGia, LSach, NXB, TGia, Sach, Muon, Tra.

Chương 3: Thiết kế các truy vấn (SQL)

Chương này xây dựng hệ thống các câu lệnh truy vấn phục vụ vận hành và khai thác thông tin thư viện, chia làm 4 mức độ:

  • Truy vấn cơ bản: Thực hiện trích xuất dữ liệu đơn giản và kết nối bảng (INNER JOIN), ví dụ: hiển thị tên độc giả, tra cứu tiêu đề sách cùng tác giả, thống kê số lượng sách theo từng loại, tìm các sách có số lượng tồn kho dưới 10, hoặc tìm sách đang được mượn nhưng chưa trả (WHERE MaMuon NOT IN (SELECT MaMuon FROM Tra)).
  • Truy vấn lồng nhau: Ứng dụng các toán tử IN, NOT IN, các truy vấn con đơn dòng và đa dòng để lọc danh sách độc giả đang mượn sách, tìm sách có số lượng thấp hơn mức trung bình (SoLuong < (SELECT AVG(SoLuong) FROM Sach)), hoặc xác định đầu sách có lượt mượn cao nhất.
  • Truy vấn gộp nhóm: Sử dụng mệnh đề GROUP BY kết hợp các hàm tổng hợp SUM, AVG, COUNT và các hàm xử lý chuỗi/thời gian (TO_CHAR(NgayMuon, 'MM-YYYY'), TO_CHAR(NgayMuon, 'Day')) để thống kê số lượng sách theo nhà xuất bản, tác giả, thể loại và tần suất mượn sách theo từng mốc thời gian.
  • Truy vấn nâng cao và hàm trả về tập kết quả: Ứng dụng kỹ thuật đệ quy với bảng ảo DUAL và CONNECT BY để sinh lịch tháng kiểm tra số lượt mượn (kể cả các tháng không có phát sinh dữ liệu qua LEFT JOIN). Đồng thời, xây dựng 5 hàm PL/SQL trả về con trỏ hệ thống SYS_REFCURSOR để cung cấp dữ liệu thống kê động cho tầng ứng dụng (TinhTongSoSachTheoLoai, TinhTongSoSachTheoNXB, TinhTrungBinhSoLuongSachTheoLoai, TinhTongSoSachTheoTacGia, và hàm tính tổng số sách mượn của độc giả TinhTongSoSachMuon).

Chương 4: Lập trình PL/SQL

Chương 4 hiện thực hóa các giải thuật xử lý logic nghiệp vụ phía máy chủ cơ sở dữ liệu:

  • Cấu trúc điều khiển và vòng lặp: Sử dụng IF-THEN-ELSE để kiểm tra số lượng sách còn lại trong kho, xác thực sự tồn tại của độc giả; sử dụng vòng lặp FOR ... IN 1..10 để tự động hóa việc chèn hàng loạt bản ghi sách mẫu; sử dụng WHILE LOOP và CURSOR LOOP để duyệt qua danh sách độc giả và thể loại sách.
  • Thủ tục lưu trữ (Stored Procedures): Xây dựng các thủ tục thực thi nghiệp vụ hoàn chỉnh có bẫy lỗi:
    • Thủ tục ThemSach: Nhận đầy đủ tham số đầu vào (p_MaSach, p_TenSach, p_MaLSach, p_MaTGia, p_MaNXB, p_SoLuong), thực hiện câu lệnh INSERT, xác nhận giao dịch COMMIT, và xử lý ngoại lệ bằng khối EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(...).
    • Thủ tục PrintReaderInfo: Nhận mã độc giả p_MaDGia, truy vấn chi tiết hồ sơ cá nhân và xuất thông tin qua gói DBMS_OUTPUT.
    • Thủ tục DisplayBookInfo: Khai báo con trỏ duyệt toàn bộ bảng sách và xuất chi tiết các trường dữ liệu ra màn hình điều khiển.

Chương 5: Quản trị cơ sở dữ liệu Oracle

Chương 5 trình bày các nội dung cốt lõi về công tác quản trị hệ quản trị cơ sở dữ liệu Oracle:

  • Nghiệp vụ quản trị người dùng: Tạo tài khoản người dùng, phân quyền truy cập (GRANT), thu hồi quyền (REVOKE) và quản lý vai trò (Roles) tương ứng với các cấp bậc nhân viên và độc giả.
  • Nghiệp vụ an toàn dữ liệu: Thiết lập các phương án sao lưu (Backup) và phục hồi dữ liệu (Recovery) nhằm bảo vệ hệ thống trước sự cố mất mát dữ liệu hoặc lỗi phần cứng.

Chương 6: Phát triển ứng dụng Oracle với công cụ

Chương 6 đề cập đến định hướng phát triển ứng dụng phía người dùng cuối:

  • Giới thiệu công cụ hỗ trợ phát triển và kết nối cơ sở dữ liệu Oracle.
  • Thiết kế cấu trúc giao diện tương tác cho thủ thư và độc giả.
  • Thiết kế chương trình xử lý, kết nối các hàm và thủ tục PL/SQL từ cơ sở dữ liệu lên giao diện phần mềm.

Chương 7: Kết luận

Tổng kết lại toàn bộ kết quả đạt được của đề tài, đánh giá mức độ hoàn thành so với mục tiêu đề ra và nêu lên ý nghĩa thực tiễn của cơ sở dữ liệu quản lý thư viện.


Kết quả và đóng góp

Đồ án đã hoàn thành các nội dung kỹ thuật theo đúng mục tiêu đặt ra:

  • Xây dựng hoàn chỉnh lược đồ cơ sở dữ liệu quan hệ: Thiết kế thành công 8 bảng dữ liệu với đầy đủ các khóa chính, khóa ngoại và ràng buộc toàn vẹn tham chiếu, loại bỏ tình trạng dư thừa dữ liệu và đảm bảo tính nhất quán logic.
  • Hiện thực hóa bộ kịch bản SQL toàn diện: Xây dựng thành công hệ thống các câu lệnh truy vấn từ cơ bản đến phức tạp, bao gồm các phép kết nối nhiều bảng, truy vấn lồng nhau đa cấp, gom nhóm theo các chiều thông tin (thời gian, tác giả, nhà xuất bản, thể loại), và phân trang dữ liệu bằng FETCH FIRST ... ROWS ONLY.
  • Phát triển module xử lý PL/SQL mạnh mẽ: Viết thành công các hàm trả về con trỏ SYS_REFCURSOR, các thủ tục lưu trữ tự động hóa việc thêm sách mới (ThemSach), tra cứu thông tin bạn đọc (PrintReaderInfo), hiển thị danh mục sách (DisplayBookInfo), kết hợp khối xử lý ngoại lệ an toàn.
  • Đóng góp của đề tài: Cung cấp một mô hình cơ sở dữ liệu chuẩn hóa, có cấu trúc chặt chẽ và khả năng tương thích cao trên hệ quản trị Oracle Database, tạo nền tảng backend ổn định phục vụ việc xây dựng phần mềm quản lý thư viện hoàn chỉnh cho Trường Đại học Công nghệ Đông Á.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của đồ án:

  • Tập dữ liệu thử nghiệm trong hệ thống còn ở quy mô nhỏ, mang tính chất minh họa kịch bản.
  • Chưa tích hợp cơ chế tự động tính toán phí phạt trễ hạn hoặc quản lý chi tiết từng bản sao vật lý (mã vạch/mã cá biệt của từng cuốn sách) mà mới quản lý theo số lượng tổng (SoLuong).

Hướng phát triển tiếp theo được nhóm tác giả xác định trong văn bản:

  • Mở rộng cơ sở dữ liệu để đáp ứng các mô hình quy mô lớn hơn như hệ thống thư viện đa chi nhánh hoặc mạng lưới thư viện con liên kết.
  • Tích hợp các tính năng và dịch vụ mới: quản lý tài liệu số, ứng dụng kỹ thuật quản lý tri thức, phân tích xu hướng mượn sách của sinh viên.
  • Xây dựng hệ thống gợi ý sách tự động dựa trên lịch sử và sở thích của độc giả.
  • Phát triển cổng tương tác trực tuyến giữa thư viện và độc giả nhằm tối ưu hóa trải nghiệm tìm kiếm và tra cứu tài liệu học tập.

Giá trị tham khảo

Tài liệu đồ án là nguồn tham khảo hữu ích cho:

  • Sinh viên chuyên ngành Công nghệ thông tin, Hệ thống thông tin, Kỹ thuật phần mềm đang theo học các học phần liên quan đến Hệ quản trị cơ sở dữ liệu Oracle, Cơ sở dữ liệu nâng cao và Lập trình PL/SQL.
  • Người học cần tài liệu mẫu về quy trình chuyển đổi từ mô hình thực thể liên kết (ERD) sang lược đồ quan hệ và cài đặt mã nguồn DDL/DML chuẩn trên Oracle.
  • Lập trình viên cơ sở dữ liệu quan tâm đến cách xây dựng các hàm trả về tập bản ghi động thông qua SYS_REFCURSOR và các thủ tục lưu trữ có cấu trúc kiểm soát giao dịch (COMMIT) kết hợp bẫy lỗi (EXCEPTION).

Câu hỏi thường gặp

1. Cơ sở dữ liệu hệ thống quản lý thư viện này gồm những bảng nào và khóa chính của từng bảng là gì? Cơ sở dữ liệu gồm 8 bảng với các khóa chính tương ứng: bảng tài khoản id (MaID), bảng độc giả DGia (MaDGia), bảng loại sách LSach (MaLSach), bảng nhà xuất bản NXB (MaNXB), bảng tác giả TGia (MaTGia), bảng sách Sach (MaSach), bảng mượn sách Muon (MaMuon), và bảng trả sách Tra (MaTra).

2. Mối quan hệ nhiều - nhiều giữa Độc giả và Sách được giải quyết như thế nào trong thiết kế? Mối quan hệ nhiều - nhiều giữa DGia và Sach được chuẩn hóa bằng cách tạo bảng trung gian Muon (Phiếu mượn). Bảng Muon sử dụng khóa chính MaMuon và chứa hai khóa ngoại là MaDGia (tham chiếu đến bảng DGia) và MaSach (tham chiếu đến bảng Sach), đồng thời liên kết với tài khoản thực hiện qua khóa ngoại MaID.

3. Kiểu dữ liệu con trỏ nào được sử dụng trong các hàm PL/SQL nâng cao để trả về danh sách dữ liệu cho ứng dụng? Các hàm PL/SQL thống kê nâng cao (như TinhTongSoSachTheoLoai, TinhTongSoSachTheoNXB, TinhTrungBinhSoLuongSachTheoLoai, TinhTongSoSachTheoTacGia) sử dụng biến con trỏ kiểu SYS_REFCURSOR để mở và trả về tập kết quả truy vấn động.

4. Thủ tục ThemSach trong Chương 4 tiếp nhận các tham số đầu vào nào và xử lý an toàn dữ liệu ra sao? Thủ tục ThemSach tiếp nhận 6 tham số: p_MaSach, p_TenSach, p_MaLSach, p_MaTGia, p_MaNXB, p_SoLuong. Thủ tục thực hiện lệnh INSERT INTO Sach, xác nhận thay đổi bằng lệnh COMMIT, và bắt lỗi toàn cục thông qua khối EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Lỗi: ' || SQLERRM);.

5. Nhóm tác giả đề xuất những hướng mở rộng tính năng nào cho hệ thống thư viện trong tương lai? Nhóm tác giả đề xuất mở rộng hệ thống sang quản lý tài liệu số, ứng dụng kỹ thuật quản lý tri thức, phân tích xu hướng mượn sách, phát triển thuật toán gợi ý sách theo sở thích độc giả, xây dựng tính năng tương tác trực tuyến và hỗ trợ mở rộng quy mô đa chi nhánh.


Kết luận

Đồ án "Xây dựng cơ sở dữ liệu hệ thống quản lý thư viện" của nhóm sinh viên Trường Đại học Công nghệ Đông Á đã hoàn thành việc phân tích, thiết kế và cài đặt một hệ thống cơ sở dữ liệu hoàn chỉnh trên nền tảng Oracle Database. Hệ thống giải quyết tốt các yêu cầu lưu trữ và quản lý thông tin sách, bạn đọc, mượn trả thông qua cấu trúc bảng chuẩn hóa và các ràng buộc toàn vẹn chặt chẽ. Bên cạnh các truy vấn khai thác dữ liệu đa dạng, đồ án đã ứng dụng thành công ngôn ngữ PL/SQL vào việc xây dựng các hàm, thủ tục và con trỏ, tạo cơ sở kỹ thuật vững chắc để tích hợp với các ứng dụng phần mềm quản lý thư viện thực tế.