Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh chuyển đổi số đang diễn ra mạnh mẽ trong các mô hình quản trị doanh nghiệp, việc chuyển dịch và kết hợp giữa mô hình bán lẻ truyền thống (offline) sang các hệ thống cửa hàng trực tuyến (online) trở thành giải pháp tất yếu. Đồ án môn học Unit 04: Database Design & Development thuộc chương trình BTEC Level 5 HND Diploma in Computing (tác giả: Trần Đức Long, mã sinh viên: GCH210562) được xây dựng dựa trên bài toán thực tế của chuỗi bán lẻ công nghệ FPT Shop.

Vấn đề cốt lõi đặt ra là FPT Shop gặp khó khăn trong việc xử lý khối lượng dữ liệu ngày càng gia tăng từ tất cả các chi nhánh trên toàn quốc khi quy mô số lượng cửa hàng mở rộng liên tục. Doanh nghiệp cần một hệ thống cơ sở dữ liệu mới để quản lý tập trung toàn bộ dữ liệu từ nhân viên, khách hàng đến các danh mục hàng hóa, đơn hàng và các chương trình giảm giá.

Nhiệm vụ và mục tiêu nghiên cứu của đồ án bao gồm:

  1. Khảo sát, phân tích quy trình kinh doanh (Business process), các quy tắc nghiệp vụ (Business rules), yêu cầu chức năng (Functional requirements) và phi chức năng (Non-functional requirements) cho hệ thống quản lý FPT Shop.
  2. Thiết kế mô hình dữ liệu quan hệ gồm 8 bảng dữ liệu, phân tách thành hai phân hệ chính: phân hệ bán hàng (Sales) và phân hệ sản phẩm (Productions).
  3. Thực hiện phân tích và chuẩn hóa cơ sở dữ liệu qua các dạng chuẩn 1NF, 2NF và 3NF nhằm loại bỏ dư thừa dữ liệu và ngăn ngừa các dị thường dữ liệu (Anomalies).
  4. Thiết lập ràng buộc toàn vẹn và xác thực dữ liệu (Data validation) bằng hệ quản trị cơ sở dữ liệu Microsoft SQL Server.
  5. Thiết kế khung giao diện (Wireframe) cho các luồng thao tác chính của ứng dụng và đề xuất kế hoạch phát triển tiếp theo.

Đối tượng nghiên cứu là hệ thống cơ sở dữ liệu quan hệ phục vụ hoạt động quản lý bán lẻ, luân chuyển hàng hóa và chăm sóc khách hàng tại chuỗi cửa hàng FPT Shop trong phạm vi đồ án môn học năm 2023.


Cơ sở lý thuyết và phương pháp

Đồ án ứng dụng nền tảng lý thuyết cơ sở dữ liệu quan hệ (Relational Database Management System - RDBMS) và các nguyên lý chuẩn hóa dữ liệu:

  • Lý thuyết mô hình hóa dữ liệu: Sử dụng mô hình thực thể - mối quan hệ (Entity-Relationship Diagram - ERD) ở cấp độ khái niệm (Conceptual level) và mức logic hoàn chỉnh (Complete ERD) để biểu diễn 8 thực thể và các mối quan hệ một - nhiều ($1-m$).
  • Lý thuyết chuẩn hóa cơ sở dữ liệu (Database Normalization): Áp dụng phương pháp phân tích sự phụ thuộc hàm nhằm đưa các bảng dữ liệu về dạng chuẩn 1 (1NF - tính nguyên tố của thuộc tính), dạng chuẩn 2 (2NF - loại bỏ phụ thuộc bộ phận vào khóa chính), và dạng chuẩn 3 (3NF - loại bỏ phụ thuộc bắc cầu).
  • Quy tắc toàn vẹn dữ liệu (Data Integrity & Validation): Áp dụng các ràng buộc khóa chính (Primary Key - PK), khóa ngoại (Foreign Key - FK), ràng buộc duy nhất (Unique Constraint), cho phép giá trị rỗng (Allow Null), và cơ chế cập nhật/xóa theo tầng (On Delete Cascade, On Update Cascade).
  • Phương pháp nghiên cứu: Phương pháp phân tích yêu cầu từ các kịch bản người dùng (User Stories), quy trình nghiệp vụ; phương pháp mô hình hóa quan hệ dữ liệu; phương pháp tạo mẫu wireframe giao diện chức năng.
  • Môi trường và nguồn dữ liệu: Hệ quản trị cơ sở dữ liệu Microsoft SQL Server cùng dữ liệu giả lập đại diện cho các thực thể khách hàng, nhân viên, sản phẩm, đơn hàng và bảng thống kê kết quả kinh doanh FPT Shop.

Thiết kế và triển khai

Cơ sở dữ liệu được thiết kế trên hệ quản trị Microsoft SQL Server, phân chia thành 8 thực thể thuộc hai phân hệ chức năng:

+-------------------------------------------------------------------------+
|                        FPT SHOP DATABASE SYSTEM                         |
+------------------------------------+------------------------------------+
|       Phân hệ Bán hàng (Sales)     |   Phân hệ Sản phẩm (Productions)   |
+------------------------------------+------------------------------------+
| - Customers (Khách hàng)           | - Products (Sản phẩm)              |
| - Staffs (Nhân viên)               | - Categories (Danh mục sản phẩm)   |
| - Orders (Đơn hàng)                | - Brands (Thương hiệu)             |
| - OrderItems (Chi tiết đơn hàng)   |                                    |
| - Discounts (Mã giảm giá)          |                                    |
+------------------------------------+------------------------------------+

Các mối quan hệ thực thể ($1-m$)

  • Customer - Orders ($1-m$): Một khách hàng có thể đặt nhiều đơn hàng; mỗi đơn hàng chỉ thuộc về một khách hàng duy nhất.
  • Staff - Orders ($1-m$): Một nhân viên có thể xử lý/tạo nhiều đơn hàng; mỗi đơn hàng được gán cho một nhân viên cụ thể.
  • Staffs - Staffs ($1-m$): Mối quan hệ đệ quy (tự tham chiếu) trong đó một quản lý (ManagerId) phụ trách nhiều nhân viên, nhưng mỗi nhân viên chỉ báo cáo cho một quản lý trực tiếp.
  • Orders - OrderItems ($1-m$): Một đơn hàng chứa nhiều chi tiết mặt hàng mua; mỗi bản ghi chi tiết đơn hàng chỉ liên kết với một mã đơn hàng.
  • Discount - OrderItems ($1-m$): Một mã giảm giá có thể áp dụng cho nhiều dòng sản phẩm đặt mua; mỗi dòng chi tiết chỉ gắn một mã giảm giá.
  • Product - OrderItems ($1-m$): Một sản phẩm có thể xuất hiện trên nhiều chi tiết đơn hàng khác nhau.
  • Brands - Products ($1-m$): Một thương hiệu có nhiều sản phẩm; mỗi sản phẩm trực thuộc một thương hiệu.
  • Categories - Products ($1-m$): Một danh mục chứa nhiều sản phẩm; mỗi sản phẩm thuộc về một danh mục xác định.

Bảng đặc tả trường dữ liệu và ràng buộc (Data Validation)

Tên bảng Thuộc tính (Field Name) Kiểu dữ liệu Ràng buộc (Constraint) Diễn giải
Customers CustomerId int PK, Identity(1,1) Mã định danh duy nhất của khách hàng
FirstName, LastName, MidName nvarchar(50) Allow Null Họ, tên và tên đệm khách hàng
Street, District, City nvarchar(250) Allow Null Địa chỉ chi tiết (đường, quận/huyện, thành phố)
Email varchar(250) Unique Địa chỉ thư điện tử duy nhất
PhoneNumber varchar(20) Unique Số điện thoại duy nhất
Staffs StaffId int PK, Identity(1,1) Mã định danh duy nhất của nhân viên
FirstName, LastName, MidName nvarchar(50) Allow Null Họ, tên đệm, tên nhân viên
Status varchar(50) Allow Null Trạng thái làm việc của nhân viên
PhoneNumber, Email varchar(20), varchar(250) Unique Số điện thoại và email riêng biệt
ManagerId int FK (tham chiếu Staffs) Mã quản lý trực tiếp
Orders OrderId int PK, Identity(1,1) Mã định danh đơn hàng
CreatedDate, RequireDate, ShippedDate datetime Allow Null Ngày tạo, ngày yêu cầu giao, ngày đã giao
OrderStatus varchar(250) Allow Null Trạng thái xử lý đơn hàng
CustomerId int FK (On Delete/Update Cascade) Mã khách hàng đặt hàng
StaffId int FK Mã nhân viên phụ trách đơn hàng
OrderItems OrderItemId int PK, Identity(1,1) Mã chi tiết đơn hàng
Quantity int Allow Null Số lượng sản phẩm
TotalPrice float Allow Null Tổng tiền thành phần
OrderId int FK (On Delete/Update Cascade) Mã đơn hàng tham chiếu
ProductId varchar(250) FK (On Delete/Update Cascade) Mã sản phẩm được chọn
DiscountId int FK (On Delete/Update Cascade) Mã giảm giá áp dụng
Discounts DiscountId int PK, Identity(1,1) Mã giảm giá
DiscountName, DiscountType nvarchar(250), nvarchar Allow Null Tên chương trình, loại mã giảm giá
StartAt, EndAt datetime Allow Null Thời gian bắt đầu và kết thúc áp dụng
DiscountPercent, DiscountAmount float Allow Null Tỷ lệ phần trăm hoặc số tiền chiết khấu
Products ProductId int PK, Identity(1,1) Mã sản phẩm
Name nvarchar(250) Allow Null Tên sản phẩm
Price, Year datetime / số liệu Allow Null Đơn giá và thông tin năm sản xuất
BrandId nvarchar FK (On Delete/Update Cascade) Mã thương hiệu
CategoryId float FK (On Delete/Update Cascade) Mã phân loại sản phẩm
Categories CategoryId int PK, Identity(1,1) Mã phân loại danh mục
Name nvarchar(250) Allow Null Tên danh mục sản phẩm
Brands BrandId int PK, Identity(1,1) Mã thương hiệu
Name nvarchar(250) Allow Null Tên thương hiệu

Thiết kế khung giao diện ứng dụng (Wireframe)

Tác giả xây dựng 9 mẫu giao diện phác thảo phục vụ các nhóm chức năng cơ bản:

  1. Login interface: Màn hình đăng nhập cho phép người dùng xác thực thông qua tài khoản email/số điện thoại FPT.
  2. Main layout: Giao diện điều hướng trung tâm với 4 khối tác vụ chính: Xem (View), Thêm (Add), Cập nhật (Update) và Thống kê (Statistics).
  3. View options & List layout: Menu truy xuất danh sách thông tin khách hàng, nhân viên, đơn hàng và sản phẩm.
  4. Add options & Add new layout: Menu và form biểu mẫu nhập dữ liệu mới cho nhân viên, khách hàng, hàng hóa.
  5. Update options & Update Customer layout: Biểu mẫu chỉnh sửa thông tin bản ghi với sự kiểm duyệt từ cấp quản lý.
  6. Statistic options: Bảng tổng hợp số liệu kinh doanh (Top 5 khách hàng chi tiêu nhiều nhất năm, Top 5 sản phẩm bán chạy nhất năm, Top 5 nhân viên có doanh số cao nhất).

Nội dung chính theo từng chương

A. Statements of user and system requirements (Yêu cầu người dùng và hệ thống)

Phần này phân tích tổng quan các đối tượng tương tác với hệ thống, thiết lập luồng vận hành và các tiêu chuẩn kỹ thuật:

  • Quy trình nghiệp vụ (Business process): Khách hàng và nhân viên đăng nhập qua giao diện; khách hàng tạo đơn hàng và có thể gửi yêu cầu thay đổi thông tin tới quản lý; nhân viên tiếp nhận đơn, cập nhật tiến độ và ghi chú; giám đốc và kế toán xem các báo cáo tổng hợp.
  • Quy tắc nghiệp vụ (Business rules): Khách hàng không được tự ý xóa hoặc thay đổi dữ liệu đơn hàng đã xác nhận mà phải gửi yêu cầu phê duyệt tới quản trị viên. Kế toán chịu trách nhiệm theo dõi thống kê doanh thu và báo cáo ban giám đốc để ban hành chính sách thưởng nhân viên và mã khuyến mãi cho khách hàng.
  • Yêu cầu chức năng theo vai trò (Functional requirements):
    • Customer: Đăng nhập, tra cứu thông tin sản phẩm, tạo đơn hàng, yêu cầu sửa đổi thông tin đơn hàng.
    • Staff: Tra cứu đơn hàng và sản phẩm, cập nhật trạng thái đơn hàng, xem thông tin khách hàng.
    • Manager: Phê duyệt yêu cầu chỉnh sửa thông tin từ khách hàng, quản lý nhân viên trực thuộc, thêm/sửa/xóa sản phẩm và dữ liệu nhân viên.
    • Product: Quản lý thông tin định danh thương hiệu và phân loại giá cả.
  • Yêu cầu phi chức năng (Non-functional requirements):
    • Thời gian phiên đăng nhập hệ thống: giới hạn 20 phút.
    • Khả năng chịu tải: hỗ trợ tối đa 500 người dùng đồng thời (concurrent users).
    • Tốc độ phản hồi hệ thống: dưới 3 giây cho mỗi thao tác truy vấn web.

C. Design the relational database system (Thiết kế hệ thống cơ sở dữ liệu quan hệ)

Chương này trình bày chi tiết tiến trình thiết kế cơ sở dữ liệu quan hệ, trọng tâm là phân tích sự phụ thuộc hàm và chuẩn hóa cấu trúc bảng từ 1NF đến 3NF.

1. Dạng chuẩn 1 (1NF - First Normal Form)

  • Điều kiện: Các cột chỉ chứa các giá trị nguyên tố (nguyên tử - atomic values), dữ liệu trong cùng một cột phải cùng miền giá trị, tên cột không trùng lặp và thứ tự bản ghi không ảnh hưởng tới ý nghĩa dữ liệu.
  • Xử lý vi phạm: Bảng Staff ban đầu chứa thuộc tính đa trị tại cột PhoneNumber (ví dụ: nhân viên Trần Đức Long có hai số điện thoại 0327268237, 0945848855). Tác giả tiến hành tách các giá trị đa trị thành từng dòng riêng biệt chứa giá trị đơn lẻ để đạt chuẩn 1NF.

2. Dạng chuẩn 2 (2NF - Second Normal Form)

  • Điều kiện: Bảng đạt 1NF và tất cả các thuộc tính không khóa (non-key attributes) phải phụ thuộc hàm đầy đủ vào toàn bộ khóa chính (primary key), không phụ thuộc vào một phần của khóa.
  • Xử lý vi phạm: Bảng Customers ban đầu lưu trữ kèm cột thông tin sản phẩm mua (Products), trong đó tên sản phẩm không phụ thuộc trực tiếp vào khóa chính CustomerId. Giải pháp chuẩn hóa là tách dữ liệu thành 2 bảng riêng biệt: bảng Customers (chứa CustomerId, Name, Address, PhoneNumber) và bảng mua hàng Purchase (chứa CustomerId, Products).

3. Dạng chuẩn 3 (3NF - Third Normal Form)

  • Điều kiện: Bảng đạt 2NF và không tồn tại phụ thuộc bắc cầu giữa các thuộc tính không khóa với khóa chính.
  • Xử lý vi phạm: Trong bảng đơn hàng ban đầu gồm các trường {OrderId, CreateDate, RequireDate, OrderStatus, CustomerId, CustomerName, CustomerAddress}, khóa chính là OrderId. Tuy nhiên, thuộc tính CustomerName và CustomerAddress lại phụ thuộc vào CustomerId, trong khi CustomerId phụ thuộc vào OrderId ($OrderId \rightarrow CustomerId \rightarrow {CustomerName, CustomerAddress}$). Đây là phụ thuộc bắc cầu.
  • Kết quả phân rã 3NF:
    • Bảng Orders: {OrderId, CreateDate, RequireDate, OrderStatus, CustomerId} với khóa chính là OrderId và khóa ngoại CustomerId.
    • Bảng Customers: {CustomerId, CustomerName, CustomerAddress} với khóa chính là CustomerId.
Phụ thuộc bắc cầu ban đầu:
OrderId (PK) ---> CustomerId ---> (CustomerName, CustomerAddress)

Phân rã thành 2 bảng đạt 3NF:
[Table Orders]   : OrderId (PK), CreateDate, RequireDate, OrderStatus, CustomerId (FK)
[Table Customers]: CustomerId (PK), CustomerName, CustomerAddress

2.6 Evaluation (Đánh giá hệ thống)

Tác giả tự đánh giá các điểm mạnh và điểm yếu của thiết kế:

  • Ưu điểm (Advantages):
    • Giao diện: Wireframe thân thiện, quy trình hoạt động rõ ràng, tích hợp module thống kê phục vụ ban điều hành ra quyết định chính sách bán hàng.
    • Bảo mật & Phân quyền: Xác thực tài khoản cá nhân qua email/mật khẩu riêng biệt.
    • Kiến trúc dữ liệu: Mô hình hóa nhất quán 8 thực thể; tối ưu hóa bộ nhớ nhờ định nghĩa kiểu dữ liệu phù hợp; cấu trúc 3NF giúp triệt tiêu dư thừa dữ liệu; thiết lập cơ chế khóa ngoại và quy tắc On Delete/Update Cascade ngăn chặn việc mất dữ liệu và bảo đảm toàn vẹn tham chiếu.
  • Hạn chế (Disadvantages):
    • Một số kiểu dữ liệu làm tăng độ phức tạp khi nhập liệu (ví dụ: kiểu dữ liệu datetime yêu cầu định dạng ngày/tháng/năm chính xác tuyệt đối).
    • Kiểu dữ liệu varchar/nvarchar cấp phát tĩnh có thể chiếm dụng dung lượng nếu dữ liệu thực tế không lấp đầy bộ nhớ đã cấp.
    • Việc chuẩn hóa thành 8 bảng làm tăng số lượng thực thể và làm chậm thời gian thực thi các truy vấn phức tạp do phải kết nối bảng (join).
    • Chưa phân tách triệt để quyền hạn giữa cấp quản lý cao cấp và nhân viên nhập liệu thông thường trong cấu trúc bảng.

Kết quả và đóng góp

Đồ án đã đạt được các kết quả kỹ thuật cụ thể:

  1. Thiết kế hoàn chỉnh mô hình CSDL quan hệ FPT Shop: Xây dựng thành công 8 bảng dữ liệu chuẩn hóa 3NF gồm Customers, Staffs, Orders, OrderItems, Discounts, Products, Categories, Brands.
  2. Hệ thống hóa toàn bộ ràng buộc kỹ thuật: Xác lập chính xác các khóa chính tự tăng identity(1,1), các khóa ngoại với hành vi lan truyền (Cascade) và các ràng buộc duy nhất (Unique) cho email và số điện thoại.
  3. Xây dựng tiêu chuẩn hiệu năng hệ thống: Xác định rõ chỉ số chịu tải 500 người dùng truy cập đồng thời và thời gian phản hồi dưới 3 giây.
  4. Bộ khung giao diện vận hành hoàn chỉnh: Cung cấp 9 bản vẽ wireframe mô tả đầy đủ các màn hình đăng nhập, quản lý dữ liệu và thống kê số liệu Top 5 (sản phẩm bán chạy, khách hàng tiêu biểu, nhân viên xuất sắc).

Hạn chế và hướng nghiên cứu tiếp

Dựa trên các phân tích trong văn bản, những hạn chế kỹ thuật hiện tại và giải pháp tương lai được xác định gồm:

  • Hạn chế:
    • Cấu trúc trường dữ liệu của một số thực thể còn thiếu các thông tin chi tiết mở rộng của sản phẩm.
    • Truy vấn dữ liệu có thể suy giảm hiệu năng khi mở rộng quy mô do số lượng bảng liên kết nhiều sau chuẩn hóa.
  • Kế hoạch phát triển tương lai (Future development plans):
    • Thiết lập phân quyền người dùng chi tiết hơn (Role-based access control).
    • Bổ sung các Trigger DDL và DML nhằm kiểm soát biến động dữ liệu và nâng cao năng lực bảo mật hệ thống.
    • Tạo chỉ mục (Index) trên các bảng để tăng tốc độ xử lý các câu truy vấn phức tạp.
    • Bổ sung thêm các bảng thực thể mới phục vụ các tính năng thương mại điện tử mở rộng như đánh giá sản phẩm (Product reviews) và danh sách yêu thích (Wish lists).

Giá trị tham khảo

Đồ án là tài liệu tham khảo phù hợp cho:

  • Sinh viên chuyên ngành Công nghệ thông tin, Hệ thống thông tin đang thực hiện bài tập lớn hoặc đồ án môn học về Thiết kế cơ sở dữ liệu quan hệ (đặc biệt là môn Unit 04: Database Design & Development trong chương trình BTEC HND).
  • Lập trình viên mới bắt đầu muốn tham khảo quy trình phân tích từ yêu cầu bài toán nghiệp vụ bán lẻ thực tế sang mô hình thực thể ERD, thiết lập ràng buộc toàn vẹn trong SQL Server và phương pháp luận chuẩn hóa dữ liệu 1NF - 2NF - 3NF kèm ví dụ minh họa trực quan.

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

1. Cơ sở dữ liệu FPT Shop trong đồ án gồm những bảng nào và được phân chia ra sao?
Cơ sở dữ liệu gồm 8 bảng phân thành 2 phân hệ: Phân hệ bán hàng (Sales) gồm Customers, Staffs, Orders, OrderItems, Discounts; và Phân hệ sản phẩm (Productions) gồm Products, Categories, Brands.

2. Tác giả đã minh họa việc vi phạm và xử lý chuẩn hóa 3NF như thế nào?
Tác giả chỉ ra trong bảng đơn hàng ban đầu, thuộc tính CustomerName và CustomerAddress phụ thuộc vào CustomerId, mà CustomerId lại phụ thuộc vào khóa chính OrderId (tạo nên phụ thuộc bắc cầu). Tác giả đã giải quyết bằng cách tách thành bảng Orders (chỉ giữ lại CustomerId làm khóa ngoại) và bảng Customers (chứa CustomerId làm khóa chính cùng tên và địa chỉ khách hàng).

3. Yêu cầu phi chức năng (Non-functional requirements) của hệ thống được quy định cụ thể ra sao?
Hệ thống quy định phiên đăng nhập của người dùng tối đa trong 20 phút, hỗ trợ đồng thời tối đa 500 người dùng truy cập cùng lúc (500 users at once) và thời gian phản hồi của trang web phải dưới 3 giây (less than 3 seconds).

4. Ràng buộc khóa ngoại trong các bảng được cấu hình như thế nào để bảo vệ dữ liệu?
Các khóa ngoại giữa bảng Orders với Customers, OrderItems với Orders/Products/Discounts, và Products với Brands/Categories đều được cấu hình cơ chế On Delete Cascade và On Update Cascade để đảm bảo khi bản ghi cha bị xóa hoặc cập nhật thì các dữ liệu liên quan ở bảng con sẽ tự động được đồng bộ.

5. Kế hoạch tương lai nào được đề xuất để nâng cao hiệu năng và an toàn cho cơ sở dữ liệu?
Tác giả đề xuất xây dựng các DDL/DML Triggers để ngăn chặn truy cập trái phép và theo dõi thay đổi dữ liệu, đồng thời thiết lập các chỉ mục (Index) trên các bảng dữ liệu để tối ưu hóa tốc độ truy vấn khi dữ liệu tăng trưởng.


Kết luận

Đồ án Unit 04: Database Design & Development của sinh viên Trần Đức Long đã giải quyết bài toán quản lý dữ liệu bán lẻ chuỗi cửa hàng FPT Shop một cách có hệ thống. Bằng việc phân tích kỹ lưỡng các yêu cầu nghiệp vụ, tác giả đã thiết kế mô hình dữ liệu quan hệ gồm 8 bảng đạt chuẩn hóa 3NF, đi kèm đầy đủ ràng buộc toàn vẹn trên MS SQL Server và hệ thống wireframe giao diện trực quan. Nghiên cứu cung cấp một quy trình mẫu hoàn chỉnh về thiết kế và chuẩn hóa cơ sở dữ liệu cho các ứng dụng quản lý thương mại và bán lẻ.