📊 Schema de tablas core — estructura y relaciones
Actualizado: 2024-12-01
PrestaShop tiene mas de 80 tablas en su core. Conocer las principales y sus relaciones es esencial para escribir queries eficientes en modulos y overrides.
#Tablas de productos
| Tabla | Descripcion | Clave principal |
|---|---|---|
| ps_product | Datos principales del producto | id_product |
| ps_product_lang | Traducciones del producto (nombre, desc) | id_product + id_lang + id_shop |
| ps_product_attribute | Combinaciones (talla+color) | id_product_attribute |
| ps_product_attribute_combination | Relacion combinacion→atributo | id_product_attribute + id_attribute |
| ps_attribute | Valores de atributo (Rojo, XL) | id_attribute |
| ps_attribute_group | Grupos de atributo (Color, Talla) | id_attribute_group |
| ps_stock_available | Stock disponible por producto/combinacion | id_stock_available |
| ps_image | Imagenes del producto | id_image |
| ps_product_shop | Datos del producto por tienda (multitienda) | id_product + id_shop |
Query tipica — Producto con nombre, precio y stock
sql
SELECT
p.id_product,
pl.name,
pl.description_short,
p.price,
p.reference,
sa.quantity AS stock,
m.name AS manufacturer
FROM ps_product p
INNER JOIN ps_product_lang pl
ON p.id_product = pl.id_product
AND pl.id_lang = 1
AND pl.id_shop = 1
LEFT JOIN ps_stock_available sa
ON p.id_product = sa.id_product
AND sa.id_product_attribute = 0
LEFT JOIN ps_manufacturer m
ON p.id_manufacturer = m.id_manufacturer
WHERE p.active = 1
AND p.visibility IN ('both', 'catalog')
ORDER BY p.date_add DESC
LIMIT 20;
#Tablas de pedidos
| Tabla | Descripcion | Clave principal |
|---|---|---|
| ps_orders | Cabecera del pedido | id_order |
| ps_order_detail | Lineas del pedido (productos) | id_order_detail |
| ps_order_history | Historial de estados del pedido | id_order_history |
| ps_order_state | Estados de pedido disponibles | id_order_state |
| ps_order_carrier | Transportista del pedido + tracking | id_order_carrier |
| ps_order_payment | Pagos del pedido | id_order_payment |
| ps_order_invoice | Facturas del pedido | id_order_invoice |
| ps_order_slip | Notas de credito (devoluciones) | id_order_slip |
| ps_order_cart_rule | Descuentos aplicados al pedido | id_order_cart_rule |
Query tipica — Pedidos con cliente y estado actual
sql
SELECT
o.id_order,
o.reference,
o.total_paid_tax_incl,
o.date_add,
c.firstname,
c.lastname,
c.email,
osl.name AS current_status,
oc.tracking_number
FROM ps_orders o
INNER JOIN ps_customer c ON o.id_customer = c.id_customer
LEFT JOIN ps_order_state os ON o.current_state = os.id_order_state
LEFT JOIN ps_order_state_lang osl
ON os.id_order_state = osl.id_order_state
AND osl.id_lang = 1
LEFT JOIN ps_order_carrier oc ON o.id_order = oc.id_order
WHERE o.valid = 1
ORDER BY o.date_add DESC
LIMIT 50;
#Tablas de clientes
| Tabla | Descripcion |
|---|---|
| ps_customer | Datos del cliente (nombre, email, etc.) |
| ps_address | Direcciones del cliente |
| ps_customer_group | Grupos de clientes |
| ps_customer_message | Mensajes del servicio de atencion al cliente |
| ps_guest | Visitantes no registrados (para estadisticas) |
| ps_connections | Historial de conexiones del cliente |
| ps_customer_thread | Hilo de mensajes de soporte |
#Tablas del carrito
| Tabla | Descripcion |
|---|---|
| ps_cart | Cabecera del carrito |
| ps_cart_product | Productos en el carrito |
| ps_cart_rule | Reglas de descuento (cupones) |
| ps_cart_cart_rule | Cupones aplicados a un carrito especifico |
#Tablas de catalogo
| Tabla | Descripcion |
|---|---|
| ps_category | Categorias del catalogo |
| ps_category_lang | Traducciones de categorias |
| ps_category_product | Relacion categoria↔producto (N:N) |
| ps_manufacturer | Fabricantes |
| ps_supplier | Proveedores |
| ps_tax | Impuestos |
| ps_tax_rule | Reglas de impuestos por zona geografica |
| ps_specific_price | Precios especiales (descuentos por cliente/grupo) |
| ps_currency | Divisas configuradas |
| ps_carrier | Transportistas |
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.