Giới thiệu dự án
Trong bối cảnh bùng nổ của cuộc Cách mạng Công nghiệp 4.0 và sự chuyển dịch mạnh mẽ của nền kinh tế số tại Việt Nam, thương mại điện tử (E-Commerce) đã trở thành hạ tầng kinh doanh cốt lõi. Theo các báo cáo thị trường giai đoạn 2020–2025, tỷ lệ người tiêu dùng tiếp cận các kênh mua sắm trực tuyến tăng trưởng vượt bậc với hơn 50% dân số tham gia mua sắm online, kéo theo áp lực số hóa vận hành cho các doanh nghiệp bán lẻ và chuỗi phân phối sản phẩm công nghệ (Laptop, Điện thoại, Phụ kiện số).
Tuy nhiên, các mô hình bán lẻ truyền thống đang đối mặt với nhiều rào cản lớn:
- Chi phí vận hành mặt bằng và nhân sự cao: Doanh nghiệp phải duy trì đội ngũ tư vấn, thu ngân và điểm bán vật lý đắt đỏ tại các trục đường lớn.
- Quy trình quản lý thủ công rời rạc: Việc theo dõi tồn kho, kiểm duyệt đơn hàng và tra cứu lịch sử mua sắm bằng sổ sách hoặc file Excel đơn lẻ dẫn đến sai lệch dữ liệu, tắc nghẽn khâu xuất kho và thất thoát doanh thu.
- Trải nghiệm khách hàng hạn chế: Khách hàng gặp khó khăn trong việc tra cứu thông số kỹ thuật chi tiết, so sánh giá cả, đối chiếu đánh giá (reviews/feedbacks) đa chiều theo thời gian thực (24/7).
Nhằm giải quyết triệt để bài toán trên, đồ án tốt nghiệp chuyên ngành Công nghệ Thông tin (Viện Công nghệ Thông tin và Kinh tế số – Trường Đại học Kinh tế Quốc dân) của sinh viên Lê Thị Hiền, dưới sự hướng dẫn của ThS. Cao Thị Thu Hương, đã thực hiện đề tài: "Xây dựng hệ thống Website bán hàng online" (triển khai thực nghiệm với hệ thống phân phối thiết bị công nghệ Shop Online 247).
Mục tiêu của đề tài
- Xây dựng nền tảng Web thương mại điện tử hoạt động trên kiến trúc phân tầng chuẩn Model-View-Controller (MVC) với nền tảng Java Servlet và JSP (JavaServer Pages).
- Thiết kế và chuẩn hóa hệ cơ sở dữ liệu quan hệ (RDBMS) trên Microsoft SQL Server 2014 đảm bảo tính toàn vẹn (ACID) với 13 bảng thực thể nghiệp vụ.
- Tự động hóa chu trình bán hàng khép kín: Quản trị danh mục/sản phẩm $\rightarrow$ Đặt hàng & Xử lý giỏ hàng $\rightarrow$ Phê duyệt & Lập hóa đơn $\rightarrow$ Thống kê doanh thu & Tồn kho.
- Nâng cao trải nghiệm người dùng cuối thông qua giao diện phân loại đa cấp, bộ lọc tìm kiếm sản phẩm theo nhóm, cơ chế phản hồi/đánh giá và tính năng tra cứu đơn hàng linh hoạt.
Phương pháp tiếp cận và Phạm vi
- Phương pháp giải pháp: Ứng dụng công nghệ Java Enterprise (J2EE), tách biệt luồng xử lý Controller (
Servlet), tầng trình diễn View (JSP/HTML5/CSS3/JavaScript), kết nối dữ liệu qua JDBC tới Microsoft SQL Server 2014.
- Phạm vi triển khai: Hệ thống phục vụ 3 nhóm tác nhân chính: Khách hàng (Guest/Registered User), Nhân viên bán hàng (Staff), và Quản trị viên (Admin). Giới hạn phiên bản hiện tại tập trung vào phương thức thanh toán COD (Cash on Delivery) cùng chuyển khoản Internet Banking và biểu phí giao hàng nội thành/ngoại thành cố định.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng và Định vị yêu cầu
Bảng so sánh các giải pháp công nghệ xây dựng website thương mại điện tử:
| Tiêu chí đánh giá |
Hệ thống Java Servlet/JSP (Hệ thống đề xuất) |
Nền tảng CMS đóng gói (WordPress/WooCommerce) |
Kiến trúc Monolithic PHP/MySQL tự dựng |
| Hiệu năng xử lý & Đa luồng |
Rất cao (Java Multi-threading, JVM tối ưu bộ nhớ) |
Trung bình (Tắc nghẽn khi cài nhiều plugins) |
Trung bình (PHP đơn luồng trên tiến trình Apache) |
| Tính an toàn & Bảo mật |
Cao (Kiểm soát chặt Type-safety, Session, PreparedStatements) |
Thấp - Trung bình (Dễ bị lộ lỗ hổng từ plugin bên thứ 3) |
Trung bình (Phụ thuộc vào kỹ thuật lập trình thủ công) |
| Khả năng mở rộng (Scalability) |
Rất tốt (Dễ module hóa sang Spring Boot/Microservices) |
Khó mở rộng kiến trúc chuyên sâu |
Khá phức tạp khi tái cấu trúc core |
| Chi phí bản quyền & Vận hành |
Tối ưu (Sử dụng hệ sinh thái mã nguồn mở Java/Apache) |
Chi phí license plugin/theme cao |
Tối ưu chi phí ban đầu |
Phân loại yêu cầu hệ thống theo mô hình MoSCoW:
- Must have (Bắt buộc): Xác thực tài khoản đa quyền (Admin/Staff/Customer), Quản lý CRUD Danh mục - Nhóm - Sản phẩm, Giỏ hàng động (
HttpSession), Module tạo và duyệt đơn hàng, Lưu trữ thông tin nhận hàng (NGUOINHAN).
- Should have (Nên có): Báo cáo thống kê doanh thu theo mốc thời gian/danh mục, Lọc sản phẩm bán chạy/sản phẩm mới, Hệ thống đánh giá & phản hồi sản phẩm có kiểm duyệt.
- Could have (Có thể có): Cơ chế tích điểm thành viên (
DIEMMUAHANG), Quản lý chương trình khuyến mãi theo khoảng thời gian (KHUYENMAI).
- Won't have (Tạm hoãn): Tích hợp cổng thanh toán trực tuyến qua Visa/Mastercard tự động (Payment Gateway API) và định vị đơn hàng thời gian thực qua GPS.
Thiết kế kiến trúc hệ thống
Hệ thống được thiết kế theo mô hình MVC (Model - View - Controller) hướng đối tượng:
+-------------------------------------------------------+
| Client Browser |
+-------------------------------------------------------+
| HTTP Request ^ HTTP Response
v (JSP / HTML / CSS / JS) | (Rendered HTML)
+-------------------------------------------------------+
| Web Container (Apache Tomcat) |
| |
| [Controller Layer] |
| - HttpServlet (ProductServlet, OrderServlet, v.v.) |
| - Request Dispatcher / Session Management |
+-------------------------------------------------------+
| ^
Invokes DAO Logic | | Returns JavaBean / Models
v |
+-------------------------------------------------------+
| [Model Layer] |
| - Business Logic & Data Access Object (DAO) |
| - DTO / Entities (Product, Customer, Order, Invoice) |
+-------------------------------------------------------+
| JDBC Driver
v
+-------------------------------------------------------+
| Database Server (MS SQL Server 2014) |
+-------------------------------------------------------+
Ngăn xếp công nghệ (Technology Stack)
- Hệ điều hành máy chủ: Windows Server / Linux Ubuntu LTS.
- Môi trường phát triển: Eclipse IDE for Java EE Developers (J2EE Mars/Neon).
- Ngôn ngữ lập trình & Framework: Java EE 7 (Servlet API 3.1, JSP 2.3), JSTL 1.2.
- Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2014 Enterprise Edition.
- Frontend Engine: HTML5, CSS3, JavaScript (ES5/ES6), thư viện jQuery 3.x, Responsive Grid.
- Web Server / Servlet Container: Apache Tomcat v8.5 / v9.0.
Thiết kế cơ sở dữ liệu quan hệ (Database Design)
Cơ sở dữ liệu bao gồm 13 thực thể chuẩn hóa đạt dạng chuẩn 3 (3NF), loại bỏ hoàn toàn hiện tượng dư thừa và dị thường dữ liệu (Anomalies):
-- DDL trích xuất cấu trúc các bảng cốt lõi của hệ thống
CREATE TABLE NHANVIEN (
MANV VARCHAR(10) PRIMARY KEY,
HOTENNV NVARCHAR(50) NOT NULL,
NGAYSINHNV DATETIME NULL,
GIOITINHNV CHAR(1) NULL,
DIACHINV NVARCHAR(100) NULL,
SODTNV VARCHAR(15) NULL,
TENDNNV VARCHAR(20) UNIQUE NOT NULL,
MATKHAUNV VARCHAR(200) NOT NULL
);
CREATE TABLE SANPHAM (
MASP VARCHAR(10) PRIMARY KEY,
MADM VARCHAR(10) NOT NULL,
TENSP NVARCHAR(50) NOT NULL,
GIASP MONEY NOT NULL,
MOTASP NVARCHAR(1000) NULL,
XUATXU NVARCHAR(50) NULL,
DONVITINH NVARCHAR(10) NULL,
HINHANH VARCHAR(200) NULL,
SOLUONG INT NOT NULL DEFAULT 0,
CONSTRAINT FK_SANPHAM_DANHMUC FOREIGN KEY (MADM) REFERENCES DANHMUCSP(MADM)
);
CREATE TABLE DONHANG (
MADH VARCHAR(10) PRIMARY KEY,
MAKH VARCHAR(20) NOT NULL,
NGAYDH DATETIME DEFAULT GETDATE(),
TINHTRANG INT NOT NULL, -- 0: Chờ duyệt, 1: Đã duyệt, 2: Đang giao, 3: Hoàn thành, 4: Hủy
TONGTIEN MONEY NOT NULL,
CONSTRAINT FK_DONHANG_KHACHHANG FOREIGN KEY (MAKH) REFERENCES KHACHHANG(MAKH)
);
CREATE TABLE CT_DONHANG (
MADH VARCHAR(10) NOT NULL,
MASP VARCHAR(10) NOT NULL,
SOLUONG INT NOT NULL,
THANHTIEN MONEY NOT NULL,
PRIMARY KEY (MADH, MASP),
CONSTRAINT FK_CTDH_DONHANG FOREIGN KEY (MADH) REFERENCES DONHANG(MADH),
CONSTRAINT FK_CTDH_SANPHAM FOREIGN KEY (MASP) REFERENCES SANPHAM(MASP)
);
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển phần mềm Thác nước cải tiến (Iterative Waterfall Model) chia làm 4 giai đoạn cụ thể:
- Giai đoạn 1 (Tuần 1 - Tuần 3): Khảo sát nghiệp vụ bán lẻ thực tế, xác định biểu đồ luồng dữ liệu (DFD mức ngữ cảnh, DFD mức đỉnh, DFD mức dưới đỉnh).
- Giai đoạn 2 (Tuần 4 - Tuần 6): Thiết kế sơ đồ quan hệ thực thể (ERD), thiết lập quan hệ khóa ngoại (Foreign Keys) trên MS SQL Server 2014, xây dựng mockup giao diện UI.
- Giai đoạn 3 (Tuần 7 - Tuần 11): Lập trình module Controller (Servlet), xây dựng view tương tác JSP/JavaScript, kiểm thử tích hợp kết nối JDBC.
- Giai đoạn 4 (Tuần 12 - Tuần 14): UAT (User Acceptance Testing), tối ưu hóa câu truy vấn SQL Server, lập báo cáo và tài liệu kỹ thuật.
Implementation và kết quả
Quy trình phát triển và Thuật toán xử lý lõi
Tầng điều khiển trung tâm được điều phối bởi các Java Servlet. Khi nhận yêu cầu từ client, HttpServletRequest sẽ phân giải các tham số, xử lý nghiệp vụ thông qua DAO và chuyển tiếp dữ liệu đến JSP thông qua RequestDispatcher.
1. Thuật toán điều hướng và kiểm soát phiên mua hàng (Session Cart Controller)
package controller;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.CartItem;
import model.Product;
import dao.ProductDAO;
@WebServlet("/CartController")
public class CartController extends HttpServlet {
private static final long serialVersionUID = 1L;
private ProductDAO productDAO = new ProductDAO();
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
HttpSession session = request.getSession();
@SuppressWarnings("unchecked")
Map<String, CartItem> cart = (Map<String, CartItem>) session.getAttribute("cart");
if (cart == null) {
cart = new HashMap<>();
}
if ("add".equalsIgnoreCase(action)) {
String productID = request.getParameter("masp");
int quantity = Integer.parseInt(request.getParameter("quantity"));
Product p = productDAO.getProductByID(productID);
if (p != null && p.getSoluong() >= quantity) {
if (cart.containsKey(productID)) {
CartItem currentItem = cart.get(productID);
currentItem.setQuantity(currentItem.getQuantity() + quantity);
} else {
cart.put(productID, new CartItem(p, quantity));
}
session.setAttribute("cart", cart);
response.sendRedirect("cart.jsp?status=success");
} else {
response.sendRedirect("product-detail.jsp?masp=" + productID + "&error=outofstock");
}
} else if ("delete".equalsIgnoreCase(action)) {
String productID = request.getParameter("masp");
cart.remove(productID);
session.setAttribute("cart", cart);
response.sendRedirect("cart.jsp");
}
}
}
2. Trích xuất giao diện động JSP hiển thị dữ liệu sản phẩm
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<div class="product-grid-container">
<c:forEach var="item" items="${listProduct}">
<div class="product-card">
<div class="product-image">
<img src="images/${item.hinhanh}" alt="${item.tensp}" />
</div>
<div class="product-info">
<h3 class="product-title">${item.tensp}</h3>
<p class="product-price">
<fmt:formatNumber value="${item.giasp}" type="currency" currencySymbol="₫" />
</p>
<p class="product-stock">Còn lại: <strong>${item.soluong}</strong> ${item.donvitinh}</p>
<form action="CartController" method="POST">
<input type="hidden" name="action" value="add" />
<input type="hidden" name="masp" value="${item.masp}" />
<input type="number" name="quantity" value="1" min="1" max="${item.soluong}" />
<button type="submit" class="btn-buy">Thêm vào giỏ</button>
</form>
</div>
</div>
</c:forEach>
</div>
3. Kỹ thuật truy vấn xử lý nghiệp vụ và Thống kê trên MS SQL Server 2014
Xử lý giao dịch đặt hàng đảm bảo tính toàn vẹn (ACID Transaction) và cập nhật số lượng tồn kho tự động:
CREATE PROCEDURE sp_CheckoutOrder
@MaDH VARCHAR(10),
@MaKH VARCHAR(20),
@TongTien MONEY
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION;
BEGIN TRY
-- Chèn thông tin đơn hàng tổng quát
INSERT INTO DONHANG (MADH, MAKH, NGAYDH, TINHTRANG, TONGTIEN)
VALUES (@MaDH, @MaKH, GETDATE(), 0, @TongTien);
-- Xác nhận thành công
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
THROW;
END CATCH
END;
Kiểm thử và Đánh giá chất lượng (Testing & Validation)
Hệ thống trải qua các kịch bản kiểm thử toàn diện (Unit Test, Integration Test, Stress Test):
| Kịch bản kiểm thử (Test Case) |
Điều kiện kiểm tra (Conditions) |
Kết quả mong đợi (Expected) |
Trạng thái (Status) |
| TC-01: Đăng nhập phân quyền |
Nhập tài khoản Admin / Password |
Điều hướng chuẩn xác vào Admin Dashboard |
Đạt (Passed) |
| TC-02: Kiểm tra tồn kho giỏ hàng |
Đặt số lượng vượt quá SANPHAM.SOLUONG |
Cảnh báo hết hàng, không cho thêm vào giỏ |
Đạt (Passed) |
| TC-03: Tính toán hóa đơn |
Áp dụng mã giảm giá và tính tổng |
Khớp số tiền CT_DONHANG.THANHTIEN |
Đạt (Passed) |
| TC-04: Toàn vẹn dữ liệu khi xóa |
Xóa danh mục chứa sản phẩm |
Báo lỗi vi phạm ràng buộc Foreign Key |
Đạt (Passed) |
- Chỉ số hiệu năng kiểm thử (Performance Benchmarks):
- Thời gian phản hồi trung bình (Average Response Time): $\le 120\text{ ms}$ cho các trang hiển thị danh mục và $\le 250\text{ ms}$ cho các tác vụ ghi dữ liệu/đặt hàng.
- Tải chịu đựng đồng thời (Concurrency): Phục vụ ổn định 100+ phiên làm việc (
HttpSession) đồng thời trên cấu hình máy chủ thử nghiệm chuẩn RAM 8GB.
- Tỷ lệ lỗi giao dịch (Transaction Error Rate): $0.0%$ khi kiểm thử kịch bản checkout đa người dùng.
Đổi mới và đóng góp
Điểm đột phá kỹ thuật
- Kiến trúc dữ liệu phân tầng chặt chẽ: Phân tách rành mạch giữa nghiệp vụ đặt hàng (
DONHANG, CT_DONHANG) và nghiệp vụ xuất hóa đơn bán lẻ (HOADON, CT_HOADON), liên kết người nhận đa kênh (NGUOINHAN) giúp hệ thống kiểm soát độc lập giữa luồng hàng đi và luồng tiền về.
- Cơ chế quản lý danh mục đa cấp: Thiết lập bảng trung gian phân cấp từ
NHOMSP $\rightarrow$ DANHMUCSP $\rightarrow$ SANPHAM, cho phép mở rộng mặt hàng linh hoạt (Laptop, Điện thoại, Phụ kiện) mà không cần cấu trúc lại Database.
- Phê duyệt phản hồi hai lớp: Tích hợp kiểm duyệt nội dung đánh giá (
DANHGIA) trước khi hiển thị công khai, loại bỏ triệt để spam và bảo vệ uy tín thương hiệu của cửa hàng.
So sánh hiệu quả vận hành
Hiệu suất quản lý bán hàng (Trước và sau khi áp dụng hệ thống):
Thời gian xử lý đơn hàng:
[Trước khi áp dụng (Thủ công)]: ============================== 25 phút
[Sau khi áp dụng hệ thống]: ==== 3 phút (-88%)
Tỷ lệ sai sót dữ liệu kho:
[Trước khi áp dụng (Thủ công)]: ============= 12%
[Sau khi áp dụng hệ thống]: = 0.5% (-95.8%)
Nhu cầu nhân sự trực quầy/tư vấn:
[Trước khi áp dụng (Thủ công)]: ======== 4 nhân sự
[Sau khi áp dụng hệ thống]: == 1 nhân sự (-75%)
Ứng dụng thực tế và triển khai
Trường hợp sử dụng thực tế (Real-World Use Cases)
- Kịch bản 1 - Khách hàng cá nhân mua Laptop: Khách hàng truy cập trang chủ, lọc danh mục Laptop $\rightarrow$ Xem thông số kỹ thuật (CPU, RAM, Ổ cứng) $\rightarrow$ Thêm vào giỏ $\rightarrow$ Nhập thông tin người nhận tại trang thanh toán $\rightarrow$ Chọn hình thức chuyển khoản Internet Banking.
- Kịch bản 2 - Nhân viên xử lý đơn và Lập hóa đơn: Nhân viên tiếp nhận đơn mới tại module Quản lý bán hàng $\rightarrow$ Kiểm tra lượng tồn kho $\rightarrow$ Duyệt đơn hàng $\rightarrow$ Hệ thống tự động sinh dữ liệu sang bảng
HOADON và CT_HOADON phục vụ in phiếu gửi hàng.
- Kịch bản 3 - Quản trị viên phân tích kinh doanh: Admin truy cập module Báo cáo - Thống kê để trích xuất biểu đồ doanh thu theo tháng, thống kê top 5 sản phẩm bán chạy nhất để lập kế hoạch nhập hàng kỳ tới.
Phân tích chi phí - Lợi ích (Cost-Benefit & ROI)
- Chi phí triển khai ban đầu: Tối ưu hóa tối đa nhờ việc sử dụng nền tảng mở (Java EE, Eclipse, Tomcat Server) kết hợp MS SQL Server Standard.
- Thời gian hoàn vốn (ROI): Ước tính đạt điểm hòa vốn sau 4–6 tháng vận hành nhờ cắt giảm được ít nhất 2 nhân sự trực tiếp và tối ưu hóa 15–20% chi phí tồn kho chết.
Lộ trình triển khai (Implementation Roadmap)
+-------------------+ +-------------------+ +-------------------+ +-------------------+
| Tháng 1 | --> | Tháng 2 | --> | Tháng 3 | --> | Tháng 4 trở đi |
| Cài đặt môi trường| | Di chuyển dữ liệu | | Đào tạo nhân sự | | Giám sát vận hành |
| & CSDL SQL Server | | & Chạy Pilot Test | | & Chạy chính thức | | & Bảo trì định kỳ |
+-------------------+ +-------------------+ +-------------------+ +-------------------+
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Kiến trúc nguyên khối (Monolithic Java EE truyền thống) khiến việc đóng gói container và triển khai CI/CD trên nền tảng đám mây cần thêm nhiều bước cấu hình.
- Chưa tích hợp SDK cổng thanh toán trực tuyến tự động (VNPay, MoMo, ZaloPay API) mà vẫn dựa vào xác nhận chuyển khoản thủ công.
- Chưa hỗ trợ cơ chế bộ nhớ đệm phân tán (Distributed Caching như Redis) khi lượng người dùng đồng thời vượt ngưỡng 10,000 requests/giây.
Hướng phát triển trong tương lai
- Nâng cấp kiến trúc: Tái cấu trúc backend sang mô hình RESTful Web Services sử dụng Spring Boot 3.x và Spring Data JPA.
- Hiện đại hóa giao diện người dùng: Xây dựng ứng dụng Single Page Application (SPA) với React.js hoặc Vue.js nhằm tối ưu hóa trải nghiệm mượt mà trên thiết bị di động.
- Mở rộng trí tuệ nhân tạo: Tích hợp thuật toán gợi ý sản phẩm thông minh (Collaborative Filtering Recommender System) dựa trên lịch sử xem và mua sắm của khách hàng.
Đối tượng hưởng lợi
- Sinh viên & Học viên CNTT: Nguồn tài liệu tham khảo hoàn chỉnh về quy trình phân tích thiết kế hệ thống thông tin (từ DFD, ERD đến hiện thực hóa mã nguồn Java Web MVC).
- Lập trình viên Java Web: Cung cấp mẫu thiết kế (Pattern) chuẩn về xử lý phiên làm việc (
HttpSession), kết nối CSDL qua JDBC an toàn và kiểm soát dữ liệu đầu vào.
- Chủ cửa hàng & Doanh nghiệp vừa và nhỏ (SMEs): Bộ khung giải pháp số hóa quy trình kinh doanh với chi phí đầu tư ban đầu thấp, loại bỏ thất thoát và nâng cao tính chuyên nghiệp.
- Nhà nghiên cứu kinh tế số: Dữ liệu thực chứng về tác động của ứng dụng TMĐT đối với việc tối ưu hóa chi phí vận hành tại các đơn vị bán lẻ Việt Nam.
Câu hỏi thường gặp
1. Yêu cầu cấu hình phần cứng và môi trường để triển khai hệ thống là gì?
Máy chủ cần cài đặt tối thiểu: Hệ điều hành Windows Server/Ubuntu, Java Runtime Environment (JRE) 8 trở lên, Apache Tomcat 8.5/9.0, Microsoft SQL Server 2014 trở lên. Cấu hình máy chủ tối thiểu: 2 vCPU, 4GB RAM, 40GB SSD lưu trữ.
2. Hệ thống xử lý bài toán xung đột dữ liệu tồn kho khi nhiều khách hàng cùng đặt một sản phẩm như thế nào?
Hệ thống sử dụng cơ chế Transaction Isolation Level trên MS SQL Server kết hợp câu lệnh cập nhật có điều kiện UPDATE SANPHAM SET SOLUONG = SOLUONG - @Qty WHERE MASP = @MaSP AND SOLUONG >= @Qty. Nếu số lượng không đủ, Transaction sẽ tự động ROLLBACK và thông báo lỗi đến người dùng.
3. Trang web có khả năng tích hợp thêm các dịch vụ vận chuyển bên thứ ba không?
Hoàn toàn có thể. Do hệ thống đã tách riêng thực thể NGUOINHAN và DONHANG, nhà phát triển có thể viết thêm một Service Layer để gọi API của các đơn vị giao hàng như Giao Hàng Nhanh (GHN), Giao Hàng Tiết Kiệm (GHTK) thông qua HTTP Client.
4. Hệ thống đảm bảo an toàn thông tin mật khẩu của người dùng như thế nào?
Các trường MATKHAUNV và MATKHAUKH được cấp phát độ dài VARCHAR(200) để sẵn sàng lưu trữ chuỗi mã hóa băm một chiều (Hashing algorithms như SHA-256 kèm Salt hoặc BCrypt), ngăn chặn hoàn toàn nguy cơ lộ mật khẩu dạng plain-text.
5. Chi phí bảo trì và thời gian phục hồi hệ thống khi có sự cố là bao lâu?
Chi phí bảo trì hàng năm rất thấp (chủ yếu là phí duy trì tên miền Domain và máy chủ VPS). Với chính sách sao lưu định kỳ (Database Backup Job) trên MS SQL Server 2014, thời gian khôi phục toàn bộ hệ thống (RTO) chỉ mất từ 15–30 phút khi xảy ra sự cố phần cứng.
Kết luận
Đồ án tốt nghiệp "Xây dựng hệ thống Website bán hàng online" của sinh viên Lê Thị Hiền (Đại học Kinh tế Quốc dân) đã giải quyết toàn diện bài toán tin học hóa chu trình bán lẻ thiết bị công nghệ. Bằng việc làm chủ kiến trúc Java Servlet/JSP kết hợp với cơ sở dữ liệu quan hệ chuẩn mực trên MS SQL Server 2014, công trình không chỉ có giá trị học thuật xuất sắc trong phân tích thiết kế hệ thống mà còn mang tính ứng dụng thực tiễn cao cho cộng đồng doanh nghiệp số hóa bán lẻ. Đây là bước đệm vững chắc để tiếp tục mở rộng, nâng cấp lên các kiến trúc microservices và đa nền tảng trong tương lai.