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

Bối cảnh thực tiễn và lý do chọn đề tài

Trong điều kiện khoa học – công nghệ phát triển nhanh chóng, nhu cầu mua sắm và thụ hưởng văn hóa đọc của người dân ngày càng gia tăng. Sự mở rộng về quy mô của các trung tâm thương mại, siêu thị và nhà sách lớn kéo theo sự gia tăng phức tạp trong công tác quản lý lượng khách hàng đông đảo, dữ liệu hàng hóa và quy trình vận hành nội bộ.

Trước khi áp dụng công nghệ thông tin vào quản lý, các cơ sở bán lẻ như nhà sách thường thực hiện việc ghi chép, lưu trữ dữ liệu hoàn toàn trên sổ sách hoặc giấy tờ thủ công. Phương pháp này bộc lộ nhiều nhược điểm nghiêm trọng:

  • Dữ liệu dễ bị thất lạc, rách hỏng hoặc sai sót trong quá trình ghi chép và tính toán doanh thu.
  • Hạn chế về không gian vật lý và số lượng nhân sự trực tiếp gây cản trở lớn trong việc kiểm soát hàng tồn kho và phục vụ khách hàng.
  • Thiếu công cụ hỗ trợ báo cáo, thống kê tức thời khiến các nhà quản lý gặp khó khăn trong việc nắm bắt doanh số và định hướng phát triển kinh doanh.

Nhằm giải quyết triệt để các bất cập trong quản trị dữ liệu truyền thống, nhóm tác giả đã lựa chọn thực hiện đề tài "Xây dựng hệ thống quản lý nhà sách Hải An" (một nhà sách quy mô lớn tại Thành phố Hồ Chí Minh) trong khuôn khổ đồ án môn học Hệ Quản trị Cơ sở Dữ liệu tại Trường Đại học Công nghệ Thông tin – ĐHQG-HCM.

Mục tiêu và nhiệm vụ nghiên cứu

Đồ án đặt ra mục tiêu xây dựng một hệ thống cơ sở dữ liệu quan hệ hoàn chỉnh, đáp ứng đầy đủ các nghiệp vụ quản lý bán hàng và vận hành của Nhà sách Hải An. Các nhiệm vụ cụ thể được xác định bao gồm:

  1. Cho phép thêm, xóa, sửa, làm mới và tìm kiếm dữ liệu trên toàn bộ các danh mục quản lý.
  2. Quản lý tài khoản người dùng, phân quyền truy cập theo chức vụ (Admin, Quản lý, Nhân viên) và thống kê hiệu suất bán hàng của từng nhân viên.
  3. Quản lý thông tin chi tiết về sách, nhân viên, khách hàng và hệ thống hóa đơn bán lẻ.
  4. Quản lý các phiếu nhập hàng, chi tiết phiếu nhập cùng thông tin nhà cung cấp sách.
  5. Hỗ trợ xuất và in ấn hóa đơn bán lẻ, phiếu nhập hàng trực tiếp từ hệ thống.
  6. Lưu trữ toàn bộ dữ liệu tập trung trên hệ quản trị cơ sở dữ liệu, đảm bảo khả năng truy xuất, sao lưu, phục hồi dữ liệu đồng bộ, nhanh chóng và an toàn.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Quy trình quản lý hoạt động kinh doanh nhà sách, bao gồm: quản lý danh mục sách, thể loại, nhà cung cấp, thông tin nhân sự, dữ liệu khách hàng thân thiết, giao dịch hóa đơn bán hàng và giao dịch nhập hàng vào kho.
  • Phạm vi không gian: Mô hình vận hành thực tế của Nhà sách Hải An tại Thành phố Hồ Chí Minh.
  • Phạm vi thời gian: Đồ án được nghiên cứu, thiết kế và hoàn thành vào tháng 5 năm 2023.

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

Khung lý thuyết và công nghệ sử dụng

Đồ án ứng dụng các nền tảng lý thuyết và công nghệ cốt lõi trong lĩnh vực Hệ thống Thông tin và Cơ sở Dữ liệu:

  • Mô hình Dữ liệu Quan hệ (Relational Data Model): Biểu diễn các thực thể, thuộc tính và mối quan hệ thực thể thông qua sơ đồ ERD (Entity-Relationship Diagram) và chuyển đổi thành mô hình quan hệ chuẩn hóa.
  • Lý thuyết Ràng buộc toàn vẹn (Integrity Constraints): Định nghĩa các quy tắc kiểm tra tính đúng đắn của dữ liệu trên một quan hệ và nhiều quan hệ (khóa chính, khóa ngoại, miền giá trị, liên thuộc tính, liên quan hệ và thuộc tính tổng hợp).
  • Hệ quản trị cơ sở dữ liệu Oracle & Ngôn ngữ PL/SQL: Sử dụng môi trường Oracle để cài đặt lược đồ cơ sở dữ liệu, viết các khối lệnh PL/SQL, xây dựng Triggers, Stored Procedures và Functions nhằm tự động hóa xử lý logic nghiệp vụ ở tầng cơ sở dữ liệu.
  • Lý thuyết Điều khiển Giao tác và Xử lý Đồng thời (Concurrency Control): Nghiên cứu các hiện tượng bất thường khi nhiều giao tác truy xuất đồng thời trên cùng một tài nguyên (Lost Update, Dirty Read, Non-repeatable Read, Phantom Read), áp dụng các phương thức khóa (Locking) và mức độ cô lập (Isolation Levels) trong Oracle để đảm bảo tính toàn vẹn ACID.

Phương pháp nghiên cứu thực tế

Nhóm tác giả đã kết hợp các phương pháp kỹ thuật hệ thống sau:

  • Phương pháp phân tích – tổng hợp yêu cầu: Khảo sát các quy trình nghiệp vụ điển hình của một hiệu sách hiện đại để xác định yêu cầu chức năng (CRUD, phân quyền, tính toán dẫn xuất) và yêu cầu phi chức năng (bảo mật, hiệu suất, độ tin cậy, giao diện trực quan).
  • Phương pháp mô hình hóa dữ liệu: Thiết kế sơ đồ ERD trực quan gồm 10 thực thể chính, ánh xạ sang lược đồ 10 bảng quan hệ, xác định chính xác kiểu dữ liệu, miền giá trị và giá trị mặc định cho từng thuộc tính.
  • Phương pháp thiết lập bảng tầm ảnh hưởng: Lập bảng phân tích thao tác Thêm (+), Xóa (-), Sửa (+) cho từng ràng buộc toàn vẹn để làm cơ sở xây dựng các Trigger kiểm soát dữ liệu.
  • Phương pháp kịch bản thực nghiệm: Xây dựng các kịch bản chạy thử nghiệm xử lý giao tác đồng thời nhằm đánh giá nguy cơ mất nhất quán dữ liệu và kiểm chứng giải pháp thiết lập khóa/mức cô lập.

Nguồn dữ liệu

Dữ liệu sử dụng trong đồ án là dữ liệu mô phỏng theo cấu trúc hoạt động thực tế của Nhà sách Hải An, bao gồm các bảng danh mục sản phẩm sách, thông tin nhân viên, nhà cung cấp, khách hàng và lịch sử giao dịch mua bán/nhập hàng.


Thiết kế và triển khai hệ thống

Kiến trúc cơ sở dữ liệu

Hệ thống cơ sở dữ liệu được chuẩn hóa thành 10 bảng quan hệ chính, thể hiện chi tiết cấu trúc thuộc tính và ràng buộc:

Tên Bảng (Quan hệ) Khóa chính (PK) Khóa ngoại (FK) Các thuộc tính khác Ý nghĩa nghiệp vụ
NHACUNGCAP MaNCC Không TenNCC, DiaChi, SDT Lưu trữ thông tin đối tác cung cấp sách
THELOAI MaTL Không TheLoai, GhiChu Danh mục phân loại thể loại sách
SACH MaSach MaTL, MaNCC TenSach, TenTG, NamXB, NXB, HinhThucBia, TomTat, SL, Gia, NgonNgu, HinhAnh Thông tin chi tiết các đầu sách đang kinh doanh
KHACHHANG MaKH Không Ho, Ten, NgaySinh, GioiTinh, SoDT, LoaiKH, DiemTichLuy Thông tin khách hàng và phân hạng tích lũy
NHANVIEN MaNV Không Ho, Ten, GioiTinh, DiaChi, CMND, NgaySinh, NgayBD, SoDT, Luong, HinhAnh Quản lý thông tin hồ sơ nhân viên
TAIKHOAN MaTK MaNV TenTK, MatKhau, LoaiTK Tài khoản đăng nhập và phân quyền hệ thống
HOADON MaHD MaNV, MaKH NgayHD, ThanhTien Quản lý thông tin tổng quát của hóa đơn bán lẻ
CTHD MaHD, MaSach MaHD, MaSach SL, Gia Chi tiết số lượng và giá từng cuốn sách bán ra
PHIEUNHAP MaPN MaNV NgayNhap, TongTien Quản lý thông tin tổng quát phiếu nhập kho
CTPN MaSach, MaPN MaSach, MaPN SL, Gia Chi tiết số lượng và giá nhập từng đầu sách

Hệ thống ràng buộc toàn vẹn và logic kiểm soát dữ liệu

Hệ thống thiết lập 24 ràng buộc toàn vẹn (RB1 đến RB24) bao gồm:

  1. Ràng buộc duy nhất & khóa chính (RB1 – RB9): Đảm bảo tính đơn nhất của các mã định danh (MaNCC, MaTL, MaSach, MaKH, MaNV, MaTK, MaHD, MaPN) và thuộc tính TenTK trong bảng TAIKHOAN.
  2. Ràng buộc liên thuộc tính trên một quan hệ (RB10 – RB11):
    • NHANVIEN: Ngày bắt đầu làm việc (NgayBD) phải lớn hơn ngày sinh (NgaySinh).
    • SACH: Giá bán (Gia) và số lượng tồn kho (SL) phải luôn $\ge 0$.
  3. Ràng buộc khóa ngoại (RB12 – RB18): Đảm bảo tính toàn vẹn tham chiếu giữa các thực thể phụ thuộc (SACH liên kết THELOAI và NHACUNGCAP; TAIKHOAN, HOADON, PHIEUNHAP liên kết NHANVIEN; HOADON liên kết KHACHHANG; CTHD, CTPN liên kết các bảng gốc).
  4. Ràng buộc liên thuộc tính liên quan hệ (RB19 – RB22):
    • Ngày bán hàng (NgayHD) và ngày nhập kho (NgayNhap) phải lớn hơn hoặc bằng ngày vào làm (NgayBD) của nhân viên thực hiện (RB19, RB20).
    • Ngày lập hóa đơn (NgayHD) phải lớn hơn hoặc bằng ngày sinh (NgaySinh) của khách hàng mua sách (RB21).
    • Giá nhập (Gia) trong CTPN phải luôn nhỏ hơn giá bán (Gia) của sách trong bảng SACH (RB22).
  5. Ràng buộc thuộc tính tổng hợp (RB23 – RB24):
    • Tổng tiền (TongTien) của PHIEUNHAP bằng tổng giá trị $(\sum \text{SL} \times \text{Gia})$ của các dòng CTPN tương ứng (RB23).
    • Điểm tích lũy (DiemTichLuy) của KHACHHANG bằng tổng giá trị thanh toán của tất cả các CTHD thuộc về khách hàng đó (RB24).

Cài đặt giao tác tự động bằng PL/SQL (Triggers và Procedures)

Hệ thống sử dụng các trigger để tự động hóa xử lý logic dữ liệu và bắt lỗi nghiệp vụ với mã lỗi người dùng tự định nghĩa (raise_application_error từ -20001 đến -20011):

  • Tự động sinh mã: Áp dụng cơ chế tăng tự động 1 đơn vị so với giá trị lớn nhất hiện tại khi thêm mới bản ghi ở tất cả các bảng chính.
  • Kiểm soát giá trị khởi tạo: Khi tạo mới một HOADON hoặc PHIEUNHAP, trường ThanhTien và TongTien bắt buộc phải khởi tạo bằng 0 (TRG22_ThanhTien_HOADON_in, TRG_TongTienNhapSach_PhieuNhap_in); khi tạo mới KHACHHANG, trường DiemTichLuy bắt buộc phải bằng 0 (TRG25_DiemTL_KHACHHANG_in). Hệ thống sẽ tự tính toán lại khi các chi tiết được chèn vào.
  • Tự động cập nhật tồn kho, thành tiền và phân loại khách hàng:
    • Trigger TRG_AUTO_SL_ThanhTien_DiemTL_LoaiKH_CTHD_up và TRG_AUTO_ThanhTien_DiemTL_CTHD_de_up trên bảng CTHD: Khi thêm/sửa/xóa dòng chi tiết hóa đơn, hệ thống tự động trừ/cộng số lượng tồn kho SACH.SL, cập nhật lại HOADON.ThanhTien, tính lại KHACHHANG.DiemTichLuy và tự động cập nhật phân hạng LoaiKH:
      • Điểm tích lũy $< 500.000$: Khách hàng hạng "Thường".
      • Điểm tích lũy từ $500.000$ đến dưới $2.000.000$: Khách hàng hạng "Thân Thiết".
      • Điểm tích lũy $\ge 2.000.000$: Khách hàng hạng "VIP".
    • Trigger TRG_AUTO_SL_TongTienNhapSach_CTPN_up và TRG_AUTO_SL_TongTienNhapSach_CTPN_de_up trên bảng CTPN: Tự động tăng/giảm tồn kho sách tương ứng với lượng nhập và cập nhật lại TongTien của phiếu nhập.
    • Trigger TRG_AUTO_checkGIA_ThanhTien_DIEMTL_LOAIKH_SACH_upGIA trên bảng SACH: Kiểm tra giá bán mới không được thấp hơn giá nhập cũ, đồng thời tính toán cập nhật lại thành tiền các hóa đơn cũ và điểm tích lũy của khách hàng liên quan.
  • Stored Procedure: Xây dựng thủ tục lưu trữ mẫu sp_ThemCTPN tiếp nhận các tham số đầu vào (v_MaPN_in, v_MaSach_in, v_SL_in, v_Gia_in), thực hiện đồng thời việc chèn dữ liệu vào bảng CTPN, cập nhật tăng tồn kho SACH.SL, cộng dồn PHIEUNHAP.TongTien và thực thi lệnh COMMIT giao tác hoàn chỉnh.

Thiết kế giao diện và báo cáo

Đồ án thiết kế hệ thống giao diện chức năng và biểu mẫu báo cáo, bao gồm:

  • Màn hình Đăng nhập (phân quyền tài khoản) và Màn hình Trang chủ.
  • Giao diện quản lý nghiệp vụ: Quản lý Nhân viên, Khách hàng, Sách, Thể loại, Nhà cung cấp, Tài khoản.
  • Giao diện quản lý giao dịch: Quản lý Hóa đơn & Chi tiết Hóa đơn; Quản lý Phiếu nhập & Chi tiết Phiếu nhập.
  • Giao diện thống kê báo cáo và Report in biểu mẫu hóa đơn bán hàng.

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

Phần I: Phát biểu bài toán

  • Trình bày tổng quan bối cảnh chuyển đổi phương thức quản lý tại Nhà sách Hải An từ ghi chép thủ công sang cơ sở dữ liệu số hóa.
  • Phân tích chi tiết yêu cầu người dùng, đặc tả hệ thống yêu cầu chức năng (quản lý 10 danh mục nghiệp vụ chính, tính toán tự động, báo cáo) và yêu cầu phi chức năng (bảo mật dữ liệu, độ ổn định, khả năng tương thích và hiệu suất xử lý).
  • Xây dựng mô hình thực thể mối kết hợp (ERD), chuyển đổi thành mô hình quan hệ gồm 10 bảng dữ liệu.
  • Thiết lập bảng thuyết minh chi tiết cho toàn bộ thuộc tính, định nghĩa kiểu dữ liệu (Number, Varchar2, Date), độ dài, giá trị mặc định và thiết lập 24 ràng buộc toàn vẹn đi kèm bảng tầm ảnh hưởng chi tiết.

Phần II: Xây dựng và quản lý giao tác

  • Thiết lập hệ thống quy tắc giao tác tự động: cơ chế tăng khóa chính tự động, cơ chế cập nhật tự động thuộc tính dẫn xuất (ThanhTien, TongTien, DiemTichLuy, LoaiKH, SL tồn kho).
  • Hiện thực hóa 15 mã lệnh Trigger viết bằng PL/SQL (kiểm tra tính hợp lệ của mốc thời gian, kiểm soát logic giá nhập - giá bán, tự động cập nhật số liệu đa bảng khi có sự kiện Insert, Update, Delete).
  • Xây dựng các Stored Procedure và Function phục vụ đóng gói quy trình xử lý dữ liệu phức tạp (như thủ tục thêm mới chi tiết phiếu nhập sp_ThemCTPN).

Phần III: Xử lý đồng thời

  • Khái quát cơ chế quản lý giao tác trong hệ quản trị cơ sở dữ liệu Oracle.
  • Phân tích 4 vấn đề kinh điển trong môi trường truy xuất đồng thời nhiều người dùng: Hiện tượng mất dữ liệu cập nhật (Lost Update), Hiện tượng đọc dữ liệu rác (Dirty Read), Hiện tượng đọc không lặp lại (Non-repeatable Read) và Hiện tượng bóng ma (Phantom Read).
  • Trình bày các phương thức khóa cơ bản, cơ chế khóa dòng/khóa bảng và các mức độ cô lập giao tác (Read Committed, Serializable) được Oracle hỗ trợ.
  • Xây dựng các kịch bản mô phỏng cụ thể gây mất nhất quán dữ liệu trong nghiệp vụ nhà sách và đề xuất giải pháp kỹ thuật xử lý triệt để.

Phần IV: Thiết kế giao diện và Report

  • Mô tả chi tiết cấu trúc, luồng hoạt động và thiết kế bố cục của các màn hình chức năng: Đăng nhập, Trang chủ, Quản lý tài khoản, Hóa đơn, Chi tiết hóa đơn, Sách, Quản lý nhân viên, Khách hàng, Phiếu nhập, Chi tiết phiếu nhập, Nhà cung cấp và Trang thống kê.
  • Thiết kế mẫu Report xuất hóa đơn bán lẻ trực tiếp phục vụ in ấn cho khách hàng.

Phần V: Môi trường phát triển, Môi trường triển khai, Kết quả đạt được và Hướng phát triển

  • Thống kê phân công nhiệm vụ chi tiết của 3 thành viên trong nhóm nghiên cứu.
  • Đặc tả môi trường phát triển công cụ và môi trường triển khai ứng dụng cơ sở dữ liệu.
  • Đánh giá tổng kết các kết quả đạt được về mặt tính năng và dữ liệu; chỉ ra các hạn chế tồn tại và đề xuất định hướng phát triển hoàn thiện hệ thống trong tương lai.

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

Kết quả kỹ thuật đạt được

  • Xây dựng thành công cơ sở dữ liệu quan hệ chuẩn hóa gồm 10 bảng, đáp ứng đầy đủ chu trình vận hành của một nhà sách từ khâu nhập hàng, quản lý kho, quản trị nhân sự, chăm sóc khách hàng đến bán hàng xuất hóa đơn.
  • Cài đặt và thực thi chính xác 24 ràng buộc toàn vẹn, kết hợp cùng 15 Trigger PL/SQL xử lý logic tự động ở mức cơ sở dữ liệu, đảm bảo dữ liệu luôn nhất quán, không xảy ra sai lệch về doanh thu, điểm tích lũy và số lượng tồn kho.
  • Kiểm soát phân loại khách hàng tự động chính xác theo 3 mốc tích lũy ($<500.000$ VNĐ, $\ge 500.000$ VNĐ, $\ge 2.000.000$ VNĐ).
  • Đóng gói thành công các thủ tục lưu trữ (Stored Procedure) phục vụ nhập liệu đồng bộ và xây dựng giải pháp kiểm soát xung đột giao tác đồng thời trên Oracle.

Đóng góp thực tiễn và học thuật

  • Cung cấp mô hình phân tích - thiết kế cơ sở dữ liệu chuẩn mực cho nghiệp vụ bán lẻ và quản lý hiệu sách, có thể áp dụng trực tiếp cho các doanh nghiệp thương mại quy mô vừa và nhỏ.
  • Chứng minh tính hiệu quả của việc đưa toàn bộ logic kiểm tra ràng buộc và tính toán dữ liệu tổng hợp về tầng Database Engine (Oracle) thay vì phụ thuộc hoàn toàn vào tầng ứng dụng (Application Layer), giúp tăng cường tính toàn vẹn và bảo mật dữ liệu.

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

Hạn chế

  • Hệ thống tập trung chủ yếu vào thiết kế lược đồ quan hệ, xử lý nghiệp vụ tầng cơ sở dữ liệu (PL/SQL) và kiểm soát giao tác trong phạm vi môn học; các kịch bản thử nghiệm tải lớn và phân tán dữ liệu chuyên sâu chưa được triển khai đầy đủ.
  • Quy trình tích lũy điểm và khuyến mãi mới dừng lại ở các mức phân hạng cơ bản (Thường, Thân Thiết, VIP), chưa tích hợp các cơ chế giảm giá động theo sự kiện hoặc mã voucher.

Hạn chế và hướng phát triển (theo văn bản)

  • Mở rộng thêm các module nghiệp vụ nâng cao như quản lý đổi trả sách, quản lý chương trình khuyến mãi linh hoạt và thanh toán trực tuyến qua cổng điện tử.
  • Tối ưu hóa hiệu năng câu truy vấn và lập chỉ mục (Indexing) cho các bảng giao dịch có dung lượng dữ liệu tăng trưởng nhanh như CTHD và CTPN.
  • Triển khai hoàn thiện ứng dụng trên môi trường thực tế với quy mô người dùng đồng thời lớn hơn.

Giá trị tham khảo

  • Đối tượng thụ hưởng: Tài liệu đặc biệt hữu ích cho sinh viên các ngành Hệ thống Thông tin, Kỹ thuật Phần mềm, Công nghệ Thông tin đang thực hiện đồ án môn học Cơ sở Dữ liệu, Hệ Quản trị Cơ sở Dữ liệu, hoặc các khóa luận tốt nghiệp về xây dựng hệ thống thông tin quản lý bán hàng.
  • Nội dung giá trị nhất để tham khảo:
    • Bảng đặc tả 24 ràng buộc toàn vẹn kèm bảng tầm ảnh hưởng (Thêm, Xóa, Sửa) mẫu mực, đúng chuẩn phương pháp luận thiết kế hệ quản trị CSDL.
    • Bộ mã nguồn Trigger PL/SQL hoàn chỉnh trên Oracle xử lý các bài toán tự động tính toán tổng tiền, cập nhật tồn kho và phân hạng khách hàng.
    • Tài liệu phân tích và kịch bản xử lý 4 hiện tượng tranh chấp dữ liệu khi truy xuất đồng thời trên Oracle RDBMS.

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

1. Hệ thống phân hạng khách hàng dựa trên tiêu chí nào và các mốc điểm tích lũy cụ thể là bao nhiêu?

Hệ thống tự động phân hạng khách hàng dựa trên tổng điểm tích lũy (DiemTichLuy), vốn được tính bằng tổng giá trị mua hàng từ các chi tiết hóa đơn (CTHD.SL * SACH.Gia). Các mốc phân loại được thiết lập tự động qua Trigger như sau:

  • Điểm tích lũy dưới $500.000$: Khách hàng hạng "Thường".
  • Điểm tích lũy từ $500.000$ đến dưới $2.000.000$: Khách hàng hạng "Thân Thiết".
  • Điểm tích lũy từ $2.000.000$ trở lên: Khách hàng hạng "VIP".

2. Ràng buộc toàn vẹn giữa giá nhập sách trong chi tiết phiếu nhập và giá bán của sách được kiểm soát như thế nào?

Ràng buộc RB22 quy định giá nhập (CTPN.Gia) phải luôn nhỏ hơn giá bán của sách (SACH.Gia). Quy tắc này được hiện thực hóa bằng 2 Trigger PL/SQL:

  • Trigger TRG23_GIANHAP_GIABAN_CTPN (trên bảng CTPN): Báo lỗi mã -20009 ('Gia Nhap khong phu hop') nếu người dùng nhập CTPN.Gia > SACH.Gia.
  • Trigger TRG_AUTO_checkGIA_ThanhTien_DIEMTL_LOAIKH_SACH_upGIA (trên bảng SACH): Báo lỗi mã -20010 ('Gia ban khong phu hop') nếu cập nhật giá bán sách mới nhỏ hơn giá đã nhập trong CTPN.

3. Các quy định kiểm tra tính hợp lệ về mốc thời gian (ngày làm việc, ngày hóa đơn, ngày sinh) được xử lý bằng các Trigger nào?

Hệ thống sử dụng các Trigger để chặn các mâu thuẫn thời gian logic:

  • TRG19_NGBD_NGHD_NHANVIEN_up và TRG19_NGBD_NGHD_HOADON_in_up: Kiểm tra ngày lập hóa đơn (NgayHD) không được nhỏ hơn ngày nhân viên vào làm (NgayBD), báo lỗi -20001 hoặc -20002.
  • TRG20_NGBD_NGNHAP_NHANVIEN_up và TRG20_NGBD_NGNHAP_PHIEUNHAP_in_up: Kiểm tra ngày nhập hàng (NgayNhap) không được nhỏ hơn ngày vào làm (NgayBD), báo lỗi -20003 hoặc -20004.
  • TRG21_NGSINHKH_NGHD_KHACHHANG_up và TRG21_NGSINHKH_NGHD_HOADON_in_up: Kiểm tra ngày mua hàng (NgayHD) phải lớn hơn hoặc bằng ngày sinh (NgaySinh) của khách hàng, báo lỗi -20005 hoặc -20006.

4. Thủ tục sp_ThemCTPN thực hiện những tác vụ đồng bộ nào trong một giao tác?

Thủ tục sp_ThemCTPN tiếp nhận các tham số v_MaPN_in, v_MaSach_in, v_SL_in, v_Gia_in và thực thi đồng bộ 4 bước:

  1. Truy vấn số lượng tồn hiện tại của sách từ bảng SACH và tổng tiền hiện tại của phiếu nhập từ bảng PHIEUNHAP.
  2. Chèn dòng mới vào bảng chi tiết phiếu nhập CTPN.
  3. Cập nhật tăng tổng tiền phiếu nhập: PHIEUNHAP.TongTien = TongTien + (v_SL_in * v_Gia_in).
  4. Cập nhật tăng số lượng sách trong kho: SACH.SL = SL + v_SL_in, sau đó thực hiện lệnh COMMIT xác nhận giao tác.

5. Đồ án giải quyết các vấn đề truy xuất đồng thời nào trong môi trường cơ sở dữ liệu Oracle?

Đồ án phân tích và giải quyết 4 hiện tượng xung đột dữ liệu kinh điển khi nhiều người dùng cùng truy cập:

  • Mất dữ liệu cập nhật (Lost Update).
  • Đọc dữ liệu chưa được xác nhận (Dirty Read).
  • Đọc không lặp lại dữ liệu giữa các lần truy vấn trong cùng giao tác (Non-repeatable Read).
  • Xuất hiện dữ liệu bóng ma khi có giao tác khác chèn bản ghi mới (Phantom Read). Các hiện tượng này được xử lý thông qua việc cấu hình mức độ cô lập giao tác (Read Committed, Serializable) và áp dụng cơ chế khóa (Locking) phù hợp trên Oracle.

Kết luận

Đồ án "Xây dựng hệ thống quản lý nhà sách Hải An" là một công trình nghiên cứu và ứng dụng cơ sở dữ liệu quan hệ hoàn chỉnh, giải quyết trọn vẹn bài toán chuyển đổi số quy trình quản lý bán lẻ sách. Bằng việc chuẩn hóa 10 bảng dữ liệu, thiết lập 24 ràng buộc toàn vẹn và lập trình hệ thống Trigger/Procedure chuyên sâu trên môi trường Oracle PL/SQL, nhóm tác giả đã đảm bảo tối đa tính nhất quán, bảo mật và khả năng kiểm soát giao tác đồng thời. Báo cáo đồ án có giá trị học thuật cao, cung cấp tài liệu tham khảo thực tế rõ ràng, chuẩn mực cho sinh viên và các nhà phát triển hệ thống thông tin quản lý.