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 bối cảnh khoa học công nghệ phát triển mạnh mẽ, Công nghệ thông tin đóng vai trò là động lực thúc đẩy tăng trưởng kinh tế, nâng cao năng suất lao động và đổi mới phương thức hoạt động của xã hội. Cùng với đó, thương mại điện tử tại Việt Nam đang trở thành lĩnh vực nhận được sự quan tâm nghiên cứu và đầu tư lớn từ các tổ chức và doanh nghiệp nhằm tối ưu hóa hoạt động kinh doanh.
Website bán hàng trực tuyến mang lại nhiều lợi ích thiết thực cho doanh nghiệp như: quảng bá thương hiệu liên tục 24/24 trên môi trường mạng toàn cầu, cắt giảm chi phí nhân sự tiếp thị, thu thập phản hồi của khách hàng nhanh chóng, hỗ trợ quản lý - thống kê dữ liệu và mở rộng liên kết hợp tác. Đối với người tiêu dùng, hệ thống thương mại điện tử giúp tiết kiệm thời gian, công sức và chi phí thông qua việc tìm kiếm, lựa chọn sản phẩm chi tiết và đặt hàng giao tận nơi. Nhằm đáp ứng nhu cầu thực tiễn đó, tác giả lựa chọn thực hiện đề tài "Phát triển website quản lý bán hàng thời trang Sober".
Mục tiêu và nhiệm vụ nghiên cứu
Đề tài xác định các mục tiêu và nhiệm vụ cụ thể sau:
- Xây dựng chương trình phần mềm hỗ trợ doanh nghiệp và chủ cửa hàng giới thiệu, phân phối sản phẩm thời trang đến người tiêu dùng qua môi trường web.
- Cung cấp nền tảng mua sắm trực tuyến thuận tiện cho khách hàng với các thao tác đơn giản trên thiết bị kết nối Internet.
- Nghiên cứu và làm rõ quy trình nghiệp vụ quản lý bán hàng qua mạng.
- Tối ưu hóa các chương trình quản lý thông tin sản phẩm, đơn hàng, khách hàng và tích hợp công cụ tương tác trực tiếp (chat) giữa cửa hàng với người mua.
Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Quy trình phân tích, thiết kế và xây dựng hệ thống website thương mại điện tử phục vụ quản lý và bán lẻ các mặt hàng thời trang.
- Khách hàng mục tiêu: Giới trẻ (bao gồm cả nam và nữ) có sở thích về phong cách thời trang thể thao.
- Phạm vi không gian: Triển khai áp dụng cho toàn bộ các tỉnh, thành phố trên lãnh thổ Việt Nam.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và công nghệ áp dụng
Hệ thống được xây dựng trên nền tảng kiến trúc ứng dụng web hiện đại sử dụng bộ công nghệ JavaScript toàn diện kết hợp hệ quản trị cơ sở dữ liệu hướng tài liệu:
-
Cơ sở dữ liệu NoSQL và MongoDB:
- NoSQL là mô hình cơ sở dữ liệu phi quan hệ (Non-Relational), không áp đặt ràng buộc khóa chính/khóa ngoại nghiêm ngặt giữa các bảng (Collection), tối ưu hóa lưu trữ phân tán và truy vấn theo cặp key - value.
- MongoDB là hệ quản trị cơ sở dữ liệu mã nguồn mở lưu trữ dữ liệu dưới dạng Document (tương đương cấu trúc JSON/BSON). Hỗ trợ cơ chế sharding tự động để mở rộng theo chiều ngang (horizontal scaling) và đánh chỉ mục (indexing) giúp tối ưu hiệu năng truy vấn.
-
Nền tảng Back-end (Node.js & ExpressJS):
- Node.js: Môi trường thực thi JavaScript đa nền tảng phía máy chủ, chạy trên Chrome V8 JavaScript engine (viết bằng C++), hoạt động theo mô hình hướng sự kiện (event-driven), bất đồng bộ (asynchronous) và non-blocking I/O.
- ExpressJS: Web framework tối giản trên nền Node.js, cung cấp hệ thống định tuyến (Routing) qua các HTTP method (GET, POST, PUT, DELETE) cùng kiến trúc chuỗi Middleware (Application-level, Router-level, Error-handling, Built-in, Third-party) để xử lý các đối tượng request (
req), response (res) và điều hướng next().
-
Giao diện Front-end (ReactJS):
- Thư viện giao diện người dùng mã nguồn mở do Facebook phát triển, ứng dụng cơ chế Virtual DOM (DOM ảo) để so sánh (diffing) và chỉ cập nhật các phần tử DOM thực tế có thay đổi.
- Sử dụng cú pháp mở rộng JSX (JavaScript XML) và mô hình luồng dữ liệu một chiều (one-way data flow) từ cha xuống con (parent-to-child) nhằm tăng độ an toàn và tái sử dụng Component.
-
Giao tiếp thời gian thực (Socket.io):
- Module mạng hỗ trợ giao tiếp hai chiều (bi-directional) theo thời gian thực giữa Client và Server.
- Cơ chế hoạt động dựa trên Engine.io, tự động khởi tạo kết nối từ HTTP long-polling và nâng cấp lên WebSocket, hỗ trợ truyền tải dữ liệu nhị phân (ArrayBuffer, Blob, Buffer) và tính năng tự động kết nối lại (auto-reconnect).
So sánh cơ sở dữ liệu NoSQL với RDBMS
| Tiêu chí đánh giá |
Cơ sở dữ liệu quan hệ (RDBMS) |
Cơ sở dữ liệu NoSQL |
| Đánh chỉ mục dữ liệu lớn, phân trang, media |
Bộc lộ nhiều điểm yếu kém |
Thực hiện tốt |
| Mô hình dữ liệu |
Dạng bảng (Table) cố định |
Key/Value, Column-based, Document-based, Graph-based |
| Yêu cầu phần cứng khi mở rộng dữ liệu |
Đòi hỏi máy chủ cấu hình rất cao |
Tận dụng phần cứng phân tán với cấu hình tiêu chuẩn |
| Cách lấy dữ liệu từ client |
Thông qua chuỗi kết nối và truy vấn SQL |
Thông qua hệ thống API |
| Hiệu suất xử lý liên bảng |
Giảm khi dữ liệu lớn và ràng buộc phức tạp |
Tối ưu do bỏ qua ràng buộc quan hệ chặt chẽ |
| Khả năng mở rộng (Scaling) |
Bị giới hạn về số lượng node |
Hỗ trợ mở rộng cụm node lớn |
| Tương thích điện toán đám mây |
Khó tích hợp mở rộng linh hoạt |
Rất phù hợp với môi trường Cloud (như Amazon EC2) |
| Hiệu suất đọc/ghi |
Hạn chế khi tải đọc/ghi đồng thời cực lớn |
Rất tốt với mô hình xử lý theo lô (batch) và ghi dữ liệu lớn |
| Thay đổi số node trong hệ thống |
Phải tạm dừng (shutdown) toàn bộ hệ thống |
Thực hiện trực tiếp, không làm gián đoạn hệ thống |
| Hỗ trợ lập trình hướng đối tượng |
Cần lớp ánh xạ trung gian (ORM/Kém) |
Tương thích cao với đối tượng dữ liệu |
| Mức độ hỗ trợ công cụ/chuẩn hóa |
Đã phát triển lâu năm, hỗ trợ toàn diện |
Chưa đồng nhất, mỗi hệ thống dùng API riêng |
Tương quan khái niệm giữa RDBMS và MongoDB
| Khái niệm trong RDBMS |
Khái niệm tương đương trong MongoDB |
| Database |
Database |
| Table |
Collection |
| Tuple / Row / Record |
Document |
| Column / Field |
Field |
| Table Join |
Embedded Document (Tài liệu nhúng) |
| Primary Key |
Primary Key (Thuộc tính mặc định _id) |
Phương pháp nghiên cứu và nguồn dữ liệu
- Phương pháp phân tích và thiết kế hệ thống: Sử dụng ngôn ngữ mô hình hóa thống nhất (UML) để xây dựng biểu đồ hoạt động (Activity Diagram), biểu đồ ca sử dụng (Use Case Diagram), biểu đồ tuần tự (Sequence Diagram) và mô hình thực thể liên kết (ERD).
- Phương pháp phát triển phần mềm: Thiết kế giao diện người dùng, lập trình xây dựng API RESTful, cấu hình cơ sở dữ liệu MongoDB và tích hợp cổng thanh toán trực tuyến.
- Nguồn dữ liệu: Dữ liệu thử nghiệm về danh mục, sản phẩm thời trang, đơn đặt hàng và tài khoản người dùng được tạo lập phục vụ kiểm thử hệ thống.
Thiết kế và triển khai hệ thống
Phân tích ca sử dụng (Use Case Analysis)
Hệ thống phân quyền cho hai tác nhân (Actor) chính gồm Khách hàng (User/Customer) và Quản trị viên (Admin):
- Phân hệ Khách hàng: Đăng ký tài khoản, đăng nhập, tìm kiếm sản phẩm, xem chi tiết sản phẩm, quản lý giỏ hàng (thêm, sửa số lượng, xóa sản phẩm khỏi giỏ), tiến hành đặt hàng, thanh toán qua cổng ZaloPay, đăng ký nhận tin (subscribers).
- Phân hệ Quản trị viên (Admin Dashboard): Đăng nhập quản trị, quản lý danh mục sản phẩm (thêm, cập nhật, xóa danh mục), quản lý sản phẩm (thêm sản phẩm mới, cập nhật thông tin, xóa sản phẩm), quản lý đơn đặt hàng của khách hàng và quản lý danh sách subscribers.
Mô hình hóa luồng xử lý bằng biểu đồ UML
Báo cáo xây dựng hệ thống biểu đồ chi tiết bao gồm:
- Biểu đồ hoạt động (Activity Diagram):
- Biểu đồ hoạt động chức năng thêm/xóa/sửa giỏ hàng.
- Biểu đồ hoạt động chức năng thêm/xóa/sửa sản phẩm.
- Biểu đồ hoạt động chức năng thêm/xóa/sửa danh mục sản phẩm.
- Biểu đồ hoạt động chức năng tìm kiếm sản phẩm.
- Biểu đồ hoạt động chức năng đặt hàng.
- Biểu đồ ca sử dụng (Use Case Diagram):
- Biểu đồ ca sử dụng tổng quát của toàn hệ thống.
- Biểu đồ ca sử dụng khách hàng tìm kiếm sản phẩm.
- Biểu đồ ca sử dụng khách hàng thanh toán.
- Biểu đồ ca sử dụng thêm sản phẩm vào giỏ hàng.
- Biểu đồ ca sử dụng quản lý danh mục sản phẩm.
- Biểu đồ ca sử dụng quản lý đơn hàng.
- Biểu đồ ca sử dụng quản lý sản phẩm.
- Biểu đồ tuần tự (Sequence Diagram):
- Biểu đồ tuần tự quy trình đăng nhập và đăng ký tài khoản.
- Biểu đồ tuần tự tìm kiếm sản phẩm.
- Biểu đồ tuần tự thao tác giỏ hàng: thêm sản phẩm, cập nhật số lượng, xóa sản phẩm khỏi giỏ.
- Biểu đồ tuần tự quản lý danh mục: thêm, cập nhật, xóa danh mục sản phẩm.
- Biểu đồ tuần tự quản lý sản phẩm: thêm mới, cập nhật thông tin, xóa sản phẩm.
- Biểu đồ tuần tự quy trình thanh toán đơn hàng từ giỏ hàng và tích hợp thanh toán trực tuyến qua cổng ZaloPay.
Thiết kế cơ sở dữ liệu
Hệ thống tổ chức dữ liệu theo mô hình phi quan hệ trên MongoDB:
- Thiết kế mức logic: Định nghĩa cấu trúc các Collection và các Document chứa các cặp
key: value, sử dụng tài liệu nhúng (Embedded Document) và mảng đối tượng để lưu trữ chi tiết đơn hàng, giỏ hàng thay cho các phép kết nối (Join) bảng phức tạp.
- Thiết kế mức vật lý: Cài đặt cấu trúc lưu trữ trên MongoDB, tự động sinh khóa chính
_id cho mỗi Document, tối ưu hóa các trường dữ liệu phục vụ tìm kiếm và quản lý trạng thái đơn hàng.
Thiết kế giao diện người dùng
Hệ thống xây dựng đầy đủ các màn hình giao diện phục vụ vận hành:
- Giao diện phía khách hàng: Giao diện trang chủ (Home), trang danh mục sản phẩm, trang xem chi tiết sản phẩm, trang giỏ hàng, trang đăng ký, trang đăng nhập và User Dashboard.
- Giao diện phía quản trị (Admin Dashboard): Màn hình tổng quan Admin Dashboard, trang quản lý sản phẩm, trang thêm mới sản phẩm, trang sửa thông tin sản phẩm, trang quản lý danh mục sản phẩm, trang sửa danh mục sản phẩm, trang quản lý danh sách đơn hàng và trang quản lý subscribers.
Nội dung chính theo từng chương
Chương 1. Tổng quan về đề tài
- Trình bày tính cấp thiết của việc ứng dụng công nghệ thông tin và thương mại điện tử trong hoạt động kinh doanh bán lẻ thời trang.
- Xác định mục tiêu đề tài nhằm xây dựng website bán hàng thời trang Sober hỗ trợ tìm kiếm sản phẩm, quản lý giỏ hàng, đặt hàng trực tuyến và hỗ trợ quản trị bán hàng.
- Nêu rõ phạm vi phục vụ khách hàng trẻ tuổi yêu thích trang phục thể thao trên phạm vi toàn quốc.
Chương 2. Cơ sở dữ liệu NoSQL
- Khái quát về cơ sở dữ liệu NoSQL: Phân tích các ưu điểm về mã nguồn mở, khả năng mở rộng máy chủ linh hoạt theo chiều ngang, tính thích ứng cao với điện toán đám mây và hạn chế về tính đồng nhất chuẩn API.
- So sánh chi tiết giữa cơ sở dữ liệu quan hệ (RDBMS) và NoSQL trên 11 tiêu chí kỹ thuật.
- Trình bày kiến trúc và các khái niệm cốt lõi của MongoDB (Database, Collection, Document, Field,
_id, Embedded Document) cùng các tính năng sharding và tối ưu chỉ mục.
- Giới thiệu web framework ExpressJS: Cách thiết lập Routing qua HTTP methods, xử lý tham số đường dẫn (Route parameters như
/customer/:customerId qua req.params), cấu trúc 5 loại hàm Middleware và điều hướng với next().
- Giới thiệu thư viện ReactJS: Phân tích cơ chế hoạt động của Virtual DOM, tính năng biên dịch tối ưu của JSX, mô hình luồng dữ liệu một chiều và các ưu nhược điểm khi xây dựng Single Page Application.
- Trình bày nền tảng Node.js: Động cơ biên dịch Chrome V8, kiến trúc non-blocking I/O, các nhóm ứng dụng điển hình (RESTful API, Real-time, Chat, Cloud, SPA, CLI) và các ưu nhược điểm khi phát triển back-end.
- Phân tích module Socket.io: Cơ chế giao tiếp thời gian thực hai chiều thay thế các kỹ thuật truyền thống (AJAX, long-polling, short-polling), khả năng tự động kết nối lại và hỗ trợ truyền dữ liệu nhị phân.
Chương 3. Phân tích và thiết kế hệ thống
- Xây dựng 5 biểu đồ hoạt động mô tả chi tiết quy trình nghiệp vụ cho các chức năng: giỏ hàng, sản phẩm, danh mục, tìm kiếm và đặt hàng.
- Thiết lập 7 biểu đồ ca sử dụng phân định rõ quyền hạn và tương tác của Khách hàng và Quản trị viên.
- Xây dựng hệ thống 14 biểu đồ tuần tự chi tiết hóa tương tác giữa Actor, giao diện Front-end, bộ điều khiển Back-end ExpressJS, cơ sở dữ liệu MongoDB và cổng thanh toán ZaloPay.
- Thiết kế mô hình thực thể liên kết (ERD), cấu trúc cơ sở dữ liệu mức logic và mức vật lý trên MongoDB.
- Trình bày chi tiết bố cục và thiết kế của 15 màn hình giao diện người dùng và quản trị hệ thống.
Kết quả và đóng góp
Kết quả đạt được
- Hoàn thành thiết kế và xây dựng website quản lý bán hàng thời trang Sober với đầy đủ các phân hệ chức năng cho người mua và người quản lý.
- Xây dựng thành công hệ thống API định tuyến bằng ExpressJS và kết nối cơ sở dữ liệu MongoDB xử lý dữ liệu dạng Document.
- Xây dựng giao diện tương tác phía người dùng bằng ReactJS hỗ trợ hiển thị danh mục, chi tiết sản phẩm, quản lý giỏ hàng và luồng đặt hàng.
- Tích hợp thành công mô hình biểu đồ tuần tự cho quy trình thanh toán trực tuyến qua cổng ZaloPay.
- Mô hình hóa toàn diện các luồng nghiệp vụ thông qua 26 hình vẽ và sơ đồ UML (biểu đồ hoạt động, ca sử dụng, tuần tự, ERD).
Giải pháp và kiến nghị
- Áp dụng kiến trúc NoSQL và MongoDB nhằm tối ưu tốc độ đọc ghi, giảm độ phức tạp của các liên kết khóa ngoại và tăng khả năng mở rộng dữ liệu linh hoạt khi lượng người dùng tăng cao.
- Sử dụng mô hình luồng dữ liệu một chiều và Virtual DOM của ReactJS để giảm tải thao tác trực tiếp trên DOM thực, giúp giao diện người dùng hoạt động mượt mà.
- Định hướng tích hợp module Socket.io để triển khai tính năng trò chuyện (chat) trực tiếp giữa khách hàng và bộ phận hỗ trợ của cửa hàng.
Đóng góp của đề tài
- Hệ thống hóa cơ sở lý thuyết về các công nghệ trong hệ sinh thái JavaScript (Node.js, ExpressJS, ReactJS) kết hợp NoSQL (MongoDB).
- Cung cấp tài liệu phân tích thiết kế hệ thống chi tiết cho một website thương mại điện tử chuyên ngành thời trang với đầy đủ sơ đồ UML và thiết kế giao diện thực tế.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của đề tài
- Do thời gian thực hiện còn hạn chế, tác giả chưa thể phát huy tối đa tất cả các ý tưởng và tính năng nâng cao của ngôn ngữ và kỹ thuật lập trình.
- Hệ thống cơ sở dữ liệu NoSQL với Node.js đòi hỏi kinh nghiệm quản lý cấu trúc dữ liệu chặt chẽ do thiếu ràng buộc quan hệ tự động như trong RDBMS.
- Tài liệu và các cập nhật mới của các thư viện liên quan đến ReactJS và Node.js có sự thay đổi thường xuyên, đòi hỏi việc duy trì và chuẩn hóa mã nguồn liên tục.
Hướng phát triển
- Tiếp tục hoàn thiện và phát triển thêm các chức năng nâng cao phục vụ nghiệp vụ bán hàng và quản trị chuỗi cung ứng.
- Nâng cao tính năng tương tác thời gian thực thông qua hoàn thiện module chat Socket.io trên hệ thống thực tế.
- Mở rộng khả năng chịu tải và tối ưu hóa hệ thống để phục vụ tốt hơn nhu cầu mua sắm thời trang trực tuyến trên phạm vi cả nước.
Giá trị tham khảo
- Đối tượng tham khảo: Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm đang thực hiện đồ án tốt nghiệp hoặc các đề tài môn học về xây dựng ứng dụng web thương mại điện tử. Các lập trình viên mới bắt đầu tìm hiểu về mô hình phát triển Full-stack JavaScript và cơ sở dữ liệu NoSQL.
- Phần nội dung có giá trị tham khảo cao:
- Bảng so sánh toàn diện giữa mô hình cơ sở dữ liệu quan hệ RDBMS và NoSQL, cũng như bảng đối chiếu khái niệm giữa RDBMS và MongoDB.
- Hệ thống 26 biểu đồ phân tích thiết kế UML chi tiết (đặc biệt là các biểu đồ tuần tự cho quy trình giỏ hàng, đặt hàng và tích hợp thanh toán qua ZaloPay).
- Kiến trúc phân lớp xử lý định tuyến (Routing) và cơ chế chuỗi Middleware trong ExpressJS.
Câu hỏi thường gặp
1. Đề tài lựa chọn cơ sở dữ liệu nào để lưu trữ và vì sao?
Đề tài sử dụng cơ sở dữ liệu NoSQL MongoDB. Lý do lựa chọn là MongoDB lưu trữ dữ liệu dưới dạng Document (cặp key-value tương tự JSON), không yêu cầu ràng buộc khóa chính/khóa ngoại phức tạp như RDBMS, giúp giảm tải thao tác tính toán, tối ưu tốc độ đọc/ghi, dễ dàng mở rộng máy chủ theo chiều ngang (sharding) và phù hợp với các ứng dụng web thương mại điện tử.
2. Các công nghệ chính được sử dụng để phát triển website Sober là gì?
Hệ thống sử dụng các công nghệ thuộc hệ sinh thái JavaScript và NoSQL:
- Cơ sở dữ liệu: MongoDB.
- Back-end: Node.js (môi trường thực thi V8) và ExpressJS (web framework xử lý routing và middleware).
- Front-end: ReactJS (thư viện UI sử dụng Virtual DOM và cú pháp JSX).
- Giao tiếp thời gian thực: Socket.io (hỗ trợ truyền thông 2 chiều cho tính năng thông báo và chat).
3. Phân hệ Khách hàng trên website có những chức năng chính nào?
Khách hàng có thể thực hiện các chức năng: đăng ký tài khoản, đăng nhập, tìm kiếm sản phẩm theo từ khóa, xem thông tin chi tiết sản phẩm, thao tác giỏ hàng (thêm sản phẩm, cập nhật số lượng, xóa khỏi giỏ), tiến hành đặt hàng, thanh toán trực tuyến qua cổng ZaloPay và đăng ký nhận thông tin ưu đãi (subscribers).
4. Phân hệ Quản trị viên (Admin) cung cấp các công cụ quản lý nào?
Giao diện Admin Dashboard hỗ trợ người quản trị thực hiện các nghiệp vụ CRUD:
- Quản lý danh mục sản phẩm (thêm, cập nhật thông tin, xóa danh mục).
- Quản lý thông tin sản phẩm (thêm mới sản phẩm, sửa thông tin, xóa sản phẩm).
- Quản lý danh sách các đơn đặt hàng từ người mua.
- Quản lý danh sách người dùng đăng ký nhận tin (subscribers).
5. Khóa luận thiết kế phương thức thanh toán trực tuyến nào?
Khóa luận thiết kế biểu đồ tuần tự và luồng xử lý tích hợp thanh toán điện tử thông qua cổng thanh toán ZaloPay từ màn hình giỏ hàng của người dùng.
Kết luận
Đồ án tốt nghiệp "Phát triển website quản lý bán hàng thời trang Sober" của sinh viên Nguyễn Văn Công (Khoa Công nghệ thông tin, Trường Đại học Công nghệ Đông Á) đã hoàn thành mục tiêu nghiên cứu và ứng dụng bộ công nghệ Node.js, ExpressJS, ReactJS và MongoDB vào bài toán thương mại điện tử. Tác giả đã trình bày đầy đủ cơ sở lý thuyết về cơ sở dữ liệu NoSQL, xây dựng hệ thống biểu đồ phân tích thiết kế UML chi tiết và thiết kế hoàn chỉnh giao diện cho cả người dùng và quản trị viên. Đồ án là tài liệu tham khảo có tính hệ thống cho sinh viên và lập trình viên trong việc phân tích, thiết kế và phát triển các ứng dụng web thương mại điện tử trên nền tảng Full-stack JavaScript.