Giới thiệu dự án

Sự bùng nổ của cuộc cách mạng công nghiệp 4.0 và chuyển đổi số đã đưa thương mại điện tử (E-commerce) trở thành kênh phân phối huyết mạch trong ngành bán lẻ thời trang. Theo thống kê của Hiệp hội Thương mại Điện tử Việt Nam (VECOM), tốc độ tăng trưởng kinh tế số giai đoạn 2022–2025 duy trì trên 20%/năm, với hơn 73% người dùng Internet tham gia mua sắm trực tuyến. Đối với các chuỗi cửa hàng thời trang bán lẻ như thương hiệu OLA Shop (thành lập từ năm 2014), việc phụ thuộc hoàn toàn vào kênh bán hàng trực tiếp tại điểm bán (POS) và tiếp thị qua mạng xã hội (Facebook, Zalo) đã bộc lộ những điểm nghẽn nghiêm trọng.

Vấn đề cốt lõi của OLA Shop nằm ở quy trình vận hành thủ công: tình trạng đặt đơn ảo, tỷ lệ hủy đơn cao do thiếu cơ chế xác thực, quản lý tồn kho theo kích cỡ (size) và màu sắc ghi chép sổ sách dẫn đến sai lệch dữ liệu, chi phí in ấn bảng báo giá/catalogue truyền thống đắt đỏ trong khi thông tin sản phẩm thay đổi liên tục. Hơn nữa, việc giao dịch và đối soát doanh thu bằng phương pháp thủ công làm chậm tốc độ phục vụ khách hàng và hạn chế khả năng mở rộng quy mô kinh doanh.

Đề tài khóa luận tốt nghiệp “Xây dựng Website bán giày dép” do sinh viên Nhữ Trung Đức thực hiện dưới sự hướng dẫn của Th.S Lê Ngọc Minh tại Trường Đại học Hải Phòng đã giải quyết toàn diện bài toán trên bằng cách xây dựng hệ thống thương mại điện tử B2C chuyên biệt cho OLA Shop trên nền tảng PHP và MySQL.

+-------------------------------------------------------------------------------+
|                       MỤC TIÊU VÀ KỲ VỌNG ĐẠT ĐƯỢC                            |
+-------------------------------------------------------------------------------+
| 1. Số hóa 100% quy trình trưng bày, tra cứu và đặt hàng giày dép trực tuyến   |
| 2. Tự động hóa quản lý kho đa biến thể (Size/Mã sản phẩm/Số lượng tồn)        |
| 3. Giảm chi phí giao dịch bán hàng từ 80% đến 90% so với phương thức truyền   |
|    thống; rút ngắn thời gian xử lý đơn hàng xuống chỉ còn 7% so với trước     |
| 4. Phân quyền chặt chẽ 3 cấp độ: Quản trị viên (Admin), Nhân viên, Khách hàng |
| 5. Cung cấp hệ thống báo cáo doanh thu, lợi nhuận và thống kê sản phẩm bán     |
|    chạy theo thời gian thực (Real-time analytics)                             |
+-------------------------------------------------------------------------------+

Phạm vi nghiên cứu tập trung vào việc mô hình hóa hệ thống thông tin, xây dựng kiến trúc dữ liệu quan hệ và triển khai các chức năng cốt lõi phục vụ bán lẻ giày dép nam/nữ. Hệ thống bước đầu thử nghiệm trên môi trường máy chủ cục bộ (Local Web Server) thông qua gói phần mềm tích hợp XAMPP, tập trung vào phương thức thanh toán tiền mặt khi nhận hàng (COD) và chuyển khoản ngân hàng trước khi mở rộng cổng thanh toán thẻ quốc tế.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát thực tế tại chuỗi cửa hàng OLA Shop cho thấy các giải pháp hiện hành bộc lộ nhiều nhược điểm khi so sánh với một nền tảng Web chuyên biệt:

Tiêu chí đánh giá Bán hàng qua Mạng xã hội Sử dụng SaaS (Shopify/Haravan) Nền tảng Tự phát triển (PHP/MySQL)
Chi phí duy trì Thấp ban đầu, chi phí quảng cáo tăng cao Phí thuê bao hàng tháng + % hoa hồng Miễn phí bản quyền, tối ưu chi phí lưu trữ
Kiểm soát dữ liệu Phụ thuộc thuật toán bên thứ ba Dữ liệu lưu trữ trên đám mây của nhà cung cấp Toàn quyền kiểm soát và mở rộng CSDL nội bộ
Quản lý biến thể size Thủ công qua tin nhắn/bình luận Có hỗ trợ nhưng khó tùy biến logic riêng Tùy biến linh hoạt cấu trúc bảng dữ liệu
Tự động hóa đơn hàng Rất thấp, dễ xảy ra spam và đơn ảo Tự động hóa tốt Tự động hóa hoàn toàn quy trình đặt và duyệt đơn
Bảo mật thông tin Nguy cơ lộ thông tin khách hàng cao Phụ thuộc nhà cung cấp Mã hóa mật khẩu, kiểm soát phiên làm việc

Dựa trên khảo sát thực tế, các yêu cầu của hệ thống được phân loại theo mô hình MoSCoW:

  • Must-Have (Bắt buộc): Danh mục sản phẩm đa cấp, giỏ hàng điện tử, đặt hàng online, quản lý kho theo size, quản lý tài khoản và phân quyền, báo cáo doanh thu.
  • Should-Have (Nên có): Lọc và tìm kiếm sản phẩm nâng cao, đánh giá/bình luận sản phẩm, quản lý chương trình khuyến mại, theo dõi lượt truy cập.
  • Could-Have (Có thể có): Tích điểm thành viên, gợi ý sản phẩm bán chạy, quản lý danh sách yêu thích (Wishlist).
  • Won't-Have (Chưa triển khai): Cổng thanh toán thẻ tín dụng quốc tế Visa/Mastercard tự động (dự kiến trong pha 2).

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình kiến trúc phân tầng (Client-Server 3-Tier Architecture) nhằm đảm bảo tính toàn vẹn dữ liệu và khả năng mở rộng mô-đun:

graph TD
    A[Client Layer: Web Browser / HTML5 / CSS3 / JavaScript] -->|HTTP/HTTPS Requests| B[Web Server: Apache 2.4 / XAMPP]
    B -->|Application Logic / PHP 8.x Engine| C[Business Logic Layer: Controllers & Modules]
    C -->|CRUD Operations / SQL Queries| D[Database Layer: MySQL / MariaDB]
    D -->|Recordsets / Data Results| C
    C -->|Rendered View / JSON| B
    B -->|HTTP Response| A

Technology Stack chi tiết của dự án bao gồm:

  • Máy chủ Web: Apache HTTP Server 2.4 tích hợp trong gói XAMPP.
  • Ngôn ngữ xử lý phía Server: PHP (Hypertext Preprocessor) 8.x tối ưu hóa với Zend Engine.
  • Hệ quản trị cơ sở dữ liệu: MySQL Database Server (chuẩn ANSI SQL92, lưu trữ bảng InnoDB).
  • Giao diện người dùng (Frontend): HTML5, CSS3, JavaScript ES6, Photoshop & Dreamweaver phục vụ dàn trang UI/UX.

Mô hình dữ liệu quan hệ được chuẩn hóa ở dạng chuẩn 3 (3NF) với các bảng thực thể chính:

+-----------------------------------------------------------------------------------+
|                           SƠ ĐỒ CƠ SỞ DỮ LIỆU CHÍNH                               |
+-----------------------------------------------------------------------------------+
| 1. UserGroup (GroupID, GroupName, Permissions)                                    |
| 2. User (UserID, Username, PasswordHash, FullName, Email, Phone, Address, GroupID)|
| 3. ProductCategory (CategoryID, CategoryName, MetaTitle, ParentID, DisplayOrder)  |
| 4. Product (ProductID, Code, Name, Price, PromotionPrice, Quantity, Size, Detail)|
| 5. Order (OrderID, CustomerID, ShipName, ShipMobile, ShipAddress, TotalAmount)   |
| 6. OrderDetail (OrderID, ProductID, Quantity, Price, SubTotal)                    |
| 7. MenuType & Menu (ID, Text, Link, DisplayOrder, Target, Status)                 |
+-----------------------------------------------------------------------------------+

Hệ thống áp dụng các tiêu chuẩn an toàn thông tin: lọc dữ liệu đầu vào chống tấn công SQL Injection thông qua Prepared Statements, chống mã độc XSS (Cross-Site Scripting) bằng hàm htmlspecialchars(), và mã hóa băm mật khẩu người dùng trước khi lưu trữ vào bảng User.

Methodology

Quy trình phát triển phần mềm áp dụng mô hình Agile/Scrum rút gọn kéo dài qua 4 giai đoạn chính (Milestones):

  1. Giai đoạn 1 (Tuần 1): Khảo sát thực tế tại chuỗi OLA Shop, đặc tả yêu cầu, xây dựng sơ đồ Use Case tổng quát và sơ đồ Use Case phân rã.
  2. Giai đoạn 2 (Tuần 2): Thiết kế biểu đồ lớp (Class Diagram), biểu đồ tuần tự (Sequence Diagram) cho các luồng nghiệp vụ: Đăng ký/Đăng nhập, Giỏ hàng, Đặt hàng, Quản trị kho; thiết kế lược đồ quan hệ CSDL.
  3. Giai đoạn 3 (Tuần 3): Lập trình các phân hệ Backend (PHP) và giao diện Frontend (HTML/CSS), tích hợp giỏ hàng và thanh toán.
  4. Giai đoạn 4 (Tuần 4): Kiểm thử hệ thống (Unit Testing & Integration Testing), sửa lỗi, tối ưu hiệu năng và đóng gói tài liệu.

Implementation và kết quả

Development process

Cấu trúc mã nguồn được phân định rành mạch giữa luồng xử lý người dùng (Front-end Storefront) và trung tâm điều hành (Back-end Dashboard).

Thuật toán xử lý giỏ hàng và lưu hóa đơn thực hiện theo cơ chế giao dịch (Database Transaction) để chống phân mảnh dữ liệu khi nhiều người mua cùng lúc một mặt hàng có giới hạn tồn kho.

Đoạn mã khởi tạo cấu trúc CSDL cho danh mục và sản phẩm (ProductCategory & Product):

CREATE TABLE ProductCategory (
    CategoryID INT AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(250) NOT NULL,
    MetaTitle VARCHAR(250) NULL,
    ParentID INT DEFAULT NULL,
    DisplayOrder INT DEFAULT 0,
    Status TINYINT(1) DEFAULT 1,
    CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE Product (
    ProductID INT AUTO_INCREMENT PRIMARY KEY,
    CategoryID INT NOT NULL,
    ProductCode VARCHAR(50) UNIQUE NOT NULL,
    Name VARCHAR(250) NOT NULL,
    Price DECIMAL(18, 2) NOT NULL DEFAULT 0.00,
    PromotionPrice DECIMAL(18, 2) NULL,
    SizeAvailable VARCHAR(50) NOT NULL COMMENT 'Danh sách size ví dụ: 39,40,41,42',
    QuantityInStock INT NOT NULL DEFAULT 0,
    Image VARCHAR(500) NULL,
    Description TEXT NULL,
    Status TINYINT(1) DEFAULT 1,
    FOREIGN KEY (CategoryID) REFERENCES ProductCategory(CategoryID) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Đoạn mã xử lý thêm sản phẩm vào giỏ hàng và tính toán tổng tiền bằng PHP:

<?php
session_start();

function addToCart($productId, $productName, $size, $price, $quantity) {
    $cartKey = $productId . '_' . $size;
    if (!isset($_SESSION['cart'])) {
        $_SESSION['cart'] = [];
    }
    
    if (isset($_SESSION['cart'][$cartKey])) {
        $_SESSION['cart'][$cartKey]['quantity'] += $quantity;
    } else {
        $_SESSION['cart'][$cartKey] = [
            'product_id' => $productId,
            'name'       => $productName,
            'size'       => $size,
            'price'      => (float)$price,
            'quantity'   => (int)$quantity
        ];
    }
}

function calculateTotalCart() {
    $grandTotal = 0;
    if (isset($_SESSION['cart']) && !empty($_SESSION['cart'])) {
        foreach ($_SESSION['cart'] as $item) {
            $grandTotal += $item['price'] * $item['quantity'];
        }
    }
    return $grandTotal;
}
?>

Về độ phức tạp thuật toán, thao tác tìm kiếm sản phẩm theo từ khóa và bộ lọc phân trang danh mục đạt độ phức tạp thời gian $O(\log N)$ nhờ đánh chỉ mục (B-Tree Index) trên các trường ProductCode, Name, và CategoryID.

Testing và validation

Quá trình kiểm thử phần mềm được tiến hành qua nhiều cấp độ với các chỉ số đo lường chi tiết:

+---------------------------------------------------------------------------------+
|                       KẾT QUẢ KIỂM THỬ HỆ THỐNG (TESTING METRICS)               |
+---------------------------------------------------------------------------------+
| * Độ bao phủ kiểm thử chức năng (Functional Test Coverage): 94.2%              |
| * Thời gian phản hồi trang trung bình (Average Page Load Time): 1.18s          |
| * Khả năng chịu tải đồng thời (Concurrent Sessions): 200 người dùng            |
| * Tỷ lệ xử lý thành công giao dịch đặt hàng: 99.6%                             |
| * Tỷ lệ khắc phục lỗi phát sinh (Defect Resolution Rate): 24/25 lỗi (96%)     |
| * Điểm đánh giá mức độ hài lòng người dùng (CSAT): 4.6 / 5.0                   |
+---------------------------------------------------------------------------------+

Kịch bản kiểm thử bao gồm: Xác thực dữ liệu form đăng ký, chuyển đổi trạng thái đơn hàng (Mới tiếp nhận $\rightarrow$ Đang xử lý $\rightarrow$ Đang giao $\rightarrow$ Đã hoàn thành), bảo toàn tính đúng đắn của số lượng hàng tồn kho khi hủy đơn, và phân quyền ngăn chặn tài khoản thường truy cập khu vực /admin.

Kết quả đạt được

Hệ thống đã triển khai thành công các giao diện chức năng chính:

  1. Trang chủ: Banner giới thiệu sản phẩm nổi bật, tin khuyến mại, phân loại giày theo danh mục (Giày lười, Giày thể thao, Giày công sở).
  2. Trang sản phẩm & Chi tiết: Hiển thị hình ảnh độ phân giải cao, thông số kỹ thuật, xuất xứ, lựa chọn size giày và số lượng mua.
  3. Trang giỏ hàng & Thanh toán: Tự động tính phí vận chuyển, hiển thị tổng tiền, tiếp nhận thông tin người nhận hàng chính xác.
  4. Trang quản trị (Admin Dashboard): Bảng điều khiển thêm/sửa/xóa sản phẩm, duyệt đơn đặt hàng, quản lý người dùng, thống kê doanh thu và sản phẩm bán chạy nhất.

Đổi mới và đóng góp

Đề tài mang lại nhiều đóng góp về mặt kỹ thuật và giá trị thực tiễn cho bài toán bán lẻ:

  • Tối ưu hóa quản lý biến thể giày dép: Xây dựng cơ chế liên kết sản phẩm đa thuộc tính (Size và Tồn kho) trực tiếp vào quan hệ Product - OrderDetail, loại bỏ sự cồng kềnh của các hệ thống CMS thương mại như Magento hay WooCommerce.
  • Tiết kiệm tài nguyên máy chủ: Kiến trúc PHP thuần (Core PHP/OOP) kết hợp MySQL giúp mã nguồn đạt độ nhẹ tối đa (dung lượng source code dưới 50MB), tốc độ thực thi nhanh hơn 35% so với các CMS nguồn mở nặng nề khi chạy trên cùng cấu hình phần cứng.
  • Tự động hóa chuỗi giá trị: Giảm thiểu 75% thời gian tạo đơn và xử lý hóa đơn cho nhân viên cửa hàng; triệt tiêu 100% tình trạng nhầm lẫn đơn giá do cập nhật giá bán tức thời vào CSDL tập trung.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng

Nền tảng được chuyển giao và tích hợp trực tiếp vào mô hình kinh doanh của chuỗi cửa hàng OLA Shop:

  • Kịch bản khách hàng: Người dùng truy cập website qua điện thoại hoặc máy tính, tìm kiếm giày nam theo size mong muốn, thêm vào giỏ hàng, nhập địa chỉ nhận hàng và hoàn tất đặt hàng trong chưa đầy 2 phút.
  • Kịch bản nhân viên/chủ cửa hàng: Nhân viên nhận thông báo đơn hàng mới trên hệ thống Admin, kiểm tra số lượng tồn kho theo size, xuất phiếu giao hàng và chuyển trạng thái đơn sang đơn vị vận chuyển.

Hướng dẫn triển khai (Deployment Guide)

+-----------------------------------------------------------------------------------+
|                        QUY TRÌNH TRIỂN KHAI TRÊN MÁY CHỦ                          |
+-----------------------------------------------------------------------------------+
| Bước 1: Cài đặt môi trường XAMPP Server (PHP 8.x, Apache 2.4, MariaDB/MySQL).      |
| Bước 2: Sao chép toàn bộ mã nguồn vào thư mục `htdocs/olashop`.                   |
| Bước 3: Truy cập `phpMyAdmin`, tạo cơ sở dữ liệu `db_olashop` với Collation       |
|         `utf8mb4_unicode_ci`.                                                     |
| Bước 4: Nhập (Import) tập tin `database.sql` vào cơ sở dữ liệu vừa tạo.            |
| Bước 5: Cấu hình kết nối cơ sở dữ liệu trong file cấu hình (`config.php`):        |
|         define('DB_HOST', 'localhost'); define('DB_USER', 'root');                |
|         define('DB_PASS', ''); define('DB_NAME', 'db_olashop');                   |
| Bước 6: Khởi động Apache & MySQL trên XAMPP Control Panel và truy cập trình duyệt |
|         tại địa chỉ `http://localhost/olashop`.                                   |
+-----------------------------------------------------------------------------------+

Phân tích hiệu quả kinh tế (ROI)

Với chi phí đầu tư ban đầu ước tính khoảng 10–15 triệu VNĐ cho hạ tầng phần cứng và triển khai hệ thống, OLA Shop tiết kiệm được khoảng 8.000.000 VNĐ/tháng chi phí in ấn tài liệu tiếp thị, sổ sách và giảm tải 1 nhân sự trực kiểm kho thủ công. Thời gian hoàn vốn (Payback Period) ước tính chỉ mất 3.5 đến 4 tháng vận hành.


Hạn chế và hướng phát triển

Dù đạt được toàn bộ mục tiêu đề ra, hệ thống vẫn còn một số điểm cần tiếp tục hoàn thiện:

  • Hạn chế: Giao diện người dùng còn mang tính cơ bản, chưa tối ưu hiệu ứng hình ảnh chuyển động; hệ thống chưa tích hợp cổng thanh toán trực tuyến tự động qua thẻ ATM/Visa/Mastercard và ví điện tử (MoMo, VNPay, ZaloPay).
  • Hướng phát triển:
    • Tích hợp API cổng thanh toán VNPay/MoMo và API tính cước vận chuyển tự động của các đơn vị logistics (Giao Hàng Nhanh, Giao Hàng Tiết Kiệm).
    • Xây dựng thuật toán gợi ý sản phẩm thông minh (Recommendation System) dựa trên lịch sử xem hàng của người dùng.
    • Phát triển ứng dụng di động (Mobile App) đồng bộ dữ liệu thông qua RESTful API.

Đối tượng hưởng lợi

  • Sinh viên ngành Công nghệ Thông tin: Nắm vững phương pháp luận phân tích thiết kế hệ thống từ biểu đồ Use Case, Sequence Diagram, Class Diagram đến hiện thực hóa CSDL quan hệ.
  • Lập trình viên Web: Tham khảo kiến trúc triển khai giỏ hàng, phân quyền người dùng (Role-Based Access Control) và kỹ thuật quản lý phiên làm việc trong PHP/MySQL.
  • Chủ doanh nghiệp/Cửa hàng bán lẻ: Sở hữu giải pháp chuyển đổi số mô hình bán lẻ với chi phí tối ưu, giảm thiểu sai sót vận hành và nâng cao năng lực tiếp cận thị trường.
  • Nhà nghiên cứu: Cung cấp dữ liệu thực nghiệm về mô hình số hóa bán lẻ quy mô vừa và nhỏ tại thị trường Việt Nam.

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

  1. Yêu cầu phần cứng và phần mềm tối thiểu để cài đặt website là gì? Hệ thống yêu cầu máy chủ/máy tính chạy hệ điều hành Windows 10/11 hoặc Linux (Ubuntu Server), RAM tối thiểu 4GB, dung lượng đĩa trống 2GB, cài đặt gói XAMPP 8.0+ tích hợp sẵn Apache, PHP 8.x và MySQL/MariaDB.

  2. Hệ thống xử lý tình trạng xung đột tồn kho khi nhiều khách hàng cùng mua một đôi giày size cuối cùng như thế nào? Hệ thống kiểm tra lại số lượng tồn kho QuantityInStock tại thời điểm bấm "Xác nhận đặt hàng". Thao tác trừ kho được bao bọc trong một Database Transaction với cơ chế khóa dòng (Row-level Locking) của MySQL InnoDB để ngăn chặn tình trạng ghi đè (Race Condition).

  3. Làm thế nào để tích hợp thêm các cổng thanh toán điện tử như VNPay hoặc ZaloPay trong tương lai? Nhờ cấu trúc mã nguồn dạng mô-đun, lập trình viên chỉ cần tạo thêm Controller xử lý thanh toán (Payment Controller), gọi API tạo yêu cầu thanh toán từ cổng trung gian và thiết lập Webhook tiếp nhận kết quả phản hồi (IPN URL) để tự động cập nhật trạng thái đơn hàng trong bảng Order.

  4. Trang web bảo vệ thông tin mật khẩu của khách hàng và quản trị viên bằng cách nào? Mật khẩu người dùng được băm một chiều (One-way Hashing) bằng thuật toán an toàn như Bcrypt (password_hash() trong PHP) trước khi lưu vào cơ sở dữ liệu. Mật khẩu không bao giờ được lưu trữ dưới dạng văn bản thuần (Plain Text).

  5. Chi phí duy trì và khả năng mở rộng của hệ thống khi lượng truy cập tăng đột biến ra sao? Khi chuyển từ môi trường cục bộ lên máy chủ đám mây (Cloud VPS), chi phí duy trì chỉ từ 150.000 – 300.000 VNĐ/tháng. Khi lượng truy cập tăng cao, hệ thống có thể mở rộng bằng cách nâng cấp gói tài nguyên VPS, bật bộ nhớ đệm Memcached/Redis và sử dụng mạng phân phối nội dung (CDN) cho hình ảnh sản phẩm.


Kết luận

Đề tài tốt nghiệp “Xây dựng Website bán giày dép” của sinh viên Nhữ Trung Đức đã giải quyết trọn vẹn và khoa học bài toán chuyển đổi số mô hình kinh doanh cho chuỗi cửa hàng thời trang OLA Shop. Bằng việc kết hợp chặt chẽ giữa khảo sát thực tế, phân tích thiết kế hệ thống theo chuẩn công nghệ thông tin và hiện thực hóa trên nền tảng PHP - MySQL, đề tài đã chứng minh được tính khả thi kỹ thuật, hiệu quả kinh tế và giá trị ứng dụng thực tiễn cao. Đây là nền tảng vững chắc để tiếp tục nâng cấp hệ sinh thái thương mại điện tử đa kênh (Omnichannel) hiện đại trong tương lai.