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

  • Lý do chọn đề tài: Nhu cầu mua sắm online ngày càng tăng, các siêu thị cần kỹ thuật số hoá quy trình bán hàng để giảm sai sót, tăng tốc độ phục vụ và cung cấp thông tin dinh dưỡng sản phẩm cho khách hàng.
  • Mục tiêu và câu hỏi/nhiệm vụ nghiên cứu
    1. Xây dựng một hệ thống web thương mại điện tử cho siêu thị đáp ứng các yêu cầu quản lý nhân viên, khách hàng, sản phẩm và đơn hàng.
    2. Đảm bảo tính toàn vẹn dữ liệu thông qua ràng buộc và trigger trong Oracle.
    3. Thiết kế các quyền truy cập khác nhau cho quản lý, nhân viên và khách hàng.
    4. Hỗ trợ các quy trình nghiệp vụ: đăng ký, đăng nhập, mua hàng, thanh toán (COD/VNPAY), hủy đơn, đánh giá sản phẩm, quản lý doanh thu.
  • Đối tượng, phạm vi
    • Đối tượng: Siêu thị thực tế muốn triển khai bán hàng trực tuyến, cùng với nhân viên và khách hàng của siêu thị.
    • Phạm vi không gian: Triển khai trên môi trường web nội bộ/đám mây của Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM.
    • Phạm vi thời gian: Thu thập yêu cầu, thiết kế, triển khai và thử nghiệm trong năm học 2022‑2023, hoàn thành vào tháng 06 / 2023.

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

  • Khung lý thuyết
    • Mô hình thực thể‑mối kết hợp (ER diagram) và mô hình cơ sở dữ liệu quan hệ cho các bảng: EMPLOYEE, LOGIN_EMPLOYEE, CUSTOMER, LOGIN_CUSTOMER, PRODUCT, CART, ORDERS, ORDER_DETAIL, CUSTOMER_FEEDBACK.
    • Ràng buộc toàn vẹn (unique, foreign key, check) được nêu chi tiết trong các “Ràng buộc 1‑9”.
    • PL/SQL: trigger, stored procedure, function dùng để thực thi các nghiệp vụ nghiệp vụ trong Oracle.
    • Spring Security: phân quyền người dùng (MANAGER, EMPLOYEE, CUSTOMER).
  • Phương pháp nghiên cứu
    • Phân tích‑tổng hợp yêu cầu nghiệp vụ.
    • Thiết kế hệ thống (cấu trúc dữ liệu, giao diện, kiến trúc phần mềm).
    • Phát triển phần mềm sử dụng Java Spring Boot (backend) và Oracle DB (persistent layer).
    • Kiểm thử các trigger, stored procedure và quyền truy cập.
  • Nguồn dữ liệu
    • Dữ liệu mẫu của các bảng được tạo trong Oracle để mô phỏng khách hàng, sản phẩm, đơn hàng, phản hồi.

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

Chương 1: Tổng quan về đề tài

  • Trình bày bối cảnh, phát biểu bài toán, quy trình nghiệp vụ, yêu cầu chức năng (quản lý nhân viên, khách hàng, sản phẩm, đơn hàng, doanh thu, phản hồi) và phi chức năng (hiệu suất, bảo mật, khả năng mở rộng, bảo trì, khả năng chịu lỗi).

Chương 2: Thiết kế mô hình quan hệ

  • Mô hình thực thể‑mối kết hợp (Hình 2.1) và ER diagram (Hình 2).
  • Định nghĩa 9 bảng chính với các thuộc tính và ràng buộc (khóa chính, khóa ngoại, check).
  • Các ràng buộc toàn vẹn chi tiết (MAIL = USERNAME, USERPOSITION giá trị EMPLOYEE/MANAGER, STATUS giá trị ORDERED, PREPARING, SHIPPING, COMPLETELY, …).

Chương 3: Xây dựng và quản lý các giao tác

  • Trigger (5 loại) trên các bảng CUSTOMER, EMPLOYEE, ORDER_DETAIL …, mô tả thời điểm và nội dung thực thi (kiểm tra ngày sinh, tuổi nhân viên, người quản lý là nhân viên, tự động tạo login, cập nhật số lượng sản phẩm).
  • Stored procedure / function (ví dụ: CHECK_MAIL_CUS_EXIST, CUSTOMER_REGISTER, SHOW_PRODUCT, UPDATE_CART, ADD_ORDER_ORDERDETAIL, UPDATE_STATUS_ORDERS, …) mô tả luồng nghiệp vụ như đăng ký khách hàng, tạo đơn hàng, cập nhật giỏ hàng, thay đổi trạng thái đơn hàng.

Chương 4: Xử lý truy xuất đồng thời

  • Trình bày các mức cô lập (Isolation Levels) trong Oracle, các vấn đề non‑repeatable read, deadlock và cách mô tả deadlock trong đồ án.

Chương 5: Phân quyền truy cập

  • Tổng quan về Spring Security, mô tả quyền của người dùng quản lý, nhân viên và khách hàng.

Chương 6: Thiết kế giao diện

  • Các module giao diện được triển khai:
    • Thông tin cá nhân khách hàng, thay đổi mật khẩu.
    • Trang giới thiệu cửa hàng.
    • Hiển thị danh sách sản phẩm, chi tiết sản phẩm, phản hồi sản phẩm.
    • Quản lý thông tin nhân viên, sản phẩm, khách hàng, doanh thu, phản hồi, thêm/xóa nhân viên.

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

  • Bảng phân công công việc (thành viên nhóm).
  • Môi trường phát triển: Java Spring Boot, Oracle DB.
  • Môi trường triển khai: Server nội bộ/đám mây của trường.
  • Kết quả đạt được: Hoàn thành các chức năng nghiệp vụ, ràng buộc dữ liệu, quyền truy cập và giao diện người dùng.
  • Những hạn chế: Được liệt kê trong tài liệu (không chi tiết số liệu).
  • Hướng phát triển: Đưa vào môi trường thật, mở rộng tính năng, tối ưu hiệu suất.

Thiết kế và triển khai

  • Kiến trúc: Kiểm soát ba lớp – (1) Client (trình duyệt) hiển thị giao diện HTML/CSS/JS; (2) Application Server (Java Spring Boot) chịu trách nhiệm xử lý nghiệp vụ, gọi PL/SQL; (3) Database Server (Oracle) lưu trữ dữ liệu và thực thi trigger, stored procedure.
  • Công nghệ:
    • Backend: Java 17, Spring Boot, Spring Security, JDBC‑Oracle.
    • Database: Oracle 11g (hoặc phiên bản tương đương).
    • Frontend: HTML5, CSS3, JavaScript (không chi tiết thư viện).
  • Kiểm thử:
    • Kiểm tra tính đúng đắn của trigger (ví dụ: BIRTHDAY_CUS_VALID ngăn ngày sinh tương lai).
    • Kiểm thử stored procedure thông qua các call mẫu (đăng ký khách hàng, tạo đơn hàng, cập nhật trạng thái).
    • Kiểm thử quyền truy cập bằng Spring Security (đảm bảo MANAGER chỉ được truy cập các chức năng quản lý).

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

  • Kết quả chính
    • Xây dựng được hệ thống web thương mại điện tử đầy đủ các chức năng: đăng ký/đăng nhập, quản lý sản phẩm, giỏ hàng, đặt hàng, thanh toán, phản hồi, báo cáo doanh thu.
    • Thực thi 5 trigger và hơn 15 stored procedure để tự động hoá kiểm tra ràng buộc, cập nhật số lượng và tính toán doanh thu.
    • Áp dụng ràng buộc toàn vẹn dữ liệu (unique, foreign key, check) để bảo đảm tính nhất quán.
    • Phân quyền người dùng ba mức (quản lý, nhân viên, khách hàng) qua Spring Security.
  • Giải pháp/kiến nghị: Đề xuất mở rộng mô hình sang đa cửa hàng, tích hợp thanh toán trực tuyến qua cổng VNPAY, cải thiện giao diện UX/UI.
  • Đóng góp: So với các nghiên cứu trước, đồ án cung cấp một bộ mẫu hoàn chỉnh kết hợp PL/SQL trigger, stored procedure và Spring Boot, phù hợp cho môn “Hệ quản trị cơ sở dữ liệu” và cho các sinh viên muốn thực hành xây dựng hệ thống thương mại điện tử thực tế.

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

  • Hạn chế
    • Chưa triển khai môi trường sản xuất thực tế; chỉ thử nghiệm trong môi trường phát triển nội bộ.
    • Các giao diện chưa tối ưu cho thiết bị di động.
    • Chưa tích hợp các kênh thanh toán đa dạng (chỉ hỗ trợ COD và VNPAY).
  • Hướng nghiên cứu tiếp
    • Đưa hệ thống lên cloud, mở rộng đa cửa hàng và đa ngôn ngữ.
    • Tích hợp các công cụ CI/CD để tự động hoá triển khai và kiểm thử.
    • Nâng cấp bảo mật (mã hoá dữ liệu nhạy cảm, OAuth2).
    • Thực hiện phân tích hiệu suất, tối ưu truy vấn Oracle và caching.

Giá trị tham khảo

  • Sinh viên: Thực hành thiết kế cơ sở dữ liệu quan hệ, viết trigger và stored procedure trong Oracle, và phát triển backend Java Spring Boot.
  • Giảng viên/nhà nghiên cứu: Mẫu tham khảo cho môn “Hệ quản trị cơ sở dữ liệu” hoặc “Phát triển hệ thống thông tin”.
  • Nhà phát triển phần mềm: Quy trình triển khai đầy đủ từ phân tích nghiệp vụ, mô hình dữ liệu, tới triển khai quyền truy cập và kiểm thử.

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

  1. Hệ thống kiểm tra độ tuổi của nhân viên như thế nào?

    • Trigger CHECK_AGE_EMPLOYEE được kích hoạt khi INSERT hoặc UPDATE trường BIRTHDAY của bảng EMPLOYEE; nếu tuổi tính từ ngày hiện tại < 18 năm, giao dịch bị hủy và thông báo lỗi.
  2. Làm sao để biết một khách hàng đã đưa ra phản hồi cho sản phẩm nào?

    • Bảng CUSTOMER_FEEDBACK lưu FEEDBACK_ID, DATE_FEEDBACK, DESCRIPTION, CUSTOMER_ID, PRODUCT_ID. Truy vấn SELECT * FROM CUSTOMER_FEEDBACK WHERE CUSTOMER_ID = :cid trả về danh sách phản hồi của khách hàng.
  3. Khi một chi tiết đơn hàng được xóa, hệ thống cập nhật số lượng sản phẩm như thế nào?

    • Trigger UPDATE_QUANTITY_PRODUCT trên bảng ORDER_DETAIL kiểm tra thao tác DELETE và cộng lại số lượng tương ứng trong bảng PRODUCT.
  4. Quyền nào cho phép nhân viên thêm mới một nhân viên khác?

    • Chỉ người dùng có USERPOSITION = 'MANAGER' (quản lý) mới được phép thực hiện INSERT vào bảng EMPLOYEE; trigger MANAGERID_IS_EMPLOYEEID đảm bảo người quản lý cũng là một nhân viên.
  5. Hệ thống tính tổng doanh thu của một nhân viên quản lý như thế nào?

    • Stored procedure ADD_ORDER_ORDERDETAIL cập nhật trường TOTAL_PURCHASE_AMOUNT của bảng CUSTOMER và trường TOTAL_MONEY của bảng ORDERS; báo cáo doanh thu được truy xuất bằng các procedure thống kê (không chi tiết trong văn bản).

Kết luận

Đồ án đã xây dựng thành công một trang web thương mại điện tử cho siêu thị, tích hợp đầy đủ các chức năng quản lý nghiệp vụ, cơ sở dữ liệu mạnh mẽ với trigger và stored procedure, và phân quyền người dùng qua Spring Security. Mặc dù còn một số hạn chế về môi trường triển khai và giao diện, dự án cung cấp nền tảng vững chắc cho các nghiên cứu và phát triển tiếp theo trong lĩnh vực hệ thống thông tin thương mại điện tử.