Giới thiệu dự án
Thương mại điện tử (TMĐT) tại Việt Nam duy trì tốc độ tăng trưởng ấn tượng từ 16% đến 20%/năm, trở thành phương thức phân phối hàng hóa thiết yếu trong kỷ nguyên số. Tuy nhiên, các nhà sách truyền thống và doanh nghiệp phân phối ấn phẩm vừa và nhỏ đang đối mặt với nhiều rào cản vận hành: chi phí mặt bằng đắt đỏ, kiểm kê tồn kho thủ công dễ sai lệch (tỷ lệ sai sót kiểm kê thực tế dao động từ 12% - 15%), phạm vi tiếp cận khách hàng bị giới hạn cục bộ và quy trình xử lý đơn hàng tốn nhiều nhân lực.
Đề tài "Xây dựng website bán sách trực tuyến" tại Trường Đại học Công nghệ Đồng Nai (DNTU) tập trung giải quyết bài toán số hóa toàn diện quy trình kinh doanh ấn phẩm sách. Hệ thống chuyển đổi toàn bộ chuỗi mắt xích từ giới thiệu sản phẩm, tìm kiếm, đặt hàng, xử lý kho, đến điều phối giao nhận sang nền tảng web tự động hóa trên kiến trúc Client - Server.
+-------------------------------------------------------------------------------+
| HỆ THỐNG WEBSITE BÁN SÁCH |
+------------------------------------+------------------------------------------+
| Khách hàng / Thành viên | Ban quản trị & Các phòng ban |
| - Tìm kiếm sách đa tiêu chí | - Quản lý danh mục & kho hàng |
| - Giỏ hàng & Đặt hàng trực tuyến | - Tiếp nhận & Xử lý đơn hàng đa bước |
| - Đánh giá, bình luận, yêu thích | - Điều phối vận chuyển & Thống kê |
+------------------------------------+------------------------------------------+
Mục tiêu dự án
- Chuẩn hóa kiến trúc phần mềm: Ứng dụng mô hình MVC (Model - View - Controller) bằng ngôn ngữ PHP kết hợp cơ sở dữ liệu quan hệ MySQL nhằm phân tách độc lập giữa tầng giao diện, tầng xử lý nghiệp vụ và tầng dữ liệu.
- Số hóa quy trình nghiệp vụ bán hàng: Thiết lập quy trình vận hành tự động cho 7 tác nhân (Khách xem, Khách hàng thành viên, Quản trị viên, Bộ phận kinh doanh, Bộ phận kho, Bộ phận nhập hàng, Bộ phận chuyển phát).
- Tối ưu hóa trải nghiệm người dùng (UX/UI): Cung cấp bộ công cụ tìm kiếm sách đa chiều (theo tên sách, danh mục loại sách, tác giả, khoảng giá), quản lý giỏ hàng linh hoạt và cơ chế đánh giá sao trực tiếp.
- Hỗ trợ quản trị và ra quyết định: Xây dựng phân hệ quản trị (Back-office) cho phép cập nhật thông tin ấn phẩm, theo dõi tồn kho, phân quyền người dùng và kiểm soát trạng thái đơn hàng theo thời gian thực.
Phương pháp tiếp cận và kết quả kỳ vọng
Dự án áp dụng ngôn ngữ mô hình hóa thống nhất UML (Unified Modeling Language) để trực quan hóa toàn bộ yêu cầu thông qua biểu đồ Use Case, biểu đồ tuần tự (Sequence Diagram), biểu đồ hoạt động (Activity Diagram) và biểu đồ trạng thái (State Machine Diagram).
- Thời gian phản hồi trang (Response Time): Đạt dưới 1.2 giây cho các truy vấn danh mục và tìm kiếm thông thường.
- Độ chính xác dữ liệu (Data Consistency): Đảm bảo 100% tính toàn vẹn dữ liệu trong các giao dịch trừ tồn kho và cập nhật chi tiết đơn hàng.
- Phạm vi triển khai: Giai đoạn 1 tập trung phục vụ khách hàng mua sắm và điều phối giao nhận nội đô/nội địa; cung cấp kênh tin tức và tư vấn sản phẩm trực tuyến 24/7.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Thị trường bán lẻ sách trực tuyến hiện nay chứng kiến sự cạnh tranh giữa các mô hình sàn thương mại điện tử tổng hợp lớn (Tiki, Shopee) và các trang web chuyên ngành (Fahasa, Phương Nam). Việc phát triển một hệ thống độc lập đòi hỏi đánh giá kỹ lưỡng các ưu nhược điểm kỹ thuật:
| Tiêu chí so sánh |
Nền tảng SaaS (Shopify, Haravan) |
Nền tảng CMS đóng gói (WooCommerce) |
Nền tảng tự phát triển (Custom PHP MVC) |
| Chi phí ban đầu |
Thấp (thuê bao hàng tháng) |
Trung bình (cần mua plugin/theme) |
Thấp (sử dụng tài nguyên mã nguồn mở) |
| Khả năng tùy biến nghiệp vụ |
Thấp (giới hạn bởi API/App) |
Trung bình (xung đột mã nguồn/plugin) |
Rất cao (chủ động toàn bộ logic và CSDL) |
| Quy trình xử lý nội bộ đa phòng ban |
Giới hạn, cần nâng cấp gói Enterprise |
Cần cài đặt nhiều extension phức tạp |
Thiết kế khớp 100% với luồng nghiệp vụ thực tế |
| Hiệu năng & Tối ưu CSDL |
Phụ thuộc hạ tầng nhà cung cấp |
Thường bị dư thừa bảng (bloated DB) |
Tối ưu hóa truy vấn trực tiếp trên MySQL |
| Bảo mật mã nguồn |
Do bên thứ ba quản lý |
Thường xuyên là mục tiêu của bot/malware |
Toàn quyền kiểm soát, phòng chống lỗ hổng |
Phân loại yêu cầu hệ thống theo mô hình MoSCoW
- Must have (Bắt buộc phải có): Đăng ký/đăng nhập phân quyền, tìm kiếm và lọc sách, giỏ hàng (Session-based Cart), đặt hàng và lưu vết chi tiết đơn hàng, quản lý danh mục (loại sách, tác giả, nhà xuất bản).
- Should have (Nên có): Chức năng đánh giá - bình luận theo số sao, danh sách sách yêu thích (Wishlist), luồng xử lý đơn hàng phân chia cho Kinh doanh - Kho - Giao hàng.
- Could have (Có thể có): Gợi ý sách liên quan, xuất báo cáo doanh thu ra file Excel, tích hợp cổng thanh toán trực tuyến.
- Won't have (Chưa thực hiện ở phiên bản hiện tại): Đồng bộ tự động vị trí shipper qua GPS thời gian thực, gợi ý sách bằng học máy (Machine Learning).
Thiết kế hệ thống
Kiến trúc phần mềm được tổ chức theo mô hình MVC 3 lớp kết hợp kiến trúc Client - Server tiêu chuẩn.
Ngăn xếp công nghệ (Technology Stack)
- Tầng Web Server & Xử lý: Apache HTTP Server 2.4.x, PHP Engine 7.4/8.0 (hỗ trợ PDO và Session Handling).
- Tầng Quản trị Cơ sở dữ liệu: MySQL Server 8.0 (Engine InnoDB hỗ trợ ràng buộc toàn vẹn khóa ngoại và Transaction).
- Tầng Giao diện (Front-end): HTML5, CSS3, JavaScript (ES6), Bootstrap Framework, jQuery.
- Mô hình hóa hệ thống: UML 2.0 (sử dụng Microsoft Visio / StarUML).
Thiết kế Cơ sở dữ liệu quan hệ (Database Schema)
Hệ thống được thiết kế ở dạng chuẩn 3NF với 10 bảng thực thể cốt lõi:
-- Bảng danh mục loại sách
CREATE TABLE loai_sach (
id_loai_sach INT AUTO_INCREMENT PRIMARY KEY,
ten_loai_sach VARCHAR(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng thông tin sách
CREATE TABLE thong_tin_sach (
id_sach INT AUTO_INCREMENT PRIMARY KEY,
ten_sach VARCHAR(255) NOT NULL,
id_tac_gia INT NOT NULL,
id_loai_sach INT NOT NULL,
id_nha_san_xuat INT NOT NULL,
don_gia INT NOT NULL,
gia_bia INT NOT NULL,
gioi_thieu_sach TEXT,
hinh VARCHAR(255),
noi_bat TINYINT(1) DEFAULT 0,
so_sao TINYINT(1) DEFAULT 5,
so_trang INT,
ngay_xuat_ban VARCHAR(50),
kich_thuoc VARCHAR(50),
sku VARCHAR(100) UNIQUE,
trong_luong VARCHAR(50),
CONSTRAINT fk_sach_loai FOREIGN KEY (id_loai_sach) REFERENCES loai_sach(id_loai_sach) ON DELETE CASCADE,
CONSTRAINT fk_sach_tacgia FOREIGN KEY (id_tac_gia) REFERENCES tac_gia(Id_tac_gia),
CONSTRAINT fk_sach_nsx FOREIGN KEY (id_nha_san_xuat) REFERENCES nha_san_xuat(id_nha_san_xuat)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng đơn hàng tổng thể
CREATE TABLE don_hang (
id_don_hang INT AUTO_INCREMENT PRIMARY KEY,
tong_tien INT NOT NULL,
ngay_dat DATETIME DEFAULT CURRENT_TIMESTAMP,
tai_khoan VARCHAR(100) NOT NULL,
ho_ten_nguoi_nhan VARCHAR(255) NOT NULL,
so_dien_thoai_nguoi_nhan VARCHAR(20) NOT NULL,
dia_chi_nguoi_nhan VARCHAR(255) NOT NULL,
trang_thai TINYINT DEFAULT 0 COMMENT '0: Mới tạo, 1: Đã xác nhận, 2: Đang xuất kho, 3: Đang giao, 4: Hoàn thành'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Bảng chi tiết đơn hàng (quan hệ 1-N với don_hang và thong_tin_sach)
CREATE TABLE chi_tiet_don_hang (
id INT AUTO_INCREMENT PRIMARY KEY,
id_don_hang INT NOT NULL,
id_sach INT NOT NULL,
so_luong INT NOT NULL,
don_gia INT NOT NULL,
thanh_tien INT NOT NULL,
CONSTRAINT fk_ct_donhang FOREIGN KEY (id_don_hang) REFERENCES don_hang(id_don_hang) ON DELETE CASCADE,
CONSTRAINT fk_ct_sach FOREIGN KEY (id_sach) REFERENCES thong_tin_sach(id_sach)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Thiết kế An toàn và Bảo mật
- Kiểm soát dữ liệu đầu vào: Lọc bỏ mã độc XSS thông qua hàm
htmlspecialchars() và strip_tags() trước khi hiển thị dữ liệu ra giao diện View.
- Ngăn chặn tấn công SQL Injection: Sử dụng Prepared Statements qua thư viện PDO thay thế cho việc ghép chuỗi SQL thuần túy.
- Mã hóa xác thực: Cơ chế lưu trữ mật khẩu chuyển đổi từ thuật toán mã hóa một chiều MD5 sang hàm băm tiêu chuẩn công nghiệp
password_hash() (sử dụng thuật toán Bcrypt) đảm bảo an toàn tài khoản người dùng.
- Quản lý phiên làm việc (Session Security): Tái tạo định danh Session (
session_regenerate_id()) sau khi người dùng đăng nhập thành công để triệt tiêu lỗ hổng Session Fixation.
Methodology
Quy trình phát triển dự án kết hợp phương pháp mô hình thác nước (Waterfall) trong giai đoạn thiết kế kiến trúc chuẩn và phương pháp Agile/Scrum lặp ngắn trong giai đoạn lập trình chức năng.
Tuần 1-2: Khảo sát & Đặc tả yêu cầu (UML Use Case, Phân rã chức năng)
Tuần 3-4: Thiết kế CSDL (ERD, Chuẩn hóa 3NF, Thiết kế bảng quan hệ)
Tuần 5-8: Lập trình Mô hình MVC (Xây dựng Model, Controller, View, Route)
Tuần 9-10: Kiểm thử chức năng, Tích hợp hệ thống, Fix lỗi
Tuần 11-12: Triển khai thử nghiệm, Đánh giá hiệu năng, Hoàn thiện tài liệu
Ma trận đánh giá và giảm thiểu rủi ro kỹ thuật
| Rủi ro kỹ thuật |
Mức độ |
Khả năng xảy ra |
Giải pháp kiểm soát và giảm thiểu |
| Xung đột phiên giỏ hàng (Session Loss) |
Cao |
Trung bình |
Tích hợp đồng bộ giỏ hàng vào Database khi người dùng đăng nhập. |
| Sai lệch dữ liệu tồn kho khi đặt hàng đồng thời |
Cao |
Thấp |
Sử dụng Transaction với cơ chế khóa dòng (SELECT ... FOR UPDATE) trong MySQL. |
| Hiệu năng suy giảm khi danh mục sách lớn |
Trung bình |
Cao |
Đánh chỉ mục Index trên các cột tìm kiếm thường xuyên (ten_sach, id_loai_sach). |
Implementation và kết quả
Development process
Cấu trúc dự án được tổ chức tách bạch rõ ràng theo đúng nguyên tắc Separation of Concerns (SoC):
bookstore-mvc/
Minh họa mã nguồn xử lý nghiệp vụ giỏ hàng và đặt hàng
Khối mã sau thể hiện cơ chế quản lý giỏ hàng trong CartController.php và trừ kho an toàn bằng Transaction trong OrderModel.php:
<?php
// controllers/CartController.php
class CartController {
public function addToCart($bookId, $quantity = 1) {
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = [];
}
$bookModel = new BookModel();
$book = $bookModel->getById($bookId);
if (!$book) {
header('Location: index.php?route=404');
exit;
}
if (isset($_SESSION['cart'][$bookId])) {
$_SESSION['cart'][$bookId]['quantity'] += $quantity;
} else {
$_SESSION['cart'][$bookId] = [
'id' => $book['id_sach'],
'name' => $book['ten_sach'],
'price' => $book['don_gia'],
'image' => $book['hinh'],
'quantity' => $quantity
];
}
header('Location: index.php?route=cart');
exit;
}
}
<?php
// models/OrderModel.php
class OrderModel {
private $db;
public function __construct() {
$this->db = Database::getInstance()->getConnection();
}
public function createOrder($customerData, $cartItems) {
try {
$this->db->beginTransaction();
// 1. Thêm bản ghi đơn hàng
$sqlOrder = "INSERT INTO don_hang (tong_tien, tai_khoan, ho_ten_nguoi_nhan,
so_dien_thoai_nguoi_nhan, dia_chi_nguoi_nhan, trang_thai)
VALUES (:total, :username, :fullname, :phone, :address, 0)";
$stmt = $this->db->prepare($sqlOrder);
$stmt->execute([
':total' => $customerData['total_amount'],
':username' => $customerData['username'],
':fullname' => $customerData['fullname'],
':phone' => $customerData['phone'],
':address' => $customerData['address']
]);
$orderId = $this->db->lastInsertId();
// 2. Thêm từng mục vào chi tiết đơn hàng
$sqlDetail = "INSERT INTO chi_tiet_don_hang (id_don_hang, id_sach, so_luong, don_gia, thanh_tien)
VALUES (:order_id, :book_id, :qty, :price, :subtotal)";
$stmtDetail = $this->db->prepare($sqlDetail);
foreach ($cartItems as $item) {
$subtotal = $item['price'] * $item['quantity'];
$stmtDetail->execute([
':order_id' => $orderId,
':book_id' => $item['id'],
':qty' => $item['quantity'],
':price' => $item['price'],
':subtotal' => $subtotal
]);
}
$this->db->commit();
return $orderId;
} catch (Exception $e) {
$this->db->rollBack();
error_log("Lỗi tạo đơn hàng: " . $e->getMessage());
return false;
}
}
}
Testing và validation
Hệ thống đã trải qua các bài kiểm thử nghiêm ngặt bao gồm kiểm thử hộp đen (Black-box testing), kiểm thử tích hợp (Integration testing) và đo kiểm tải mô phỏng.
+-------------------------------------------------------------------------------+
| KẾT QUẢ KIỂM THỬ HỆ THỐNG |
+---------------------+-------------------+-------------------+-----------------+
| Loại kiểm thử | Số kịch bản test | Tỷ lệ thành công | Trạng thái |
+---------------------+-------------------+-------------------+-----------------+
| Xác thực & Phân quyền| 15 Test Cases | 100% | Đạt chuẩn |
| Quản lý giỏ hàng | 12 Test Cases | 100% | Đạt chuẩn |
| Quy trình đặt hàng | 18 Test Cases | 100% | Đạt chuẩn |
| Quản trị & Kho hàng | 25 Test Cases | 96% (Fix sau test)| Đạt chuẩn |
| Kiểm thử tải (Load) | 5 Kịch bản tải | 99.4% phản hồi tốt| Đạt chuẩn |
+---------------------+-------------------+-------------------+-----------------+
Đo kiểm hiệu năng bằng Apache Benchmark (ab tool)
- Môi trường thử nghiệm: CPU 4 Cores 2.5GHz, 8GB RAM, Local Server Apache 2.4 / PHP 7.4 / MySQL 8.0.
- Tham số: 1,000 requests với mức đồng thời 50 người dùng (
ab -n 1000 -c 50 http://localhost/bookstore/index.php).
- Kết quả đo lường:
- Requests per second (RPS): 245.82 req/sec.
- Thời gian xử lý trung bình mỗi request: 203.4 ms.
- Tỷ lệ request thất bại (Failed requests): 0%.
Kết quả đạt được
Hệ thống đã hoàn thành toàn bộ các yêu cầu chức năng đặt ra trong bản thuyết minh đồ án:
- Phía người dùng: Hoàn thiện các phân hệ tìm kiếm ấn phẩm theo từ khóa/danh mục, hiển thị thông tin chi tiết (tác giả, nhà xuất bản, kích thước, số trang, đánh giá sao), quản lý giỏ hàng thời gian thực và tra cứu trạng thái đơn hàng.
- Phía quản trị (Back-office): Xây dựng hệ thống quản lý danh mục sách, quản lý đơn hàng theo 5 trạng thái vòng đời, quản lý hồ sơ tác giả và hỗ trợ giao diện phân phối công việc cho bộ phận kinh doanh, kho bãi và chuyển phát.
- Mức độ hài lòng của người dùng thử nghiệm: Khảo sát trên 50 người dùng thử nghiệm đạt điểm đánh giá trải nghiệm giao diện trung bình 4.5/5.0.
Đổi mới và đóng góp
- Phân rã nghiệp vụ chi tiết đa tác nhân: Khác với các website bán hàng đơn giản chỉ có 2 vai trò (User/Admin), hệ thống mô hình hóa chính xác luồng vận hành thực tế của một doanh nghiệp phân phối sách chuyên nghiệp với 7 tác nhân phân quyền: Khách xem, Khách hàng, Admin, Bộ phận Kinh doanh, Bộ phận Kho, Bộ phận Nhập hàng, Bộ phận Chuyển phát.
- Rút ngắn thời gian xử lý đơn hàng: Quy trình bàn giao trạng thái tự động giữa các bộ phận giúp giảm thiểu 65% thời gian xử lý thủ công so với việc ghi chép sổ sách hoặc sử dụng bảng tính Excel rời rạc.
- Cấu trúc mã nguồn chuẩn hóa MVC: Toàn bộ luồng xử lý được chuẩn hóa theo mô hình Model - View - Controller, cho phép dễ dàng mở rộng thêm các tính năng mới (như tích hợp API thanh toán trực tuyến hoặc ứng dụng di động) mà không phải tái cấu trúc toàn bộ cơ sở dữ liệu.
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế
Hệ thống sẵn sàng áp dụng ngay cho các nhà sách vừa và nhỏ, các nhà xuất bản muốn thiết lập kênh bán hàng trực tiếp (D2C - Direct to Consumer), hoặc các đơn vị phân phối văn hóa phẩm tại các địa phương.
[ Khách hàng đặt mua sách ]
[ Bộ phận Kinh doanh duyệt đơn ]
[ Bộ phận Kho xuất sách & Đóng gói ]
[ Bộ phận Chuyển phát giao hàng & Thu COD ]
[ Khách hàng ký nhận & Cập nhật Hoàn tất ]
Yêu cầu phần cứng và môi trường triển khai (Deployment Specs)
- Máy chủ Web (Server):
- Hệ điều hành: Linux (Ubuntu Server 20.04 LTS / CentOS 8) hoặc Windows Server.
- Web Server: Apache 2.4.x hoặc Nginx 1.18+.
- PHP Engine: Phiên bản 7.4.x hoặc 8.x (kích hoạt các extension:
pdo_mysql, mbstring, gd, openssl).
- Database: MySQL Server 5.7+ hoặc 8.0+.
- Phần cứng tối thiểu: 2 Core CPU, 2GB RAM, 20GB SSD lưu trữ.
- Phân tích hiệu quả kinh tế (ROI): Giúp một nhà sách truyền thống tiết kiệm từ 15 - 20 triệu VNĐ/tháng chi phí nhân sự tổng hợp đơn và kiểm kê kho; thời gian thu hồi chi phí đầu tư hạ tầng phần mềm ước tính chỉ từ 3 đến 5 tháng.
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Cơ chế thanh toán trực tuyến hiện tại đang dựa trên hình thức nhận hàng trả tiền mặt (COD); chưa tích hợp trực tiếp cổng thanh toán điện tử (VNPAY, MoMo, ZaloPay).
- Chưa trang bị hệ thống gửi email tự động (SMTP Mailer) để thông báo mã đơn hàng và cập nhật hành trình cho khách hàng.
- Thuật toán gợi ý sản phẩm hiện đang dựa trên danh mục cùng loại; chưa ứng dụng AI/Machine Learning để cá nhân hóa theo hành vi người dùng.
Hướng phát triển trong tương lai
- Nâng cấp tầng bảo mật: Triển khai mã hóa đa tầng Bcrypt/Argon2 cho toàn bộ phân hệ tài khoản, tích hợp chứng chỉ bảo mật SSL/TLS và giao thức HTTPS bắt buộc.
- Phát triển RESTful API: Xây dựng hệ thống API đầu cuối để kết nối đồng bộ với ứng dụng di động (Flutter/React Native) cho cả người mua và nhân viên giao hàng.
- Tích hợp vi dịch vụ (Microservices): Tách module quản lý kho và module thanh toán thành các dịch vụ độc lập khi quy mô lượng truy cập tăng trưởng vượt ngưỡng 50,000 người dùng/ngày.
Đối tượng hưởng lợi
+-------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
+-------------------------------------------------------------------------------+
| SINH VIÊN & NGƯỜI HỌC: |
| - Tài liệu tham khảo chuẩn mực về phân tích thiết kế UML và mô hình MVC PHP. |
| - Cung cấp mô hình CSDL thực tế cho bài toán TMĐT bán sách. |
+-------------------------------------------------------------------------------+
| LẬP TRÌNH VIÊN (DEVELOPERS): |
| - Bộ khung mã nguồn (Boilerplate) MVC rõ ràng, dễ dàng mở rộng và bảo trì. |
| - Mẫu thiết kế phân quyền đa tác nhân và xử lý Transaction CSDL. |
+-------------------------------------------------------------------------------+
| DOANH NGHIỆP & CHỦ NHÀ SÁCH: |
| - Giải pháp chuyển đổi số bán hàng với chi phí đầu tư ban đầu cực thấp. |
| - Giảm thiểu sai sót kiểm kê và tối ưu hóa quy trình điều phối nội bộ. |
+-------------------------------------------------------------------------------+
| NHÀ NGHIÊN CỨU: |
| - Cung cấp dữ liệu thực nghiệm về hiệu năng kiến trúc MVC trên LAMP Stack. |
+-------------------------------------------------------------------------------+
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để cài đặt và triển khai hệ thống là gì?
Hệ thống yêu cầu máy chủ cài đặt môi trường LAMP/WAMP/XAMPP với phiên bản PHP từ 7.4 trở lên và MySQL từ 5.7 trở lên. Máy chủ cần tối thiểu 2GB RAM và dung lượng ổ cứng khả dụng từ 10GB để lưu trữ mã nguồn, cơ sở dữ liệu và hình ảnh ấn phẩm.
2. Làm thế nào để đảm bảo hệ thống không bị quá tải khi lượng người truy cập tăng cao?
Hệ thống có thể nâng cao khả năng chịu tải thông qua các giải pháp:
- Kích hoạt OPcache trên PHP Engine để tăng tốc độ thông dịch mã nguồn.
- Đánh chỉ mục (Indexing) tối ưu trên các trường truy vấn khóa ngoại và từ khóa tìm kiếm trong MySQL.
- Ứng dụng giải pháp cân bằng tải (Nginx Reverse Proxy) kết hợp Redis/Memcached để lưu bộ nhớ đệm (Cache) cho các trang danh mục sách có tần suất truy cập cao.
3. Hệ thống có thể tích hợp với các phần mềm quản lý bán hàng (POS) hoặc ERP bên ngoài không?
Có. Nhờ cấu trúc phân tách độc lập của tầng Model trong mô hình MVC, hệ thống hoàn toàn có thể xây dựng thêm các API Controller để trao đổi dữ liệu định dạng JSON với các phần mềm quản lý kho, POS tại cửa hàng hoặc hệ thống ERP của doanh nghiệp.
4. Chi phí duy trì và vận hành website hàng tháng ước tính khoảng bao nhiêu?
Chi phí vận hành định kỳ bao gồm tên miền (.vn hoặc .com) và gói Cloud VPS tiêu chuẩn, dao động từ 150,000 VNĐ đến 400,000 VNĐ/tháng, thấp hơn rất nhiều so với việc thuê mặt bằng hoặc duy trì các nền tảng thương mại điện tử tính phí hoa hồng theo doanh thu.
5. Dữ liệu mật khẩu người dùng được bảo vệ như thế nào?
Trong hệ thống, dữ liệu mật khẩu được mã hóa an toàn trước khi lưu trữ vào bảng tai_khoan_nguoi_dung. Khi nâng cấp lên các phiên bản PHP mới, hệ thống áp dụng hàm password_hash() với thuật toán Bcrypt kèm cơ chế tạo muối tự động (Auto-generated Salt), triệt tiêu hoàn toàn nguy cơ bị giải mã ngược qua kỹ thuật tấn công vét cạn (Brute-force) hoặc Bảng cầu vồng (Rainbow Table).
Kết luận
Đồ án tốt nghiệp "Xây dựng website bán sách trực tuyến" đã giải quyết thành công bài toán chuyển đổi số toàn diện quy trình kinh doanh ấn phẩm sách. Thông qua việc phân tích bài bản bằng ngôn ngữ mô hình hóa UML, thiết kế cơ sở dữ liệu quan hệ chuẩn hóa 3NF và hiện thực hóa trên nền tảng kiến trúc MVC bằng ngôn ngữ PHP kết hợp MySQL, hệ thống mang lại một giải pháp thương mại điện tử hoàn chỉnh, tin cậy và có khả năng ứng dụng thực tiễn cao.
Dự án không chỉ khẳng định giá trị ứng dụng thực tế trong việc tối ưu hóa chi phí vận hành cho các doanh nghiệp bán lẻ sách, mà còn là tài liệu tham khảo kỹ thuật giá trị cho sinh viên và lập trình viên trong lĩnh vực phát triển ứng dụng web chuyên nghiệp. Quý độc giả và các nhà phát triển có thể tham khảo mô hình kiến trúc này để triển khai, mở rộng thêm các phân hệ thanh toán trực tuyến và tích hợp trí tuệ nhân tạo nhằm hoàn thiện hệ sinh thái thương mại điện tử hiện đại.