-- Crear la tabla de productos (ajustada para manejar arrays de categorías relacionadas) CREATE TABLE IF NOT EXISTS productos ( id VARCHAR(255) PRIMARY KEY, categoryIds JSON, -- Array de IDs de categorías subcategoryIds JSON, -- Array de IDs de subcategorías subsubcategoryIds JSON, -- Array de IDs de subsubcategorías name VARCHAR(255) NOT NULL, shortDescription TEXT, longDescription TEXT, price FLOAT NOT NULL, urlImage JSON, urlVideo JSON, destacados BOOLEAN DEFAULT FALSE, publicidad BOOLEAN DEFAULT FALSE, categoryImg BOOLEAN DEFAULT FALSE, relatedCategories JSON, -- Array de IDs de categorías relacionadas (ahora es un array de números) relatedProducts JSON, options JSON ); CREATE TABLE IF NOT EXISTS categorias ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(255) NOT NULL, visibilidad BOOLEAN DEFAULT TRUE, -- Para controlar si la categoría es visible o no id_padre INT DEFAULT NULL, -- ID de la categoría padre (NULL si es una categoría principal) FOREIGN KEY (id_padre) REFERENCES categorias(id) -- Relación con la misma tabla para subcategorías ); CREATE TABLE IF NOT EXISTS productos_categorias ( producto_id VARCHAR(255), -- Referencia al ID del producto categoria_id INT, -- Referencia al ID de la categoría tipo_categoria ENUM('categoria', 'subcategory', 'subsubcategory'), -- Tipo de categoría (principal, subcategoría o subsubcategoría) PRIMARY KEY (producto_id, categoria_id, tipo_categoria), FOREIGN KEY (producto_id) REFERENCES productos(id) ON DELETE CASCADE, -- Relación con productos FOREIGN KEY (categoria_id) REFERENCES categorias(id) ON DELETE CASCADE -- Relación con categorías );