OpenCart có cấu trúc database khá rõ ràng, theo kiểu core table + module table, tiền tố mặc định là oc_ (có thể đổi khi cài đặt).

Dưới đây là cấu trúc DB OpenCart (từ bản 2.x → 4.x gần giống nhau):


1️⃣ Nhóm bảng sản phẩm (Product)

🧱 Sản phẩm chính

  • oc_product → thông tin cơ bản sản phẩm
    (model, sku, price, quantity, status, date_added…)

🖼 Ảnh sản phẩm

  • oc_product_image

🗂 Sản phẩm theo danh mục

  • oc_product_to_category

🏷 Sản phẩm theo cửa hàng (multi store)

  • oc_product_to_store

⭐ Đánh giá

  • oc_review

🏷 Thuộc tính

  • oc_attribute
  • oc_attribute_group
  • oc_product_attribute

🔖 Option (size, màu...)

  • oc_option
  • oc_option_value
  • oc_product_option
  • oc_product_option_value

2️⃣ Nhóm danh mục (Category)

  • oc_category
  • oc_category_description
  • oc_category_to_store
  • oc_category_path (quản lý cây phân cấp cha–con)

OpenCart dùng nested set model đơn giản (path table) chứ không phải left-right tree.


3️⃣ Nhóm khách hàng (Customer)

  • oc_customer
  • oc_customer_group
  • oc_address
  • oc_customer_ip
  • oc_customer_login
  • oc_customer_wishlist

4️⃣ Nhóm đơn hàng (Order)

Đây là phần quan trọng nhất:

  • oc_order
  • oc_order_product
  • oc_order_option
  • oc_order_total
  • oc_order_history
  • oc_order_status

Order được snapshot lại toàn bộ thông tin tại thời điểm mua (không join ngược product).


5️⃣ Nhóm thanh toán & vận chuyển

  • oc_extension
  • oc_setting
  • oc_weight_class
  • oc_length_class
  • oc_tax_class
  • oc_tax_rate
  • oc_geo_zone
  • oc_zone
  • oc_zone_to_geo_zone

6️⃣ Nhóm người quản trị (Admin)

  • oc_user
  • oc_user_group
  • oc_api
  • oc_session

7️⃣ Nhóm SEO & URL

  • oc_seo_url
  • oc_url_alias (bản cũ)

8️⃣ Nhóm đa ngôn ngữ

OpenCart tách bảng description riêng:

Ví dụ:

  • oc_product_description
  • oc_category_description
  • oc_information_description

Mỗi record có language_id


9️⃣ Nhóm hệ thống khác

  • oc_setting
  • oc_event
  • oc_banner
  • oc_coupon
  • oc_voucher
  • oc_return

🔟 Quan hệ DB quan trọng

1. Product – Category

product_id
    ↕
product_to_category
    ↕
category_id

2. Product đa ngôn ngữ

product_id
    ↕
product_description
    ↕
language_id

3. Order snapshot

order
  ↕
order_product
  ↕
order_option

🧠 Thiết kế đáng chú ý

✅ Không dùng foreign key (đa số MyISAM hoặc InnoDB nhưng không khai báo FK)
→ App tự quản lý quan hệ

✅ Tối ưu đọc nhiều hơn ghi

✅ Phù hợp shop nhỏ → trung bình