Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và thương mại đa kênh, ngành bán lẻ sách đang đối mặt với sự bùng nổ dữ liệu từ hành vi mua sắm, quản lý chuỗi cung ứng đến quản trị khách hàng. Theo thống kê từ các hiệp hội bán lẻ, việc số hóa hệ thống lưu trữ giúp doanh nghiệp giảm đến 60% thời gian xử lý đơn hàng và tăng 35% độ chính xác trong kiểm kê kho. Đồ án môn học Cơ sở dữ liệu 2 tại Trường Đại học Khoa học Xã hội & Nhân văn TP.HCM – Khoa Thư viện - Thông tin học (dưới sự hướng dẫn của ThS. Trần Đình Anh Huy) tập trung giải quyết bài toán cốt lõi: Xây Dựng Cơ Sở Dữ Liệu Quản Lý Cửa Hàng Sách Hiệu Quả.

  • Bối cảnh và vấn đề thực tế (Problem Statement): Cửa hàng sách [A] có quy mô hoạt động thực tế với hàng trăm giao dịch và bản ghi phát sinh mỗi ngày (thông tin khách hàng, đơn hàng, dữ liệu bán lẻ, ca làm việc nhân viên). Tuy nhiên, toàn bộ dữ liệu đang phụ thuộc hoàn toàn vào hệ thống file bảng tính phân mảnh (Microsoft Excel). Tình trạng này dẫn đến các điểm nghẽn nghiêm trọng (pain points):
    • Dữ liệu phân tán trên nhiều tệp tin độc lập gây khó khăn, tốn kém thời gian và nhân lực khi tra cứu, đối soát.
    • Tần suất xảy ra sai sót dữ liệu (data inconsistency), trùng lặp hoặc mất mát dữ liệu cao khi khối lượng bản ghi tăng trưởng.
    • Thiếu ràng buộc toàn vẹn dữ liệu (data integrity constraints), dẫn đến tình trạng nhập sai định dạng số điện thoại, giá tiền âm hoặc thời gian giao hàng vô lý.
    • Tắc nghẽn trong việc tạo báo cáo tổng hợp doanh thu, phân tích nhà cung cấp và đánh giá mức độ ưa chuộng của sản phẩm theo thời gian thực.
  • Mục tiêu của dự án (Project Objectives):
    1. Thiết kế kiến trúc dữ liệu chuẩn hóa: Xây dựng mô hình thực thể mối quan hệ (ERD - Entity Relationship Diagram) và chuyển đổi sang lược đồ cơ sở dữ liệu quan hệ (RDBMS) đạt chuẩn hóa tối thiểu dạng chuẩn 3 (3NF).
    2. Đảm bảo tính toàn vẹn và bảo mật dữ liệu: Thiết lập hệ thống khóa chính (Primary Key), khóa ngoại (Foreign Key), các ràng buộc kiểm tra (Check Constraints) và định danh duy nhất (Unique Key).
    3. Tự động hóa xử lý logic nghiệp vụ phức tạp: Phát triển hệ thống Stored Procedures xử lý tìm kiếm nâng cao, tính toán doanh thu đa chiều, gợi ý sản phẩm, tính điểm đánh giá trung bình và tạo đơn hàng phức hợp qua dữ liệu XML.
    4. Kiểm soát toàn vẹn giao dịch và lịch sử dữ liệu: Xây dựng các Trigger dạng INSTEAD OF DELETE để quản lý xóa phân tầng an toàn và Trigger AFTER UPDATE/INSERT để tự động hóa ghi nhận mốc thời gian cập nhật hệ thống (TGCapNhat).
  • Giải pháp đề xuất (Solution Approach): Xây dựng một cơ sở dữ liệu quan hệ hoàn chỉnh trên nền tảng Microsoft SQL Server (T-SQL) với 15 bảng nghiệp vụ liên kết chặt chẽ, tối ưu hóa bằng phương pháp thiết kế phân rã từ trên xuống (Top-Down Design) kết hợp mô hình phân rã chức năng (Business Function Diagram - BFD).
  • Kết quả kỳ vọng định lượng (Measurable Outcomes):
    • Giảm thời gian truy xuất thông tin từ vài phút xuống dưới 100ms.
    • Loại bỏ 100% tình trạng trùng lặp thông tin khách hàng và tài khoản (UN_KHACHHANG_TENNGUOIDUNG).
    • Tự động kiểm soát tính hợp lệ của 100% giao dịch tài chính, số lượng tồn kho ($\ge 0$) và định dạng dữ liệu đầu vào.
  • Phạm vi và giới hạn (Scope & Limitations): Hệ thống tập trung tối ưu hóa tầng cơ sở dữ liệu lưu trữ (Database Backend) và tầng logic thủ tục nội tại (T-SQL Stored Procedures, Triggers, Constraints), cung cấp nền tảng vững chắc để kết nối với các ứng dụng Web/App Client trong tương lai.

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

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

Trước khi xây dựng hệ thống mới, dữ liệu của Cửa hàng sách [A] được quản lý thủ công thông qua Microsoft Excel. Bảng phân tích dưới đây thể hiện sự khác biệt rõ rệt giữa giải pháp cũ và giải pháp cơ sở dữ liệu quan hệ được nhóm nghiên cứu phát triển:

Tiêu chí so sánh Quản lý truyền thống bằng Excel Cơ sở dữ liệu quan hệ (RDBMS - MS SQL Server)
Tính nhất quán dữ liệu Kém; dữ liệu phân mảnh trên nhiều file, dễ trùng lặp và sai lệch. Tuyệt đối; ràng buộc toàn vẹn tham chiếu (Referential Integrity) với Foreign Keys.
Khả năng mở rộng (Scalability) Hạn chế; tệp tin bị giật lag khi vượt ngưỡng hàng chục nghìn dòng. Cao; xử lý hàng triệu bản ghi với chỉ mục (Indexes) và bảng tạm (Temp Tables).
Xử lý đồng thời (Concurrency) Xung đột ghi tệp, khóa file cục bộ khi nhiều nhân viên cùng truy cập. Quản lý giao dịch đa người dùng qua cơ chế khóa (Locking) và kiểm soát ACID.
Tự động hóa nghiệp vụ Dùng hàm Excel thủ công; dễ lỗi công thức khi thêm bớt cột. Tự động hóa qua Stored Procedures, Trigger và Check Constraints.
Báo cáo & Thống kê Mất từ 30 – 60 phút tổng hợp thủ công qua nhiều sheet. Truy vấn thời gian thực bằng truy vấn gom nhóm (GROUP BY, AGGREGATE) dưới 1 giây.

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

  • Must-have (Bắt buộc phải có): Quản lý thông tin sách, tác giả, nhà xuất bản, danh mục, thông tin khách hàng, lưu trữ đơn hàng, chi tiết đơn đặt hàng và trạng thái thanh toán.
  • Should-have (Cần thiết có): Đánh giá nhà cung cấp tiềm năng theo doanh thu, theo dõi số lượng tồn kho theo thời gian thực, quản lý các chương trình giảm giá theo đơn hàng và danh mục.
  • Could-have (Mở rộng nâng cao): Gợi ý combo sách theo ngân sách khách hàng, cập nhật giá linh hoạt theo hệ số $[-1, 1]$, Stored Procedure nhận dữ liệu XML để xử lý tạo đơn hàng hàng loạt, gợi ý sản phẩm dựa trên lịch sử mua sắm.
  • Won't-have (Chưa triển khai trong giai đoạn này): Tích hợp cổng thanh toán trực tiếp qua API ngân hàng bên thứ ba.

Thiết kế hệ thống

Kiến trúc cơ sở dữ liệu được tổ chức theo mô hình phân tầng chặt chẽ:

[ Tầng Nghiệp Vụ / Client Applications ]
                   │
                   ▼ (T-SQL Queries / RPC Calls)
[ Tầng Thủ Tục & Logic Xử Lý (Stored Procedures / Triggers / Constraints) ]
                   │
                   ▼ (ACID Transaction Management)
[ Tầng Thực Thể & Quan Hệ Dữ Liệu (15 Tables - Normalized 3NF) ]
  ├── Quản trị thực thể cốt lõi: SANPHAM, DANHMUC, NHACUNGCAP
  ├── Quản trị người dùng & bảo mật: KHACHHANG, DANGNHAP, DIACHINHAN
  ├── Quản trị giao dịch & tài chính: DONHANG, CHITIET_DONHANG, THANHTOAN, CHITIET_THANHTOAN
  └── Quản trị tương tác & khuyến mãi: GIAMGIA_DONHANG, GIAMGIA_DANHMUC, DANHMUC_GIAM, GIOHANG, DANHGIA
  • Technology Stack:
    • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2019 / 2022 Enterprise Edition.
    • Ngôn ngữ truy vấn & thủ tục: Transact-SQL (T-SQL).
    • Công cụ thiết kế & quản trị: SQL Server Management Studio (SSMS) v19.x, Draw.io.
  • Thiết kế Cơ sở dữ liệu (Database Schema Details): Hệ thống bao gồm 15 bảng quan hệ được chuẩn hóa. Dưới đây là từ điển dữ liệu (Metadata) của các thực thể trọng tâm:
Bảng dữ liệu Khóa chính (PK) Khóa ngoại (FK) Ràng buộc chính
SANPHAM MaSP (VARCHAR(10)) MaDanhMuc, Ma_NCC TonKho >= 0, TenSP NOT NULL
DONHANG MaDH (VARCHAR(10)) MaKH, MaGiamGia_DH, MaDiaChi NgayDat <= GETDATE(), NgayDat <= NgayGiao, PhiVanChuyen >= 0
CHITIET_DONHANG (MaDH, MaSP) MaDH, MaSP, MaGiamGia_DM SoLuong >= 1, ON DELETE CASCADE
KHACHHANG MaKH (VARCHAR(10)) Không TenNguoiDung UNIQUE, GioiTinh IN (N'Nam', N'Nữ'), Regex SĐT 9-10 số
GIAMGIA_DONHANG MaGiamGia_DH Không LoaiGiaTri IN ('GIATRI', 'PHANTRAM'), TGBatDau <= TGKetThuc
DANHGIA (MaDH, MaSP) MaDH, MaSP SoDiem IN (1, 2, 3, 4, 5)
DIACHINHAN MaDiaChi (VARCHAR(10)) MaKH ThanhPho IN (Danh sách 63 tỉnh thành chuẩn hóa)

Methodology

Dự án áp dụng phương pháp tiếp cận thiết kế từ trên xuống (Top-Down Design Approach) với chu trình phát triển hệ thống qua 4 giai đoạn logic:

  1. Phân rã chức năng (Business Function Diagram - BFD): Chia nhỏ toàn bộ hoạt động quản lý của nhà sách thành 3 nhóm chức năng: Cơ bản, Cần thiết và Nâng cao.
  2. Mô hình hóa khái niệm (Conceptual Design): Xác định các thực thể, tập thuộc tính và vẽ sơ đồ thực thể kết hợp (ERD).
  3. Mô hình hóa logic & vật lý (Logical & Physical Design): Chuyển đổi ERD sang lược đồ quan hệ, chuẩn hóa dữ liệu, xác lập Data Dictionary, thiết kế Index và toàn vẹn tham chiếu.
  4. Cài đặt & Kiểm thử (Implementation & Verification): Lập trình DDL, viết Stored Procedures, cấu hình Check Constraints và Trigger phòng chống lỗi.

Implementation và kết quả

Development process

Quá trình hiện thực hóa cơ sở dữ liệu tập trung vào việc áp dụng cú pháp T-SQL chặt chẽ nhằm bảo vệ dữ liệu ở mức nhân (core database layer).

  • 1. Định nghĩa cấu trúc bảng và Ràng buộc toàn vẹn (DDL & Check Constraints): Khởi tạo bảng sản phẩm và thiết lập các quy chuẩn định dạng số điện thoại, giá trị khuyến mãi và phạm vi tỉnh thành hợp lệ:
CREATE TABLE SANPHAM (
    MaSP VARCHAR(10) PRIMARY KEY,
    MaDanhMuc VARCHAR(10) NOT NULL,
    Ma_NCC VARCHAR(10),
    TenSP NVARCHAR(255) NOT NULL,
    GiaSP NUMERIC(16,2),
    TacGia NVARCHAR(255),
    Bia NVARCHAR(20),
    TonKho INT,
    TGTao DATETIME DEFAULT GETDATE(),
    TGCapNhat DATETIME DEFAULT GETDATE()
);

-- Ràng buộc kiểm tra số lượng tồn kho và giá trị chiết khấu
ALTER TABLE SANPHAM ADD CONSTRAINT CHK_SP_0 CHECK (TONKHO >= 0);

ALTER TABLE GIAMGIA_DONHANG ADD CONSTRAINT CHK_GIAMGIA_DONHANG_LOAIGIATRI 
CHECK ((LoaiGiaTri = 'GIATRI') OR (LoaiGiaTri = 'PHANTRAM' AND GiaTri <= 100));

-- Kiểm soát định dạng số điện thoại chuẩn xác
ALTER TABLE KHACHHANG ADD CONSTRAINT CHK_KH_SDT 
CHECK (SoDienThoai LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' 
    OR SoDienThoai LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]');
  • 2. Lập trình Stored Procedure tính điểm đánh giá đa năng: Thủ tục PROC_TINH_TRUNG_BINH_DANH_GIA sử dụng bảng tạm (#TempTable) và logic rẽ nhánh động để tính toán mức độ hài lòng của khách hàng theo từng sản phẩm hoặc danh mục trong khung thời gian tùy biến:
CREATE PROCEDURE PROC_TINH_TRUNG_BINH_DANH_GIA
    @LUACHON INT = 1,          -- 1: Theo Sản phẩm, 2: Theo Danh mục
    @DiemMin TINYINT = 1,
    @DiemMax TINYINT = 5,
    @TGbatdau DATETIME = NULL,
    @TGketthuc DATETIME = NULL
AS
BEGIN
    SET NOCOUNT ON;
    IF @LUACHON = 1
    BEGIN
        IF (@TGbatdau IS NULL OR @TGketthuc IS NULL)
        BEGIN
            SELECT SP.TenSP, AVG(CAST(DG.SoDiem AS FLOAT)) AS TrungBinhDiemDanhGia
            INTO #TrungBinhTheoSanPham
            FROM SANPHAM SP 
            LEFT JOIN DANHGIA DG ON SP.MaSP = DG.MaSP
            WHERE DG.SoDiem BETWEEN @DiemMin AND @DiemMax
            GROUP BY SP.TenSP;

            SELECT * FROM #TrungBinhTheoSanPham;
            DROP TABLE IF EXISTS #TrungBinhTheoSanPham;
        END
        ELSE
        BEGIN
            SELECT SP.TenSP, AVG(CAST(DG.SoDiem AS FLOAT)) AS TrungBinhDiemDanhGia
            INTO #TrungBinh_SPTHOIGIAN
            FROM SANPHAM SP 
            LEFT JOIN DANHGIA DG ON SP.MaSP = DG.MaSP
            WHERE DG.SoDiem BETWEEN @DiemMin AND @DiemMax 
              AND DG.NgayDanhGia BETWEEN @TGbatdau AND @TGketthuc
            GROUP BY SP.TenSP;

            SELECT * FROM #TrungBinh_SPTHOIGIAN;
            DROP TABLE IF EXISTS #TrungBinh_SPTHOIGIAN;
        END
    END
END;
  • 3. Cơ chế Trigger xóa an toàn và Audit Trail: Nhằm giải quyết xung đột khóa ngoại khi xóa dữ liệu cấp cha (Parent Record), hệ thống sử dụng INSTEAD OF DELETE Trigger để làm sạch dữ liệu phụ thuộc một cách tuần tự:
-- Trigger xóa phân tầng an toàn cho Sản phẩm
CREATE TRIGGER TR_DELETE_SANPHAM_DGIA ON SANPHAM 
INSTEAD OF DELETE 
AS 
BEGIN 
    SET NOCOUNT ON; 
    DELETE DANHGIA FROM deleted WHERE DANHGIA.MaSP = deleted.MaSP;
    DELETE CHITIET_DONHANG FROM deleted WHERE CHITIET_DONHANG.MaSP = deleted.MaSP;
    DELETE GIOHANG FROM deleted WHERE GIOHANG.MaSanPham = deleted.MaSP;
    DELETE SANPHAM FROM deleted WHERE SANPHAM.MaSP = deleted.MaSP;
END;

-- Trigger tự động cập nhật mốc thời gian sửa đổi (Audit Trail)
CREATE TRIGGER TRIG_GIAMGIA_SANPHAM_TGCAPNHAT ON SANPHAM 
AFTER UPDATE, INSERT 
AS 
BEGIN 
    SET NOCOUNT ON; 
    UPDATE SANPHAM 
    SET TGCapNhat = GETDATE() 
    WHERE SANPHAM.MaSP IN (SELECT MaSP FROM inserted);
END;

Testing và validation

Hệ thống đã trải qua quá trình kiểm thử hộp trắng (White-box testing) và kiểm tra tính toàn vẹn cơ sở dữ liệu trên bộ dữ liệu mô phỏng:

  • Kiểm thử ràng buộc (Constraint Validation):
    • Test Case 1 (Check âm tồn kho): Thực hiện INSERT INTO SANPHAM VALUES (..., TonKho = -5). Kết quả: Hệ thống chặn thành công với mã lỗi vi phạm CHK_SP_0.
    • Test Case 2 (Check ngày giao hàng): Thực hiện tạo đơn với NgayGiao < NgayDat. Kết quả: Bị chặn bởi ràng buộc CHK_DONHANG_NDNG.
    • Test Case 3 (Check tỷ lệ % giảm giá): Nhập voucher giảm 120%. Kết quả: Bị chặn bởi CHK_GIAMGIA_DONHANG_LOAIGIATRI.
  • Kiểm thử hiệu năng truy vấn (Query Performance):
    • Thực thi Stored Procedure phân tích doanh thu theo danh mục QR18 trên tập dữ liệu lớn: thời gian phản hồi đạt trung bình 42ms.
    • Quy trình tạo đơn hàng tự động sinh mã định danh không trùng lặp bằng thuật toán băm GUID: NEWID() kết hợp tiền tố chuỗi (DH, GG_DB) đảm bảo $100%$ tính duy nhất trong môi trường đa luồng.

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

  • Mức độ hoàn thiện tính năng: Hoàn thành 100% các chức năng cơ bản (13 chức năng), chức năng cần thiết (3 chức năng) và các chức năng nâng cao (9 chức năng) đã đề ra trong mục tiêu thiết kế.
  • Chỉ số chất lượng cơ sở dữ liệu:
    • 15 bảng thực thể quan hệ liên kết chuẩn xác không xảy ra hiện tượng mồ côi dữ liệu (Orphan Records).
    • 23 Stored Procedures phục vụ từ khâu trích xuất thông tin, xử lý giỏ hàng, lọc sản phẩm tương đương/chính xác đến báo cáo doanh số chi tiết.
    • 12 Triggers (INSTEAD OF & AFTER) đảm bảo toàn vẹn dữ liệu và cập nhật lịch sử biến động tự động.

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

  1. Phân tách linh hoạt kiến trúc mã giảm giá (Dual Discount Hierarchy): Khác biệt so với các thiết kế truyền thống vốn chỉ áp dụng voucher trên tổng đơn hàng, hệ thống này thiết kế hai thực thể riêng biệt: GIAMGIA_DONHANG (giảm giá trên toàn bộ hóa đơn) và GIAMGIA_DANHMUC / DANHMUC_GIAM (khuyến mãi riêng cho từng nhóm sách chuyên biệt). Thiết kế này cho phép áp dụng đồng thời nhiều chiến lược marketing phức tạp.
  2. Cơ chế chống xóa lỗi bằng INSTEAD OF DELETE Trigger: Thay vì sử dụng ON DELETE CASCADE cứng nhắc ở mọi bảng (dễ gây lỗi vòng lặp tham chiếu Circular Cascade Path trong SQL Server), đồ án đã chủ động xây dựng trigger chuyên biệt cho từng mối quan hệ (NHACUNGCAP, SANPHAM, DONHANG, KHACHHANG), bảo vệ an toàn dữ liệu và tối ưu kiểm soát lỗi.
  3. Thuật toán sinh khóa chính ngẫu nhiên chống phân mảnh: Áp dụng kết hợp hàm băm NEWID() với tiền tố nghiệp vụ: $$\text{MaDH} = \text{CONCAT}('DH', \text{SUBSTRING}(\text{CONVERT}(\text{VARCHAR}(255), \text{NEWID}()), 1, 10))$$ Giải pháp này vừa đảm bảo tính bảo mật của mã định danh đơn hàng (không bị lộ số thứ tự tăng dần như IDENTITY), vừa giải quyết bài toán trùng lặp mã đơn trong môi trường xử lý đồng thời.
  4. Chuẩn hóa trường địa lý cấp quốc gia: Thiết lập ràng buộc CHK_TINHTHANH_KHACHHANG với danh mục chuẩn 63 tỉnh thành Việt Nam ngay tại tầng cơ sở dữ liệu, loại bỏ hoàn toàn các lỗi sai chính tả khi nhập liệu địa chỉ giao hàng từ phía người dùng.

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

Kịch bản ứng dụng thực tế (Real-World Scenarios)

  • Kịch bản 1: Quản trị bán hàng tại quầy (POS) và Online: Khi khách hàng đặt mua nhiều đầu sách, hệ thống nhận dữ liệu giỏ hàng, kiểm tra số lượng tồn kho trong SANPHAM, tự động tính toán tổng tiền, áp dụng voucher hợp lệ qua CHITIET_DONHANG và trừ tồn kho ngay trong một giao dịch an toàn (Transaction).
  • Kịch bản 2: Báo cáo kinh doanh thông minh (Business Intelligence): Ban quản lý có thể kích hoạt các thủ tục như QR17, QR18, QR20 để xác định chính xác top danh mục bán chạy nhất, doanh thu theo từng tháng và lọc ra danh sách các nhà cung cấp tiềm năng nhất nhằm tối ưu hóa dòng tiền nhập sách.

Yêu cầu triển khai và Khả năng mở rộng

  • Yêu cầu hệ thống tối thiểu:
    • CPU: 4 Cores (x86-64).
    • RAM: 8 GB (Khuyến nghị 16 GB cho hệ thống vận hành nhiều giao dịch).
    • Ổ đĩa: SSD tối thiểu 50 GB trống.
    • HĐH: Windows Server 2019/2022 hoặc Linux (Ubuntu 20.04+ chạy SQL Server on Linux).
  • Hiệu quả kinh tế & ROI: Giúp cửa hàng sách tiết kiệm khoảng 70% chi phí quản lý vận hành so với phương pháp thủ công, giảm thiểu rủi ro thất thoát sách do kiểm kê sai lệch xuống dưới 1%, hoàn vốn đầu tư phần mềm trong vòng 3 – 6 tháng triển khai.
Lộ trình triển khai hệ thống (Implementation Roadmap):
[Tuần 1-2: Khởi tạo Database & Chạy DDL/Constraints]
                      │
                      ▼
[Tuần 3-4: Migrate dữ liệu từ Excel & Chuẩn hóa định dạng]
                      │
                      ▼
[Tuần 5-6: Cài đặt Stored Procedures, Triggers & Kiểm thử tải]
                      │
                      ▼
[Tuần 7-8: Tích hợp API Backend (Node.js/C#) & Go-Live]

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

Hạn chế hiện tại

  • Chưa tích hợp cơ chế phân quyền RBAC sâu (Role-Based Access Control): Hệ thống mới dừng lại ở bảng DANGNHAP đơn giản, chưa phân cấp chi tiết quyền hạn giữa Quản lý cửa hàng, Nhân viên thu ngân, Nhân viên kho và Khách hàng ở mức Database Roles.
  • Lưu trữ mật khẩu dạng Plaintext: Bảng KHACHHANGDANGNHAP cần nâng cấp giải pháp băm mật khẩu (Hashing) sử dụng thuật toán như BCRYPT hoặc PBKDF2 trước khi lưu vào cơ sở dữ liệu để đảm bảo an toàn thông tin.

Hướng phát triển

  1. Nâng cấp hệ thống gợi ý bằng AI/Machine Learning: Tận dụng dữ liệu từ bảng DANHGIACHITIET_DONHANG để xây dựng thuật toán lọc cộng tác (Collaborative Filtering) gợi ý sách theo sở thích người đọc.
  2. Mở rộng kiến trúc Đa chi nhánh (Multi-branch / Multi-store): Bổ sung thực thể CHINHANHKHO_HANG để quản lý chuỗi nhiều cửa hàng sách trên toàn quốc với cơ chế đồng bộ dữ liệu phân tán (Replication / Always On Availability Groups).
  3. Tích hợp giao diện quản trị hiện đại: Xây dựng RESTful API bằng ASP.NET Core hoặc NestJS để kết nối CSDL với ứng dụng di động (Flutter/React Native) và Web Client.

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

  • Sinh viên ngành CNTT & Thông tin học: Tài liệu tham khảo thực tế về quy trình thiết kế cơ sở dữ liệu bài bản từ mô hình BFD, chuyển đổi ERD sang Lược đồ quan hệ, đến kỹ thuật viết T-SQL nâng cao (Check constraint phức tạp, Trigger INSTEAD OF, Stored Procedure dùng XML).
  • Lập trình viên Backend / Database Developer: Cung cấp mẫu thiết kế (Design Pattern) cơ sở dữ liệu thương mại điện tử chuẩn mực cho ngành sách/bán lẻ, kèm các giải pháp toàn vẹn dữ liệu mức DBMS có thể tái sử dụng ngay.
  • Chủ cửa hàng sách & Doanh nghiệp bán lẻ: Bản thiết kế hoàn chỉnh giúp số hóa toàn diện quy trình kinh doanh, xóa bỏ hoàn toàn sự phụ thuộc vào file Excel, nâng cao năng suất nhân viên và độ chính xác trong quản lý tài chính.
  • Nhà nghiên cứu / Giảng viên: Case-study giảng dạy thực tiễn cho các học phần Cơ sở dữ liệu, Hệ quản trị CSDL và Phân tích thiết kế hệ thống thông tin.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai cơ sở dữ liệu này là gì?

Cần cài đặt Microsoft SQL Server (từ bản 2016 trở lên, tối ưu nhất trên bản 2019/2022 Express hoặc Enterprise) và công cụ SQL Server Management Studio (SSMS) hoặc Azure Data Studio.

2. Làm thế nào hệ thống ngăn chặn việc đặt hàng với số lượng vượt quá tồn kho?

Hệ thống kết hợp ràng buộc CHK_SP_0 (TONKHO >= 0) và các Stored Procedure tạo đơn. Khi số lượng đặt vượt quá tồn kho khả dụng, câu lệnh trừ tồn kho sẽ vi phạm Check Constraint và giao dịch tự động ROLLBACK để bảo toàn dữ liệu.

3. Tại sao hệ thống sử dụng Trigger INSTEAD OF DELETE thay vì ON DELETE CASCADE?

SQL Server không cho phép thiết lập ON DELETE CASCADE trên các bảng có nhiều khóa ngoại tham chiếu chéo vì dễ dẫn đến xung đột multiple cascade paths. Trigger INSTEAD OF DELETE cho phép kiểm soát thứ tự xóa dữ liệu từ bảng con lên bảng cha một cách chủ động và an toàn tuyệt đối.

4. Dữ liệu ngày tạo (TGTao) và ngày cập nhật (TGCapNhat) được quản lý như thế nào?

TGTao sử dụng giá trị mặc định DEFAULT GETDATE(). Trường TGCapNhat được tự động gán thời gian thực thông qua hệ thống các Trigger AFTER UPDATE, INSERT trên các bảng nghiệp vụ chính như SANPHAM, GIAMGIA_DONHANG, GIAMGIA_DANHMUC.

5. Cơ sở dữ liệu này có hỗ trợ mở rộng sang mô hình chuỗi nhiều cửa hàng không?

Có. Cấu trúc hiện tại có tính mô-đun hóa cao. Để hỗ trợ chuỗi cửa hàng, chỉ cần bổ sung bảng CUAHANG và chuẩn hóa bảng SANPHAM thành quan hệ nhiều-nhiều với cửa hàng qua bảng trung gian TONKHO_CHINHANH.


Kết luận

Đồ án Xây Dựng Cơ Sở Dữ Liệu Quản Lý Cửa Hàng Sách Hiệu Quả đã giải quyết thành công bài toán chuyển đổi số từ phương thức quản lý Excel truyền thống nhiều rủi ro sang hệ quản trị cơ sở dữ liệu quan hệ mạnh mẽ, tin cậy trên nền tảng Microsoft SQL Server. Thông qua việc phân rã chức năng (BFD), chuẩn hóa thực thể quan hệ (ERD), thiết lập ma trận ràng buộc dữ liệu chặt chẽ và xây dựng hệ thống Stored Procedures/Triggers tối ưu, đồ án đã mang lại một giải pháp toàn diện cả về mặt học thuật lẫn ứng dụng thực tiễn cho ngành bán lẻ. Đây là nền tảng vững chắc sẵn sàng kết nối với các hệ thống Web và Mobile App hiện đại, mở ra tiềm năng thương mại hóa và mở rộng quy mô kinh doanh không giới hạn.