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

Đề tài "Xây dựng hệ thống CSDL quản lý đơn hàng tiệm bánh bằng Oracle" được thực hiện trong khuôn khổ học phần Các hệ quản trị cơ sở dữ liệu tại Khoa Công nghệ Thông tin, Trường Đại học Ngoại ngữ - Tin học Thành phố Hồ Chí Minh (tháng 3 năm 2024). Nghiên cứu do nhóm sinh viên Hoàng Anh Khoa, Nguyễn Trần Kim Ngân và Trương Thị Diễm Quỳnh thực hiện dưới sự hướng dẫn của giảng viên Nguyễn Thanh Trung.

Về bối cảnh thực tiễn, doanh nghiệp khảo sát là tiệm bánh QKN – đơn vị chuyên kinh doanh bánh ngọt và đồ uống. Doanh nghiệp khởi đầu với một cửa hàng tại quận Phú Nhuận (TP. Hồ Chí Minh), sau 5 năm phát triển đã mở thêm hai chi nhánh tại quận 3 và quận 10, nâng tổng quy mô lên 3 chi nhánh ở các khu vực trung tâm. Danh mục sản phẩm bao gồm bánh ngọt truyền thống (bánh bông lan, bánh mì ngọt, su kem, bánh bò thốt nốt), bánh ngọt hiện đại (tiramisu, mousse, tart trứng, croissant), bánh kem trang trí theo yêu cầu cùng các loại thức uống.

Vấn đề kỹ thuật nảy sinh từ sự tăng trưởng quy mô: khi mở thêm hai chi nhánh, khối lượng dữ liệu phát sinh tăng gấp ba lần so với ban đầu. Hệ thống cũ vận hành trên Microsoft Excel bộc lộ các giới hạn nghiêm trọng:

  1. Dung lượng lưu trữ bảng tính bị giới hạn (khoảng 1 triệu ô); khi doanh nghiệp phát sinh thêm 100.000 khách hàng, dung lượng lưu trữ cần thiết tăng gấp 10 lần khiến tệp bảng tính quá tải và xử lý chậm chạp.
  2. Excel thiếu khả năng lưu trữ dữ liệu theo cấu trúc phân cấp, gây khó khăn cho việc quản lý thông tin đa phòng ban và liên kết các chi nhánh.
  3. Việc truy xuất dữ liệu đòi hỏi các hàm tính toán phức tạp, thao tác thủ công, thiếu cơ chế tích hợp dữ liệu từ nhiều nguồn khác nhau, đồng thời tiềm ẩn rủi ro xung đột dữ liệu và mất tính toàn vẹn khi nhiều bộ phận cùng cập nhật.

Mục tiêu nghiên cứu của đề tài gồm 3 mục tiêu cụ thể:

  1. Lưu trữ và quản lý dữ liệu hiệu quả: Ứng dụng hệ quản trị Oracle để lưu trữ an toàn, tiết kiệm chi phí và đảm bảo tính bảo mật.
  2. Tăng cường khả năng truy xuất dữ liệu: Cung cấp công cụ truy vấn nhanh chóng, phục vụ công tác ra quyết định kinh doanh.
  3. Nâng cao hiệu quả quản lý: Hỗ trợ tự động hóa các khâu tiếp nhận, xử lý đơn hàng, điều phối sản xuất, quản lý tồn kho và tổng hợp doanh thu.

Đối tượng nghiên cứu là quy trình quản lý đơn hàng và chu chuyển dữ liệu giữa các bộ phận (kinh doanh, sản xuất, kho, kế toán). Phạm vi nghiên cứu giới hạn trong không gian vận hành của tiệm bánh QKN và 3 chi nhánh tại TP. Hồ Chí Minh; phạm vi kỹ thuật tập trung vào thiết kế, cài đặt cơ sở dữ liệu quan hệ, lập trình thủ tục, kích hoạt trigger, phân quyền và kiểm soát giao tác trên hệ quản trị cơ sở dữ liệu Oracle.

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

Nghiên cứu vận dụng các thành phần lý thuyết và công nghệ của hệ quản trị cơ sở dữ liệu quan hệ Oracle Database Server:

  • Kiến trúc Oracle Database Server: Mô hình kết hợp giữa Database Instance (quản lý bộ nhớ và tiến trình) và Database (cấu trúc lưu trữ vật lý). Hệ thống tiếp cận kiến trúc Multitenant container database (CDB) chứa các Pluggable Database (PDB); phân biệt giữa cấu hình đơn bộ (Single Instance) và cấu hình cụm đa máy chủ (Oracle RAC - Real Application Clusters), cùng cơ chế tiếp nhận kết nối qua tiến trình Oracle Listener.
  • Cấu trúc bộ nhớ và tiến trình: Vùng nhớ chia sẻ toàn cục System Global Area (SGA) gồm Shared Pool, Database Buffer Cache, Redo Log Buffer, Large Pool, In-Memory Area, Memoptimize Pool, Java Pool, Streams Pool, cùng các vùng nhớ riêng Program Global Area (PGA) kết hợp hệ thống tiến trình nền (background processes) và tiến trình máy chủ (server processes).
  • Ngôn ngữ PL/SQL: Phần mở rộng thủ tục cho SQL, cho phép đóng gói logic nghiệp vụ vào Stored Procedure, Function và Trigger; tối ưu hóa hiệu năng xử lý hàng loạt thông qua cú pháp FORALL và quản trị giao dịch tập trung.
  • Quản trị người dùng và tài nguyên: Phân định User, Schema và Profile (thiết lập giới hạn số kết nối đồng thời, thời gian chờ, thời lượng CPU, bộ nhớ và chính sách mật khẩu).
  • An toàn, sao lưu và phục hồi dữ liệu: Khái niệm Point-in-Time Recovery (PITR), chế độ ghi nhật ký Archivelog Mode, công cụ Recovery Manager (RMAN), cơ chế Rollback Segments, Undo Tablespace và công nghệ Flashback (Flashback Query, Flashback Transaction, Flashback Table, Flashback Database).
  • Kiểm soát đồng thời (Concurrency Control): Cơ chế khóa (Locking Mechanisms gồm Exclusive Locks và Share Locks), kiến trúc kiểm soát đồng thời đa phiên bản (Multiversion Concurrency Control - MVCC), tính nhất quán đọc (Read Consistency), cơ chế phát hiện và giải quyết Deadlock, cùng các mức cô lập giao tác (Read Committed, Serializable).

Phương pháp nghiên cứu thực hiện qua các bước:

  1. Thu thập dữ liệu và khảo sát hiện trạng cơ cấu tổ chức tiệm bánh QKN.
  2. Phân tích chức năng và luồng dữ liệu bằng sơ đồ phân cấp chức năng (BFD) và sơ đồ luồng dữ liệu (DFD).
  3. Mô hình hóa dữ liệu quan niệm qua sơ đồ thực thể kết hợp (ERD).
  4. Chuẩn hóa sang mô hình quan hệ, xây dựng từ điển dữ liệu chi tiết cho 8 thực thể.
  5. Cài đặt thực nghiệm trên hệ quản trị Oracle: soạn thảo kịch bản SQL tạo bảng, viết các Stored Procedure, Trigger, kịch bản Transaction và phân quyền người dùng.

Thiết kế và triển khai

Hệ thống được tổ chức trên không gian lưu trữ (Tablespace) mặc định là users. Cấu trúc tệp kịch bản triển khai được phân định rõ ràng thành các mô-đun: Phân quyền.sql, Database và bảng.sql (tạo user sở hữu QLDONHANG và cấu trúc bảng), Master.sql (dữ liệu danh mục), Transaction.sql (dữ liệu giao dịch nghiệp vụ), Procedure trigger.sql và Transaction1.sql (kiểm thử giao tác).

Lược đồ dữ liệu bao gồm 8 bảng nghiệp vụ chính và 1 bảng nhật ký hệ thống:

Tên bảng Khóa chính Khóa ngoại Mục đích lưu trữ nghiệp vụ
BANH MaBanh MaNCC Lưu trữ danh mục các loại bánh, số lượng tồn kho, đơn giá
NHACUNGCAP MaNCC Không Quản lý thông tin các đối tác cung ứng nguyên vật liệu
NHANVIEN MaNV Không Quản lý nhân sự, ngày sinh, địa chỉ, chức vụ
KHACHHANG MaKH Không Quản lý mã khách hàng, họ tên, địa chỉ, số điện thoại
DONHANG MaDH MaKH, MaNV Quản lý thông tin đơn hàng, ngày đặt, tổng giá trị, trạng thái
CTDONHANG MaDH, MaBanh MaDH, MaBanh Chi tiết từng mặt hàng trong đơn, số lượng, thành tiền
HOADON MaHD MaDH Chứng từ hóa đơn tài chính, ngày lập, trạng thái thanh toán
PHGIAOHANG MaPH MaDH Quản lý thông tin điều phối giao nhận hàng đến người mua
LOG MaNK (Identity) Không Bảng ghi vết lịch sử sửa đổi (Audit Trail) của đơn hàng

Để hiện thực hóa các quy định nghiệp vụ và bảo vệ dữ liệu, hệ thống cài đặt các khối mã PL/SQL:

  • Thủ tục thao tác dữ liệu (CRUD): Các thủ tục Select_banh, Them_banh_moi, Update_banh, Delete_banh cho phép quản lý thông tin sản phẩm chuẩn hóa kèm xử lý ngoại lệ WHEN NO_DATA_FOUND và WHEN OTHERS.
  • Thủ tục tính toán và con trỏ: Thủ tục update_thanhtien_ctdonhang sử dụng vòng lặp duyệt bảng bánh để cập nhật trường ThanhTien = SoLuong * DonGia trong CTDONHANG. Thủ tục update_tongtien_ddh tính tổng thành tiền từ các chi tiết đơn để gán vào trường TongGiaTri của DONHANG. Thủ tục TongDonHang_TrongNgay khai báo con trỏ tường minh CURSOR c_DonHang để đếm số lượng đơn hàng theo ngày; thủ tục tong_don tính tổng doanh thu của các đơn hàng có trạng thái "da xac nhan" trong ngày chỉ định.
  • Ràng buộc nghiệp vụ bằng Trigger:
    • Trigger trg_prevent_updates: Kích hoạt trước khi INSERT hoặc UPDATE trên bảng BANH, kiểm tra biến thời gian TO_NUMBER(TO_CHAR(SYSTIMESTAMP, 'HH24')). Nếu thời gian <= 8 hoặc > 20, hệ thống ngắt thao tác và báo lỗi ứng dụng -20001 ("không insert hay cập nhật ngoài giờ").
    • Trigger trg_banh_inup và trg_tenbanh_inup: Bắt sự kiện trước khi INSERT trên bảng BANH, đếm sự tồn tại của mabanh hoặc tenbanh, nếu đã có sẽ kích hoạt lỗi -20010.
    • Trigger trg_log_changes: Kích hoạt sau sự kiện INSERT, UPDATE hoặc DELETE trên bảng DONHANG, tự động ghi lại bản ghi nhật ký gồm tên bảng, khóa đơn hàng, loại thao tác, định danh người dùng (USER) và thời gian thực hiện (SYSDATE) vào bảng LOG.
  • Kiểm soát giao tác và tranh chấp đồng thời: Xử lý tình huống mất dữ liệu cập nhật (Lost Update) khi hai nhân viên A và B cùng truy cập một mã sản phẩm (ví dụ bánh B07 hoặc B10) và thực hiện bán đồng thời. Nhóm nghiên cứu thiết kế kịch bản khóa bảng độc quyền:
DECLARE
  soluong_capnhat NUMBER(10);
BEGIN
  SET TRANSACTION NAME 'capnhat_soluong';
  LOCK TABLE banh IN EXCLUSIVE MODE;
  UPDATE banh SET soluong = soluong - 5 WHERE mabanh = 'B07';
  SELECT soluong INTO soluong_capnhat FROM banh WHERE mabanh = 'B07';
  UPDATE banh SET soluong = soluong - 7 WHERE mabanh = 'B07';
  COMMIT;
END;

Ngoài ra, bài toán Lost Update được kiểm chứng qua hai phiên giao dịch độc lập gán tên T1, áp dụng lệnh DBMS_SESSION.SLEEP(10) để chứng minh xung đột khi hai phiên cùng đọc giá trị số lượng ban đầu (66) và ghi đè kết quả sai lệch nếu không khóa dữ liệu.

  • Phân quyền và bảo mật tài khoản: Hệ thống thiết lập 4 tài khoản người dùng tương ứng với các vai trò nghiệp vụ, mỗi tài khoản được cấp hạn ngạch lưu trữ QUOTA 10M ON USERS:
Tên User Mật khẩu Phạm vi quyền hạn được cấp phát
KH_PQ 1 Quyền SELECT trên các bảng DONHANG, CTDONHANG
NV_QLDH 2 Quyền INSERT, UPDATE, DELETE, SELECT trên DONHANG, CTDONHANG, HOADON
NV_QLNCC 3 Quyền INSERT, UPDATE, DELETE, SELECT trên bảng NHACUNGCAP
NV_QLC 4 Quyền toàn phần (INSERT, UPDATE, DELETE, SELECT) trên toàn bộ 8 bảng hệ thống

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

Chương 1: Khảo sát hiện trạng và xác định yêu cầu

Chương này trình bày lịch sử hình thành tiệm bánh QKN từ một cơ sở ban đầu tại quận Phú Nhuận đến mạng lưới 3 chi nhánh trung tâm TP. Hồ Chí Minh. Tác giả mô tả chi tiết cơ cấu tổ chức gồm Ban quản lý chung và 5 phòng ban: Kinh doanh, Sản xuất, Kế toán, Kho và Nhân sự. Về mặt vận hành, chu trình kinh doanh được xác định là hạt nhân quyết định, trải qua 4 bước: tiếp nhận đơn hàng, xử lý đơn hàng, chuẩn bị sản phẩm và giao hàng. Khi lượng dữ liệu tăng gấp 3 sau khi mở rộng chi nhánh, hệ thống bảng tính Excel bộc lộ sự quá tải do giới hạn 1 triệu ô, mất hiệu năng nghiêm trọng khi quản lý 100.000 khách hàng, thiếu cấu trúc phân cấp và không có khả năng tích hợp dữ liệu từ các nguồn độc lập. Tác giả đề xuất xây dựng hệ thống mới trên nền tảng Oracle nhằm giải quyết 4 nhóm bài toán nghiệp vụ: quản lý sản phẩm, quản lý bán hàng, quản lý khách hàng và lập báo cáo thống kê doanh thu theo ngày; xử lý chứng từ đơn bán hàng và báo cáo thu chi, đồng thời nhận diện các rủi ro về hiệu năng, an toàn thông tin và xung đột truy xuất đồng thời.

Chương 2: Cơ sở lý thuyết

Nội dung chương 2 hệ thống hóa nền tảng kỹ thuật của hệ quản trị Oracle Database Server. Trọng tâm bao gồm:

  1. Kiến trúc Database Server, Database Instance, Multitenant Container Database (CDB) và Pluggable Database (PDB), kiến trúc phân tán Oracle RAC và tiến trình lắng nghe Listener.
  2. Cấu trúc bộ nhớ SGA (phân tích vai trò của Shared Pool, Database Buffer Cache, Redo Log Buffer, Large Pool, In-Memory Area, Memoptimize Pool, Streams Pool, Java Pool) và PGA.
  3. Nguyên lý phân quyền giữa User, Schema và Profile trong việc giới hạn tài nguyên hệ thống.
  4. Ngôn ngữ lập trình PL/SQL, chỉ ra ưu điểm về hiệu năng, cú pháp xử lý mảng FORALL, hướng đối tượng và nhược điểm về chiếm dụng bộ nhớ cũng như hạn chế công cụ gỡ lỗi Stored Procedure.
  5. Cơ chế sao lưu và khôi phục (Recovery, PITR, RMAN, Flashback Technology, chế độ Archivelog/Noarchivelog).
  6. Các giải pháp kiểm soát đồng thời: cơ chế khóa Exclusive/Share Locks, kiểm soát đa phiên bản MVCC, đảm bảo tính nhất quán đọc (Read Consistency), xử lý Deadlock và cấu hình các mức độ cô lập giao tác.

Chương 3: Phân tích hệ thống

Chương 3 chuyển hóa các yêu cầu khảo sát thành mô hình phân tích logic. Về mặt chức năng, tác giả xây dựng sơ đồ phân cấp chức năng (BFD) và bảng mô tả chi tiết 7 chức năng chính: Quản lý đơn hàng, Quản lý thông tin khách hàng, Quản lý nhà cung cấp, Thêm sản phẩm, Cập nhật - xóa sản phẩm, Tạo báo cáo thu chi doanh thu, và Tạo đơn hàng. Đi kèm với chức năng là danh mục 16 quy định nghiệp vụ và ràng buộc toàn vẹn (RBTV), tiêu biểu như: một sản phẩm có thể nhập từ nhiều nhà cung cấp; một khách hàng có thể có nhiều hóa đơn/đơn hàng nhưng một hóa đơn/đơn hàng chỉ thuộc về một khách hàng duy nhất; nhân viên có thể lập nhiều hóa đơn nhưng mỗi hóa đơn chỉ do một nhân viên chịu trách nhiệm; hóa đơn không có tổng giá trị âm; mã bánh và tên bánh không được phép trùng lặp. Về mặt phân tích dữ liệu, chương này cung cấp sơ đồ thực thể kết hợp (ERD), sơ đồ chuyển đổi sang lược đồ quan hệ và sơ đồ luồng dữ liệu (DFD) thể hiện quá trình tạo đơn hàng qua 3 bước: Yêu cầu mua hàng, Xử lý đơn hàng và Thanh toán.

Chương 4: Thiết kế và cài đặt hệ thống

Chương 4 là phần kỹ thuật trọng tâm của báo cáo, trình bày thiết kế vật lý và toàn bộ mã nguồn cài đặt:

  • Chuẩn hóa lược đồ quan hệ gồm 8 bảng, xây dựng từ điển dữ liệu quy định rõ tên thuộc tính, kiểu dữ liệu, kích thước và vai trò khóa (khóa chính, khóa ngoại).
  • Biên soạn kịch bản tạo người dùng quản trị QLDONHANG, cấp hạn ngạch 10MB trên tablespace users, khởi tạo 8 bảng quan hệ cùng ràng buộc toàn vẹn tham chiếu.
  • Nạp bộ dữ liệu mẫu (demo) cho các bảng danh mục phân loại (BANH, KHACHHANG, NHANVIEN, NHACUNGCAP) và bảng giao dịch (DONHANG, HOADON, CTDONHANG, PHGIAOHANG).
  • Cài đặt 4 thủ tục CRUD bảng Bánh (Select_banh, Them_banh_moi, Update_banh, Delete_banh), thủ tục cập nhật thành tiền chi tiết update_thanhtien_ctdonhang, thủ tục tính tổng tiền đơn đặt hàng update_tongtien_ddh, thủ tục sử dụng con trỏ TongDonHang_TrongNgay và thủ tục tổng hợp doanh thu theo ngày tong_don.
  • Cài đặt 4 Trigger: trg_prevent_updates (chặn cập nhật ngoài khung giờ 08:00 - 20:00), trg_banh_inup (chống trùng mã bánh), trg_tenbanh_inup (chống trùng tên bánh), và trg_log_changes (ghi nhật ký biến động dữ liệu đơn hàng vào bảng LOG).
  • Thiết kế kịch bản xử lý giao tác giải quyết xung đột Lost Update trên bảng BANH bằng lệnh khóa độc quyền LOCK TABLE IN EXCLUSIVE MODE.
  • Mô phỏng xung đột đồng thời giữa hai phiên làm việc qua lệnh DBMS_SESSION.SLEEP(10).
  • Cài đặt mô hình phân quyền cho 4 nhóm người dùng: KH_PQ, NV_QLDH, NV_QLNCC, NV_QLC.
  • Phụ lục tài liệu cung cấp danh mục bổ sung hơn 20 Stored Procedure và Trigger phụ trợ bao quát các thao tác CRUD và kiểm tra trùng lặp cho các bảng còn lại trong cơ sở dữ liệu.

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

Nghiên cứu mang lại các kết quả kỹ thuật cụ thể:

  • Xây dựng hoàn chỉnh mô hình cơ sở dữ liệu quan hệ cho tiệm bánh QKN gồm 8 bảng dữ liệu chuẩn hóa, 1 bảng ghi nhật ký hệ thống, thể hiện đầy đủ qua sơ đồ BFD, sơ đồ ERD, sơ đồ DFD tạo đơn hàng và từ điển dữ liệu chi tiết.
  • Cài đặt thành công trên hệ quản trị cơ sở dữ liệu Oracle hệ thống mã nguồn PL/SQL gồm hơn 20 Stored Procedure (trong đó có 4 procedure phức tạp sử dụng con trỏ CURSOR, vòng lặp và kết hợp nhiều bảng), 4 Trigger nghiệp vụ và kiểm toán, cùng 2 kịch bản Transaction xử lý tranh chấp.
  • Thiết lập cơ chế kiểm soát truy cập và bảo mật dựa trên vai trò (Role-Based Access Control) thông qua 4 tài khoản người dùng (KH_PQ, NV_QLDH, NV_QLNCC, NV_QLC) với hạn ngạch không gian 10MB rõ ràng.

Về mặt giải pháp, đề tài đề xuất thay thế toàn bộ quy trình ghi chép thủ công trên Excel bằng hệ CSDL tập trung Oracle, tự động hóa tính toán giá trị đơn hàng và doanh thu bán hàng thông qua thủ tục lưu trữ, đồng thời thiết lập rào chắn an toàn dữ liệu ngoài giờ hành chính bằng Trigger hệ thống.

Đóng góp tự nêu của nhóm tác giả là hoàn thành việc phân tích, thiết kế và xây dựng một giải pháp cơ sở dữ liệu có tính thực tiễn cao, giải quyết đồng bộ các bài toán lưu trữ lớn, hỗ trợ truy xuất nhanh, bảo mật và kiểm soát giao tác đồng thời cho một doanh nghiệp dịch vụ ăn uống đang trong giai đoạn mở rộng chuỗi chi nhánh.

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

Báo cáo thẳng thắn thừa nhận hai hạn chế kỹ thuật:

  1. Hệ thống vẫn còn thiếu sót, chưa xây dựng được nhiều Stored Procedure phức tạp để khai thác triệt để các quy định nghiệp vụ phát sinh trong thực tế vận hành tiệm bánh.
  2. Đề tài dừng lại ở tầng cơ sở dữ liệu (Back-end/DBMS), chưa phát triển được ứng dụng giao diện phía người dùng (Client application) để mô phỏng và hỗ trợ nhân viên thực hiện thao tác truy xuất dữ liệu trực quan.

Hướng phát triển tiếp theo được tác giả xác định:

  • Cải thiện và nâng cấp cấu trúc cơ sở dữ liệu bám sát hơn với các kịch bản nghiệp vụ chuyên sâu ngoài đời thực.
  • Xây dựng và hoàn thiện ứng dụng client hoàn chỉnh kết nối với CSDL Oracle để các bộ phận trong tiệm bánh dễ dàng thao tác.
  • Bổ sung các Stored Procedure, Function và Trigger nâng cao nhằm đáp ứng trọn vẹn chu trình quản lý chuỗi cung ứng và kinh doanh.

Giá trị tham khảo

Báo cáo là tài liệu tham khảo cho sinh viên ngành Công nghệ thông tin, Hệ thống thông tin và Kỹ thuật phần mềm khi theo học các học phần Cơ sở dữ liệu nâng cao, Các hệ quản trị cơ sở dữ liệu, hoặc thực hiện đồ án thiết kế hệ thống thông tin quản lý.

Những nội dung có giá trị ứng dụng cao gồm:

  • Phương pháp chuyển đổi từ yêu cầu thực tế của một doanh nghiệp F&B sang mô hình thực thể ERD và cấu trúc từ điển dữ liệu 8 bảng quan hệ.
  • Kịch bản mẫu cài đặt Trigger kiểm tra khung giờ làm việc (SYSTIMESTAMP), Trigger ghi vết lịch sử thay đổi dữ liệu (Audit Log), và kỹ thuật sử dụng con trỏ tường minh (CURSOR) trong PL/SQL.
  • Mô hình thực nghiệm và giải pháp xử lý xung đột Lost Update bằng lệnh khóa bảng độc quyền (LOCK TABLE EXCLUSIVE) và phân quyền phân cấp người dùng trên Oracle.

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

1. Cơ sở dữ liệu quản lý đơn hàng của tiệm bánh QKN gồm những bảng nào và mối liên kết trọng tâm giữa chúng ra sao?
Hệ thống gồm 8 bảng nghiệp vụ chính: BANH, NHACUNGCAP, NHANVIEN, KHACHHANG, DONHANG, CTDONHANG, HOADON, PHGIAOHANG cùng bảng phụ trợ LOG. Trọng tâm xoay quanh bảng DONHANG, được liên kết với KHACHHANG qua MaKH, NHANVIEN qua MaNV, kết nối với bảng BANH thông qua bảng chi tiết CTDONHANG (MaDH, MaBanh), đồng thời phát sinh dữ liệu cho bảng HOADON và phiếu giao hàng PHGIAOHANG.

2. Trigger trg_prevent_updates kiểm soát hoạt động trên bảng Bánh trong khung giờ nào và xử lý ra sao khi có vi phạm?
Trigger này được thiết lập trước sự kiện INSERT hoặc UPDATE trên bảng BANH. Mã lệnh trích xuất giờ hiện tại qua hàm TO_NUMBER(TO_CHAR(SYSTIMESTAMP, 'HH24')). Nếu khung giờ nằm trong khoảng <= 8 hoặc > 20 (ngoài khung giờ hành chính 08:00 đến 20:00), Trigger sẽ ngắt giao dịch và phát sinh lỗi raise_application_error(-20001, 'không insert hay cập nhật ngoài giờ ').

3. Nhóm tác giả giải quyết bài toán xung đột mất dữ liệu cập nhật (Lost Update) bằng kỹ thuật nào?
Để ngăn chặn việc hai nhân viên đồng thời đọc số lượng tồn kho của một loại bánh và ghi đè làm sai lệch dữ liệu, nhóm tác giả sử dụng câu lệnh khóa độc quyền LOCK TABLE banh IN EXCLUSIVE MODE; bên trong khối giao tác được định danh qua SET TRANSACTION NAME. Cơ chế này buộc các phiên làm việc khác phải chờ giao tác hiện tại thực hiện xong thao tác cập nhật và xác nhận COMMIT.

4. Hệ thống thiết lập bao nhiêu tài khoản người dùng và tài khoản khách hàng KH_PQ có những quyền hạn gì?
Hệ thống thiết lập 4 tài khoản phân quyền: KH_PQ (khách hàng), NV_QLDH (nhân viên quản lý đơn hàng), NV_QLNCC (nhân viên quản lý nhà cung cấp) và NV_QLC (nhân viên quản lý chung). Mỗi tài khoản được cấp hạn ngạch QUOTA 10M ON USERS. Tài khoản KH_PQ chỉ được cấp quyền đọc dữ liệu SELECT trên 2 bảng là DONHANG và CTDONHANG, không được phép can thiệp vào các bảng danh mục hay chỉnh sửa dữ liệu.

5. Đâu là những hạn chế kỹ thuật lớn nhất mà báo cáo tự xác định cần hoàn thiện?
Theo kết luận của báo cáo, đề tài còn hai hạn chế lớn: chưa phát triển được ứng dụng giao diện phía người dùng (client application) để kết nối trực quan với CSDL, và số lượng Stored Procedure phức tạp vẫn còn hạn chế, chưa khai thác triệt để toàn bộ các quy định nghiệp vụ phát sinh của tiệm bánh.

Kết luận

Báo cáo môn học "Xây dựng hệ thống CSDL quản lý đơn hàng tiệm bánh bằng Oracle" của nhóm sinh viên Trường Đại học Ngoại ngữ - Tin học TP.HCM đã giải quyết bài toán nâng cấp hạ tầng dữ liệu từ Excel sang CSDL quan hệ cho chuỗi tiệm bánh QKN. Đề tài hoàn thành đầy đủ các giai đoạn phân tích hệ thống (BFD, ERD, DFD), thiết kế chuẩn hóa 8 bảng thực thể và cài đặt thành công trên Oracle với hệ thống Stored Procedure, Trigger, Transaction kiểm soát Lost Update và phân quyền người dùng. Dù chưa xây dựng được ứng dụng giao diện client, công trình đã cung cấp một thiết kế CSDL hoàn chỉnh, minh họa rõ nét các kỹ thuật quản trị nâng cao của hệ quản trị cơ sở dữ liệu Oracle trong thực tiễn bán lẻ.