Trong các nền tảng thương mại điện tử hiện nay, việc quản lý sản phẩm có nhiều biến thể (như kích thước, màu sắc) là một phần không thể thiếu. Tuy nhiên, mỗi nền tảng lại có cách tổ chức dữ liệu hoàn toàn khác nhau. Bài viết này sẽ phân tích cách WooCommerce, OpenCart, và EC-CUBE lưu trữ và quản lý biến thể sản phẩm.


🔶 1. WooCommerce – Linh hoạt nhờ WordPress

WooCommerce được xây dựng trên nền tảng WordPress nên tận dụng hệ thống posttaxonomy.

Cấu trúc:

  • Sản phẩm chính lưu ở bảng wp_posts với post type product.
  • Biến thể sản phẩmproduct_variation, lưu trong cùng bảng wp_posts nhưng có post_parent là ID sản phẩm chính.
  • Thuộc tính như size, color được lưu dưới dạng taxonomy (pa_size, pa_color).
  • Giá trị cụ thể được gán thông qua bảng wp_postmeta với key attribute_pa_size.

Ví dụ:

  • Sản phẩm ID = 62556
  • Biến thể con ID = 62557 có:
    attribute_pa_size = 38 trong wp_postmeta.

Ưu – Nhược điểm:

Ưu điểmNhược điểm
Rất linh hoạt, dễ mở rộngCấu trúc phức tạp, nhiều bảng
Tương thích tốt với pluginTruy vấn chậm khi có nhiều biến thể
Dễ serialize/deserializeDữ liệu không chuẩn hóa hoàn toàn

🔷 2. OpenCart – Cấu trúc chuẩn hóa, tốc độ cao

OpenCart sử dụng mô hình dữ liệu chuẩn hóa rõ ràng, chia riêng các bảng option, option_value, product_option, product_option_value.

Cấu trúc:

  • product: bảng sản phẩm chính
  • option: định nghĩa loại thuộc tính (Size, Color)
  • option_value: giá trị cụ thể (38, 39, 40,…)
  • product_option: liên kết sản phẩm với option
  • product_option_value: liên kết sản phẩm với option_value cụ thể

Ví dụ:

  • Sản phẩm 123 có option_id = 2 (Size)
  • option_value_id = 5 tương ứng với size 38
  • Gắn vào product_option_value để tạo biến thể.

Ưu – Nhược điểm:

Ưu điểmNhược điểm
Dữ liệu chuẩn hóa → truy vấn nhanhHạn chế trong các trường hợp logic phức tạp
Thân thiện với MySQL JOINKhông hỗ trợ taxonomy hoặc đa cấp phân loại

🟣 3. EC-CUBE – Chuẩn Nhật, mô hình Class-ClassCategory

EC-CUBE, một nền tảng mã nguồn mở từ Nhật Bản, có cấu trúc riêng biệt cho biến thể sản phẩm thông qua mô hình class name – class category.

Cấu trúc:

  • dtb_product: sản phẩm chính
  • dtb_product_class: biến thể sản phẩm (mỗi dòng = 1 SKU)
  • dtb_class_name: loại thuộc tính (Size, Color,…)
  • dtb_class_category: giá trị cụ thể (38, M, XL,…)

Ví dụ:

  • dtb_product_class gắn class_name_id = 1 (Size), class_category_id = 5 (38)

Ưu – Nhược điểm:

Ưu điểmNhược điểm
Tối ưu SKU, tồn kho từng biến thểCấu trúc cứng, ít linh hoạt nếu mở rộng
Dữ liệu rõ ràng, logic phân tách tốtKhó tích hợp với hệ thống khác nếu chưa quen

🔚 Tổng kết

Nền tảngCấu trúc biến thểLinh hoạtTối ưu DBTìm kiếm nhanhDễ mở rộng
WooCommercewp_posts + taxonomy + postmeta✅ Cao❌ Trung bình❌ Trung bình✅ Rất dễ
OpenCartproduct_option_value với bảng chuẩn hóa⚠️ Trung✅ Rất tốt✅ Rất nhanh⚠️ Vừa phải
EC-CUBEproduct_class + class_name/category⚠️ Trung✅ Tốt✅ Rất nhanh⚠️ Cần hiểu sâu

📌 Lời khuyên

  • Nếu bạn làm hệ thống đa nền tảng (ví dụ đồng bộ Woo ⇄ OpenCart hoặc Woo ⇄ EC-CUBE), cần hiểu rõ mapping thuộc tính và ID logic của từng nền tảng.
  • WooCommerce thích hợp nếu bạn cần nhanh chóng phát triển plugin, API, hoặc có nội dung linh hoạt.
  • OpenCart và EC-CUBE vượt trội hơn nếu bạn có lượng SKU lớn và cần hiệu suất cao.