Dự án học thuật / 06
Thiết kế Cơ sở dữ liệu Quản lý Kho Mỹ phẩm
Từ yêu cầu nghiệp vụ đến cơ sở dữ liệu quan hệ hoàn chỉnh trên SQL Server
Tóm tắt nhanh
Tổng quan dự án
Nội dung nghiên cứu
Vấn đề: khi một doanh nghiệp cần kiểm soát chặt chẽ dòng chảy hàng hóa
Nhóm tự thảo luận và lựa chọn bài toán quản lý kho mỹ phẩm — một lĩnh vực có đặc thù riêng: sản phẩm có hạn sử dụng, cần theo dõi theo từng kho, và mỗi giao dịch nhập/xuất đều phải được ghi nhận chính xác để không gây sai lệch tồn kho. Doanh nghiệp giả định trong bài toán cần một hệ thống giúp quản lý nhiều kho hàng cùng lúc, theo dõi sản phẩm theo từng vị trí, quản lý quy trình nhập hàng từ nhà cung cấp, xuất hàng cho khách hàng, và quan trọng nhất — đảm bảo dữ liệu luôn chính xác mỗi khi có nghiệp vụ phát sinh.
Đây là một trong những project đầu tiên tiếp cận bài toán thiết kế cơ sở dữ liệu từ đầu, không chỉ là viết câu lệnh SQL mà phải tự đặt câu hỏi: hệ thống thực sự cần những thực thể nào, và giữa chúng có quan hệ gì.
Vai trò: từ mô hình hóa đến hiện thực hóa trên SQL Server
Phụ trách chính các công việc sau:
- Thiết kế sơ đồ ERD bằng draw.io dựa trên cơ sở dữ liệu đã được nhóm thống nhất
- Xây dựng các bảng trên Microsoft SQL Server
- Thêm dữ liệu mẫu vào hệ thống (kết hợp dữ liệu nhóm tự xây và dữ liệu được AI hỗ trợ sinh, sau đó chỉnh sửa lại cho phù hợp với nghiệp vụ kho mỹ phẩm)
- Tham gia hoàn thiện báo cáo và slide trình bày
Quá trình: khi việc khó nhất không phải là viết SQL mà là tư duy đúng quan hệ
Phần khó khăn lớn nhất không nằm ở cú pháp truy vấn, mà ở việc mô hình hóa đúng các bảng chi tiết nghiệp vụ — đặc biệt là hai bảng CHITIETPHIEUNHAP và CHITIETPHIEUXUAT. Việc xác định đúng mối quan hệ giữa SANPHAM với CHITIETPHIEUNHAP, giữa CHITIETPHIEUNHAP với PHIEUNHAP, và tương tự cho phía xuất hàng, đòi hỏi cả nhóm phải thảo luận nhiều lần để đảm bảo mô hình vừa phản ánh đúng nghiệp vụ thực tế, vừa tránh dư thừa dữ liệu.
Quy trình thực hiện đi theo đúng các bước chuẩn của thiết kế cơ sở dữ liệu:
- Phân tích bài toán quản lý kho và xác định các thực thể, thuộc tính cần thiết
- Thiết kế mô hình ERD, xác định Cardinality giữa các thực thể
- Chuyển đổi từ ERD sang mô hình quan hệ (RD)
- Chuẩn hóa dữ liệu để loại bỏ dư thừa và đảm bảo tính toàn vẹn
- Thiết kế các ràng buộc: Primary Key, Foreign Key, Composite Key, CHECK Constraint, UNIQUE Constraint
- Xây dựng cơ sở dữ liệu thật trên SQL Server và sinh dữ liệu mẫu
- Viết các câu truy vấn khai thác dữ liệu, sử dụng JOIN, GROUP BY, Aggregate Query và Common Table Expression (CTE)
- Xây dựng Trigger để kiểm soát tính nhất quán dữ liệu
Kết quả đạt được
- Thiết kế hoàn chỉnh cơ sở dữ liệu quan hệ gồm 10 bảng
- Xây dựng thành công trên Microsoft SQL Server với đầy đủ ràng buộc toàn vẹn
- Triển khai Trigger cho các nghiệp vụ quan trọng: kiểm tra ngày sản xuất/hạn sử dụng, cập nhật tồn kho tự động khi xuất hàng, và ngăn xóa phiếu nhập để bảo vệ lịch sử giao dịch
- Viết các truy vấn thống kê tiêu biểu: tổng doanh thu theo tháng, tổng giá trị nhập hàng theo nhà cung cấp, số lượng nhân viên theo từng kho, các tháng có doanh thu thấp hơn mức trung bình
- Hoàn thành đầy đủ báo cáo và slide trình bày theo yêu cầu môn học
Bài học lớn nhất
Project này là nền tảng SQL và thiết kế cơ sở dữ liệu trước khi học sâu hơn về Phân tích dữ liệu và Kỹ thuật dữ liệu ở các môn sau. Điều rút ra rõ nhất là tầm quan trọng của chuẩn hóa dữ liệu — một thiết kế tưởng đơn giản nhưng nếu không cẩn thận trong việc xác định khóa và mối quan hệ, sẽ dẫn đến dữ liệu trùng lặp hoặc mất nhất quán khi hệ thống vận hành thật. Vai trò của Trigger trong việc tự động đảm bảo tính đúng đắn của dữ liệu cũng là một khái niệm quan trọng được hiểu sâu hơn qua project này.
Nếu làm lại
- Thiết kế thêm Stored Procedure để đóng gói logic nghiệp vụ phức tạp
- Xây dựng View phục vụ báo cáo, giảm tải việc viết lại truy vấn dài
- Thiết kế phân quyền người dùng (User Permission) cho hệ thống
- Chuẩn hóa cơ sở dữ liệu kỹ hơn, đặc biệt ở các bảng chi tiết nghiệp vụ
- Lựa chọn bộ dữ liệu có tính thực tế và khả năng khai thác cao hơn
- Xây dựng thêm nhiều truy vấn phân tích phục vụ nhu cầu kinh doanh, khai thác Business Insight thay vì chỉ dừng ở các câu truy vấn thống kê cơ bản
Bắt đầu trò chuyện
Bạn có một câu hỏi đáng để cùng khám phá?
Tôi sẵn sàng trao đổi về các vị trí dữ liệu, cơ hội hợp tác chỉn chu và câu chuyện phía sau nghiên cứu này.
Liên hệ