
Xây dựng website bán thẻ Pokemon
23 June, 2025Bài 1 - Phân tích chức năng và thiết kế cơ sở dữ liệu
Thị trường thương mại điện tử ngày nay đang phát triển mạnh mẽ và đa dạng, đặc biệt là trong các thị trường ngách như buôn bán thẻ bài Pokémon tại Nhật Bản. Để xây dựng một hệ thống e-commerce chuyên biệt, không chỉ cần hiểu rõ hành vi người dùng mà còn phải thiết kế một nền tảng kỹ thuật vững chắc phía sau. Trong bài viết này, mình sẽ chia sẻ lại quá trình phân tích chức năng và thiết kế cơ sở dữ liệu (CSDL) cho một website chuyên bán bài Pokémon – dựa trên kinh nghiệm thực tế.
- Website mẫu: https://www.cardrush-pokemon.jp.
Phân Tích Chức Năng
Một hệ thống thương mại điện tử hiệu quả cần đáp ứng tốt những nhu cầu cơ bản nhất của người dùng, đồng thời cung cấp trải nghiệm mua sắm liền mạch và tiện lợi. Dưới đây là nh ững chức năng cốt lõi:
- Tìm kiếm & Xem sản phẩm: Người dùng cần có khả năng duyệt và tìm kiếm thẻ bài dễ dàng, kèm thông tin chi tiết như hình ảnh, giá cả, độ hiếm,...
- Đăng ký/Đăng nhập: Đây là nền tảng để cá nhân hóa trải nghiệm và cho phép người dùng quản lý đơn hàng, thông tin cá nhân, điểm thưởng,...
- Thêm vào giỏ hàng: Tính năng không thể thiếu để người dùng lựa chọn sản phẩm trước khi thanh toán.
- Thanh toán: Cần tích hợp các phương thức thanh toán phổ biến tại Nhật như thẻ tín dụng, chuyển khoản ngân hàng hoặc Amazon Pay.
- Quản lý đơn hàng: Cho phép người dùng theo dõi trạng thái đơn hàng từ khi đặt đến lúc nhận hàng.
Bên cạnh đó, còn có một số chức năng phụ trợ đóng vai trò nâng cao trải nghiệm người dùng: (mình cực kỳ quan tâm điều này bởi vì):
Trải nghiệm tốt của người dùng là thứ khó đạt được nhất.
- Điều hướng rõ ràng: Menu và đường dẫn được tổ chức hợp lý để truy cập nhanh các trang như danh mục sản phẩm, khuyến mãi, hỗ trợ,...
- Hỗ trợ khách hàng: Bao gồm thông tin liên hệ, hướng dẫn mua hàng, chính sách đổi trả,...
- Thông báo: Cập nhật cho người dùng các thông tin quan trọng như chương trình khuyến mãi hoặc thay đổi đơn hàng.
Thiết Kế Cơ Sở Dữ Liệu
Cơ sở dữ liệu mình sử dụng đó là PostgreSQL, gồm 10 bảng chính:
users– Thông tin người dùng:id, email, password, full_name, phone, created_at, email_verified, points, role, is_activeaddresses– Địa chỉ giao hàng của người dùng, liên kết với bảng users:id, user_id, full_name, address_line, city, postal_code, phone, is_defaultproducts– Dữ liệu về thẻ bài Pokémon:id, name, description, category_id, price, stock, image_url, category, created_at, is_deletedcategories– Phân loại sản phẩm (ví dụ: thẻ SR, thẻ thường, booster box,...):id, name, description, created_atcarts– Giỏ hàng tạm thời của người dùng, chứa các sản phẩm chưa thanh toán:id, user_id, product_id, quantityorders– Thông tin đơn hàng:id, user_id, address_id, total_amount, status, created_at, points_earnedorder_items– Chi tiết từng sản phẩm trong đơn hàng, phục vụ việc đối soát và lưu trữ lịch sử mua hàng:id, order_id, product_id, quantity, pricepoint_history– Ghi nhận lịch sử điểm thưởng, dùng cho chương trình tích lũy và khuyến mãi:id, user_id, order_id, points, description, created_atadmin_logs– Lưu lại thao tác của quản trị viên để kiểm tra và bảo mật hệ thống:id, admin_id, action, details, created_atuser_logs– Ghi lại hành vi người dùng để phục vụ phân tích hành vi và cải thiện tính năng:id, user_id, action, details, created_atemail_verifications– Quản lý xác minh email khi đăng ký hoặc khôi phục tài khoản:id, user_id, token, expires_at
Hệ thống CSDL được thiết kế theo mô hình quan hệ, với các bảng được kết nối thông qua khóa ngoại (foreign keys). Ví dụ, orders liên kết với users qua user_id, và với order_items để truy xuất danh sách sản phẩm trong mỗi đơn hàng.
Trong quá trình thực hiện dự án này không may có sai sót, rất mong nhận được sự góp ý từ các bạn để mình có thể hoàn thiện hơn trong tương lai.
Hy vọng bài viết này sẽ giúp ích cho những bạn đang tìm hiểu hoặc có ý định phát triển hệ thống e-commerce phục vụ thị trường ngách. Hẹn gặp lại các bạn trong bài viết sắp tới.
