Bối cảnh và vấn đề nghiên cứu
Đề tài "Phát triển cơ sở dữ liệu bán hàng online trên HQT CSDL Oracle" do nhóm sinh viên Nguyễn Thành Nhân, Trương Gia Huy, Nguyễn Duy Đông, Văn Viết Tín và Võ Văn Duy thực hiện dưới sự hướng dẫn của ThS. Lê Thị Minh Nguyện 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 (HUFLIT).
Bối cảnh nghiên cứu xuất phát từ nhu cầu quản lý và vận hành thương mại điện tử chuyên ngành nông sản, thực phẩm tươi sống (rau củ quả), tham chiếu theo mô hình tổ chức của các nền tảng thương mại điện tử lớn như Shopee, Tiki và TikTokShop. Đối với ngành hàng rau củ, đặc thù sản phẩm đòi hỏi kiểm soát chặt chẽ nguồn cung ứng từ nông trại, theo dõi vòng đời hàng tồn kho, quản lý ngày hết hạn để tránh lãng phí và đảm bảo độ tươi mới trước khi giao đến tay người tiêu dùng.
Vấn đề kỹ thuật cốt lõi được tác giả đặt ra trong đề tài bao gồm:
- Xây dựng cấu trúc lưu trữ cơ sở dữ liệu đáp ứng nghiệp vụ bán hàng trực tuyến toàn diện, bao gồm quản lý danh mục, sản phẩm, hình ảnh sản phẩm, đơn hàng và chi tiết đơn hàng.
- Giải quyết bài toán hiệu năng xử lý dữ liệu, tối ưu hóa tốc độ tiếp nhận và xử lý đơn hàng, giảm thiểu độ trễ tải trang web nhằm nâng cao trải nghiệm người dùng.
- Đảm bảo an toàn và bảo mật dữ liệu, đặc biệt là thông tin cá nhân khách hàng và dữ liệu thanh toán.
- Kiểm soát xử lý truy xuất đồng thời, ngăn chặn các hiện tượng xung đột dữ liệu (data conflicts) và bế tắc (deadlocks) khi có nhiều giao dịch cập nhật cùng lúc.
Đối tượng nghiên cứu của đồ án là hệ thống cơ sở dữ liệu quan hệ cho mô hình bán hàng trực tuyến và các cơ chế quản trị trên hệ quản trị cơ sở dữ liệu (HQT CSDL) Oracle. Phạm vi nghiên cứu tập trung vào việc thiết kế cấu trúc dữ liệu, cài đặt các ràng buộc toàn vẹn, xây dựng thủ tục lưu trữ (Stored Procedure), kích hoạt tự động (Trigger), hàm (Function), quản lý giao tác (Transaction), phân quyền người dùng và kiểm soát đồng thời trên nền tảng Oracle Database.
Cơ sở lý thuyết và phương pháp
Đề tài sử dụng phương pháp phân tích thiết kế hệ thống thông tin kết hợp với kỹ thuật kỹ thuật cơ sở dữ liệu thực nghiệm trên hệ quản trị Oracle:
- Phương pháp phân tích - tổng hợp và mô hình hóa: Sử dụng sơ đồ luồng dữ liệu (DFD), sơ đồ phân cấp chức năng (BFD) và mô hình thực thể kết hợp (ERD) để chuẩn hóa quy trình nghiệp vụ và quan hệ dữ liệu.
- Khung lý thuyết kiến trúc Oracle:
- Kiến trúc Instance: Cấu trúc bộ nhớ SGA (System Global Area) gồm Database Buffer Cache, Redo Log Buffer, Shared Pool; các tiến trình nền (Background Processes) như DBWR, LGWR và User Processes.
- Cấu trúc lưu trữ vật lý: Data Files, Redo Log Files, Control Files.
- Quản trị bảo mật: Mô hình User và Profile (thiết lập giới hạn phiên làm việc
SESSIONS_PER_USER, tài nguyên CPU CPU_PER_SESSION, quản lý vòng đời mật khẩu).
- Lập trình cơ sở dữ liệu PL/SQL: Khối lệnh (Block), cấu trúc điều khiển, Stored Procedure, Function, Package, Trigger và cơ chế xử lý ngoại lệ (Exception Handling).
- Sao lưu và phục hồi: Cơ chế RMAN (Recovery Manager), Data Pump, Export/Import, công nghệ Flashback (Flashback Query, Flashback Table, Flashback Database), Logical Standby và Physical Standby Databases.
- Kiểm soát giao tác và đồng thời: Nguyên lý giao tác ACID, cơ chế khóa (Locking Mechanisms), các cấp độ cô lập (Read Committed, Serializable), kỹ thuật tối ưu hóa kế hoạch thực thi truy vấn (Query Execution Plan) và đánh chỉ mục (Indexing).
- Nguồn dữ liệu: Dữ liệu thực nghiệm được nhóm tác giả tự sinh với 500 bản ghi mẫu cho mỗi phân hệ phục vụ kiểm thử thủ tục, giao tác và kịch bản truy xuất đồng thời.
Thiết kế và triển khai
Hệ thống cơ sở dữ liệu được xây dựng trên hệ quản trị Oracle thông qua tài khoản quản trị HQTCSDL1, được cấp quyền hệ thống (CREATE SESSION, CREATE TABLE) và hạn ngạch lưu trữ không giới hạn trên tablespace users (QUOTA UNLIMITED ON users).
Mô hình dữ liệu quan hệ
Hệ thống bao gồm 5 bảng chính liên kết chặt chẽ qua các khóa ngoại:
| Tên bảng |
Khóa chính (PK) |
Khóa ngoại (FK) |
Mô tả nghiệp vụ |
tb_ProductCategory |
Id_Category |
Không có |
Lưu trữ danh mục sản phẩm, thông tin SEO và biểu tượng |
tb_Product |
Id_Product |
ProductCategoryId |
Lưu trữ thông tin chi tiết sản phẩm, giá gốc, giá bán, số lượng tồn kho |
tb_ProductImage |
Id_ProductImage |
ProductId |
Lưu trữ hình ảnh sản phẩm và trạng thái ảnh mặc định (IsDefault) |
tb_Order |
Id_Order |
Không có |
Lưu trữ thông tin đơn hàng, khách hàng, tổng tiền, hình thức thanh toán |
tb_OrderDetail |
Id_OrderDetails |
OrderId, ProductId |
Lưu trữ chi tiết các mặt hàng trong đơn hàng, đơn giá và số lượng mua |
Cài đặt quy định nghiệp vụ và ràng buộc toàn vẹn
Nhóm tác giả thiết kế và mã hóa 12 quy định nghiệp vụ (QĐ01–QĐ12) tương ứng với 12 ràng buộc toàn vẹn (R1–R12):
| Mã quy định / Ràng buộc |
Nội dung ràng buộc kỹ thuật |
Bảng ảnh hưởng |
| QĐ01 / R1 |
Trạng thái đơn hàng chỉ nhận giá trị 1 (đã xử lý) hoặc 2 (chưa xử lý). |
tb_Order |
| QĐ02 / R5 |
Giá sản phẩm gốc và giá bán phải > 5.000; số lượng tồn kho > 0. |
tb_Product |
| QĐ03 / R6 |
Ràng buộc khóa ngoại: Mỗi sản phẩm phải thuộc về một danh mục hợp lệ. |
tb_Product, tb_ProductCategory |
| QĐ04 / R4 |
Ràng buộc khóa ngoại: Chi tiết đơn hàng phải tham chiếu đến đơn hàng và sản phẩm tồn tại. |
tb_OrderDetail, tb_Product, tb_Order |
| QĐ05 / QĐ09 |
Danh mục sản phẩm không được trùng lặp, phải có định danh và tiêu đề duy nhất. |
tb_ProductCategory |
| QĐ06 / R3 |
Đơn giá và số lượng trong chi tiết đơn hàng phải > 0. |
tb_OrderDetail |
| QĐ07 / R8 |
Hình thức thanh toán chỉ nhận giá trị 1 (COD - trực tiếp) hoặc 2 (ngân hàng). |
tb_Order |
| QĐ08 |
Số điện thoại khách hàng khi tạo đơn hàng phải có độ dài đúng 10 ký tự. |
tb_Order |
| QĐ10 / R2 |
Kiểm tra số lượng mua trong tb_OrderDetail không được vượt quá số lượng tồn kho trong tb_Product. |
tb_OrderDetail, tb_Product |
| QĐ11 / R7 |
Mỗi sản phẩm có thể có nhiều hình ảnh, phải có ít nhất 1 ảnh mặc định. |
tb_ProductImage, tb_Product |
| QĐ12 |
Kiểm tra tính hợp lệ không âm của giá trị số lượng và đơn giá khi cập nhật. |
tb_Product, tb_OrderDetail |
| R9 |
Tự động tính toán và cập nhật TotalAmount của tb_Order sau khi thêm/sửa/xóa dòng ở tb_OrderDetail. |
tb_Order, tb_OrderDetail |
| R10, R11, R12 |
Trigger tự động cập nhật thời gian sửa đổi gần nhất (ModifiedDate) trên các bảng danh mục, sản phẩm và đơn hàng. |
tb_ProductCategory, tb_Product, tb_Order |
Cài đặt Stored Procedure và Transaction
Tác giả đã lập trình 18 Stored Procedure phục vụ các thao tác dữ liệu và báo cáo thống kê:
- Nhóm thao tác CRUD:
Insert_Product, Update_Product, Delete_Product, Insert_ProductCategory, Update_ProductCategory, Delete_ProductCategory, Thêm/Xóa/Sửa/Lấy hình ảnh sản phẩm (Procedures 4–9, 13–16).
- Nhóm truy vấn và thống kê nâng cao:
danh_sach_khach_hang(X IN DATE): Lọc danh sách khách hàng phát sinh đơn hàng trong ngày chỉ định.
get_customers_by_total_value(X IN NUMBER): Thống kê khách hàng có tổng giá trị giao dịch tích lũy lớn hơn ngưỡng X.
get_bottom_X_profit_items(X IN NUMBER, bottom_items OUT SYS_REFCURSOR): Sử dụng con trỏ động truy vấn X mặt hàng có lợi nhuận thấp nhất dựa trên chênh lệch giá và số lượng bán.
- Các thủ tục thống kê theo danh mục, ngày đặt hàng, loại sản phẩm được đặt nhiều nhất (Procedures 10, 11, 12, 17, 18).
- Quản lý giao tác và xử lý đồng thời: Cài đặt các khối lệnh kiểm soát Transaction (
COMMIT, ROLLBACK, EXCEPTION WHEN OTHERS), thiết lập mô phỏng tranh chấp dữ liệu và giải quyết bằng các cấp độ cô lập giao dịch của Oracle.
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 phân tích hoạt động quản lý bán hàng online nông sản, đối chiếu với mô hình tổ chức doanh nghiệp gồm Ban điều hành, Bộ phận Marketing, Bán hàng & Dịch vụ khách hàng, Vận hành & Logistics, Tài chính & Kế toán. Tác giả chỉ ra các điểm yếu hiện trạng về kiểm soát nguồn cung, quản lý hạn dùng nông sản và hiệu năng website. Từ đó, xác định các yêu cầu kỹ thuật cần giải quyết bằng Oracle: tốc độ xử lý đơn, an toàn dữ liệu, chống xung đột và tránh hiện tượng Deadlock khi nhiều người dùng thao tác đồng thời.
Chương 2: Lý thuyết
Chương 2 trình bày tổng quan cơ sở lý thuyết về HQT CSDL Oracle:
- Cấu trúc Instance (SGA, Background Processes) và cơ sở dữ liệu vật lý (Data Files, Redo Log Files, Control Files).
- Quy trình quản trị User và Profile nhằm thiết lập chính sách bảo mật và hạn mức tài nguyên phần cứng.
- Cú pháp và kỹ thuật lập trình nâng cao với PL/SQL (Biến, Con trỏ, Cấu trúc điều khiển, Thủ tục, Hàm, Gói, Trigger).
- Các giải pháp an toàn dữ liệu: RMAN, Oracle Data Pump, Flashback Technology, Standby Database và các cấp độ cô lập giao tác kiểm soát truy xuất đồng thời.
Chương 3: Phân tích hệ thống
Tác giả chi tiết hóa mô hình phân tích hệ thống:
- Xây dựng sơ đồ phân cấp chức năng (BFD) và sơ đồ luồng dữ liệu (DFD) cho các tác nhân (Giám đốc, Trưởng phòng kinh doanh, Kế toán, Thủ kho, Nhân viên bán hàng, Khách hàng).
- Liệt kê 12 chức năng hệ thống thuộc 5 nhóm quản lý chính: Danh mục, Sản phẩm, Đơn hàng, Chi tiết đơn hàng, Hình ảnh sản phẩm.
- Thiết lập bảng mô tả 12 quy định nghiệp vụ (QĐ01–QĐ12) và đặc tả hình thức toán học cho 12 ràng buộc toàn vẹn (R1–R12) kèm bảng tầm ảnh hưởng (Thêm, Xóa, Sửa).
Chương 4: Thiết kế và cài đặt hệ thống
Chương 4 là phần nội dung kỹ thuật trọng tâm của đồ án:
- Trình bày mô hình dữ liệu quan hệ và từ điển dữ liệu chi tiết cho 5 bảng (
tb_ProductCategory, tb_Product, tb_ProductImage, tb_Order, tb_OrderDetail) với đầy đủ kiểu dữ liệu, độ rộng và ràng buộc.
- Cung cấp mã nguồn DDL tạo bảng, khóa chính, khóa ngoại, chỉ mục (Index) và cấu hình phân quyền người dùng (
HQTCSDL1).
- Cung cấp mã nguồn PL/SQL cho 18 Stored Procedure, hệ thống Trigger kiểm tra toàn vẹn dữ liệu, các Function tính toán, kịch bản Transaction và bảng phân tích thực nghiệm xử lý đồng thời.
Chương 5: Kết luận
Tổng kết toàn bộ khối lượng công việc đã hoàn thành: xây dựng thành công cấu trúc CSDL hoàn chỉnh, cài đặt đầy đủ các trigger bảo đảm toàn vẹn dữ liệu, xây dựng thủ tục xử lý nghiệp vụ, quản lý giao tác và phân quyền người dùng. Đồng thời, chương này chỉ ra các hạn chế kỹ thuật chưa thực hiện và đề xuất các nội dung cần bổ sung tiếp theo.
Kết quả và đóng góp
Kết quả kỹ thuật đạt được
- Hoàn thiện thiết kế lược đồ quan hệ: Chuẩn hóa cấu trúc lưu trữ 5 thực thể cốt lõi cho hệ thống thương mại điện tử với đầy đủ các thuộc tính quản trị SEO, trạng thái hiển thị (
IsActive, IsHot, IsFeature, IsSale, IsHome) và dấu vết chỉnh sửa (CreatedDate, ModifiedDate, CreatedBy, Modifiedby).
- Cài đặt hệ thống ràng buộc toàn vẹn tự động: Triển khai thành công 12 trigger bảo đảm tính đúng đắn của dữ liệu ngay tại tầng CSDL mà không phụ thuộc vào tầng ứng dụng, bao gồm kiểm soát số lượng tồn kho trước khi đặt hàng, tự động tính tổng tiền hóa đơn, và kiểm tra tính hợp lệ của giá và hình thức thanh toán.
- Thư viện thủ tục và hàm phong phú: Cài đặt 18 Stored Procedure bao quát đầy đủ các tác vụ CRUD và các báo cáo thống kê phức tạp (thống kê doanh thu, khách hàng thân thiết, sản phẩm có biên lợi nhuận thấp bằng con trỏ
SYS_REFCURSOR).
- Kiểm thử dữ liệu mẫu: Nhóm sinh viên đã tạo lập thành công bộ dữ liệu thử nghiệm 500 bản ghi cho mỗi bảng để đánh giá độ chính xác của các trigger và thủ tục.
Đóng góp thực tiễn của đề tài
- Đề tài cung cấp một thiết kế cơ sở dữ liệu mẫu hoàn chỉnh trên Oracle Database cho lĩnh vực bán lẻ trực tuyến, đặc biệt xử lý tốt các bài toán đặc thù của ngành hàng rau củ thực phẩm.
- Chứng minh khả năng ứng dụng trực tiếp các tính năng cao cấp của Oracle (PL/SQL Trigger, Transaction Management, Exception Handling, User/Profile Security) trong việc đảm bảo tính toàn vẹn và nâng cao hiệu năng hệ thống.
Hạn chế và hướng nghiên cứu tiếp
Dựa trên nội dung tự đánh giá trong văn bản, đề tài còn tồn tại một số điểm giới hạn:
- Hạn chế:
- Hệ thống mới dừng lại ở mức thiết kế, cài đặt và kiểm thử kịch bản tại tầng cơ sở dữ liệu (Back-end Database); chưa xây dựng giao diện ứng dụng web/mobile người dùng hoàn chỉnh kết nối trực tiếp.
- Các thử nghiệm xử lý đồng thời và sao lưu phục hồi mới được minh họa trên tập dữ liệu mẫu 500 bản ghi, chưa đánh giá tải thực tế ở quy mô giao dịch lớn.
- Hướng phát triển:
- Kết nối cơ sở dữ liệu với các framework ứng dụng web để hoàn thiện luồng mua bán hàng thực tế.
- Triển khai mở rộng các cơ chế sao lưu tự động nâng cao bằng Oracle RMAN, cấu hình nhân bản dữ liệu qua Oracle Data Guard hoặc GoldenGate và tối ưu hóa hiệu năng bằng công nghệ In-Memory Database.
Giá trị tham khảo
Báo cáo đồ án là tài liệu tham khảo hữu ích cho:
- Sinh viên ngành Công nghệ Thông tin, Hệ thống Thông tin, Kỹ thuật Phần mềm: Dùng làm tài liệu mẫu khi học tập các học phần "Hệ quản trị cơ sở dữ liệu", "Cơ sở dữ liệu nâng cao", "Quản trị cơ sở dữ liệu Oracle", hoặc làm đồ án chuyên ngành về thương mại điện tử.
- Lập trình viên và Quản trị viên cơ sở dữ liệu (DBA): Tham khảo cấu trúc từ điển dữ liệu chuẩn, các script DDL tạo bảng/khóa ngoại, các đoạn mã PL/SQL Stored Procedure, cú pháp xử lý Trigger kiểm tra tồn kho và kỹ thuật quản lý Transaction trong môi trường Oracle.
- Nội dung nổi bật đáng tham khảo: Phương pháp thiết kế bảng tầm ảnh hưởng của các ràng buộc toàn vẹn (Chương 3) và mã nguồn Stored Procedure truy vấn con trỏ động phân tích lợi nhuận sản phẩm (Chương 4).
Câu hỏi thường gặp
1. Hệ thống cơ sở dữ liệu này gồm những bảng chính nào và liên kết ra sao?
Hệ thống gồm 5 bảng chính: tb_ProductCategory (danh mục), tb_Product (sản phẩm), tb_ProductImage (hình ảnh sản phẩm), tb_Order (đơn hàng) và tb_OrderDetail (chi tiết đơn hàng). Bảng tb_Product liên kết với tb_ProductCategory qua ProductCategoryId; tb_ProductImage liên kết với tb_Product qua ProductId; tb_OrderDetail đóng vai trò bảng kết hợp liên kết với tb_Order qua OrderId và với tb_Product qua ProductId.
2. Các ràng buộc nghiệp vụ về giá và trạng thái đơn hàng được quy định như thế nào?
Theo quy định QĐ01, QĐ02 và QĐ07:
- Trạng thái đơn hàng (
Status) chỉ được nhận giá trị 1 (đã xử lý) hoặc 2 (chưa xử lý).
- Giá của sản phẩm (
Price, OriginalPrice) bắt buộc phải lớn hơn 5.000 và số lượng tồn kho phải lớn hơn 0.
- Hình thức thanh toán (
TypePayment) chỉ có hai giá trị là 1 (thanh toán COD trực tiếp) hoặc 2 (thanh toán qua tài khoản ngân hàng).
3. Quy trình tự động kiểm tra tồn kho và tính tổng tiền đơn hàng được cài đặt bằng cơ chế nào?
Hệ thống sử dụng PL/SQL Trigger gắn với bảng tb_OrderDetail:
- Trigger kiểm tra tồn kho (QĐ10 / R2) được kích hoạt trước khi thêm bản ghi mới vào
tb_OrderDetail để so sánh số lượng đặt mua với số lượng hiện có trong tb_Product, ngăn chặn bán vượt quá tồn kho.
- Trigger tính tổng tiền (R9) được kích hoạt sau mỗi thao tác thêm hoặc cập nhật trên
tb_OrderDetail để tự động tổng hợp giá trị đơn hàng và cập nhật vào cột TotalAmount của bảng tb_Order.
4. Nhóm tác giả đã triển khai những Stored Procedure nâng cao nào cho công tác báo cáo thống kê?
Các thủ tục nâng cao gồm có: danh_sach_khach_hang (lọc khách hàng mua theo ngày X), get_customers_by_total_value (thống kê khách hàng có tổng chi tiêu lớn hơn X bằng vòng lặp FOR cursor), và get_bottom_X_profit_items (sử dụng con trỏ SYS_REFCURSOR kết hợp phép nối bảng tb_Product với tb_Order để tính toán total_profit và trả về X mặt hàng có lợi nhuận thấp nhất).
5. Việc phân chia công việc kỹ thuật giữa các thành viên trong nhóm được thực hiện như thế nào?
Theo bảng phân công công việc của đồ án:
- Nguyễn Thành Nhân: Tạo và nhập dữ liệu CSDL, viết 8 trigger, 7 procedure, 2 function và viết báo cáo.
- Võ Văn Duy: Cài đặt 3 procedure, 1 transaction và tạo 500 bản ghi dữ liệu mẫu.
- Văn Viết Tín: Cài đặt 4 procedure, 2 function, 3 transaction và tạo 500 bản ghi mẫu.
- Trương Gia Huy: Cài đặt 2 trigger, 2 procedure, 2 function và viết báo cáo.
- Nguyễn Duy Đông: Cài đặt 2 trigger, 2 procedure và 2 function.
Kết luận
Báo cáo đồ án "Phát triển cơ sở dữ liệu bán hàng online trên HQT CSDL Oracle" đã hoàn thành việc khảo sát, phân tích và cài đặt một hệ thống cơ sở dữ liệu bán hàng trực tuyến hoàn chỉnh. Đề tài khai thác hiệu quả các tính năng chuyên sâu của Oracle Database và ngôn ngữ PL/SQL như Trigger kiểm soát toàn vẹn dữ liệu tự động, Stored Procedure quản lý nghiệp vụ và cơ chế phân quyền bảo mật. Kết quả nghiên cứu mang tính ứng dụng kỹ thuật cao, cung cấp khung thiết kế và mã nguồn chuẩn xác cho việc phát triển các hệ thống thương mại điện tử trên nền tảng Oracle.