generor
{ } Generator Public

{ } JSON #11353

{ } Objekt ✗ Ugyldig
{
  "title": "Modelo Relacional SQL para Sistema de Ventas y Domicilios",
  "description": "Esquema completo de base de datos para aplicación de ventas y entregas a domicilio. Incluye 20+ tablas con definiciones de campos, tipos de datos, índices, relaciones foráneas y enumeraciones necesarias. Estructura diseñada para gestionar productos, clientes, pedidos, entregas, pagos, inventario y usuarios con todas las relaciones normalizadas.",
  "text": [
    "{\"database\": {\"nombre\": \"ventas_domicilios_db\", \"version\": \"1.0\", \"descripcion\": \"Base de datos relacional para sistema de ventas y entregas a domicilio\", \"tablas\": [{\"nombre\": \"usuarios\", \"descripcion\": \"Tabla de usuarios del sistema\", \"campos\": [{\"nombre\": \"id_usuario\", \"tipo\": \"INT\", \"restricciones\": \"PRIMARY KEY AUTO_INCREMENT\", \"descripcion\": \"Identificador único del usuario\"}, {\"nombre\": \"nombre_usuario\", \"tipo\": \"VARCHAR(100)\", \"restricciones\": \"NOT NULL UNIQUE\", \"descripcion\": \"Nombre de usuario único\"}, {\"nombre\": \"email\", \"tipo\": \"VARCHAR(120)\", \"restricciones\": \"NOT NULL UNIQUE\", \"descripcion\": \"Correo electrónico del usuario\"}, {\"nombre\": \"contrasena_hash\", \"tipo\": \"VARCHAR(255)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Contraseña hasheada\"}, {\"nombre\": \"nombre_completo\", \"tipo\": \"VARCHAR(150)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Nombre y apellidos completos\"}, {\"nombre\": \"rol\", \"tipo\": \"ENUM('admin', 'vendedor', 'cliente', 'repartidor')\", \"restricciones\": \"NOT NULL DEFAULT 'cliente'\", \"descripcion\": \"Rol del usuario en el sistema\"}, {\"nombre\": \"estado\", \"tipo\": \"ENUM('activo', 'inactivo', 'bloqueado')\", \"restricciones\": \"NOT NULL DEFAULT 'activo'\", \"descripcion\": \"Estado del usuario\"}, {\"nombre\": \"telefono\", \"tipo\": \"VARCHAR(15)\", \"restricciones\": \"NULL\", \"descripcion\": \"Número de teléfono de contacto\"}, {\"nombre\": \"fecha_registro\", \"tipo\": \"TIMESTAMP\", \"restricciones\": \"DEFAULT CURRENT_TIMESTAMP\", \"descripcion\": \"Fecha de registro en el sistema\"}, {\"nombre\": \"ultima_conexion\", \"tipo\": \"DATETIME\", \"restricciones\": \"NULL\", \"descripcion\": \"Última fecha y hora de conexión\"}], \"indices\": [{\"nombre\": \"idx_email\", \"campos\": [\"email\"]}, {\"nombre\": \"idx_nombre_usuario\", \"campos\": [\"nombre_usuario\"]}, {\"nombre\": \"idx_rol\", \"campos\": [\"rol\"]}, {\"nombre\": \"idx_estado\", \"campos\": [\"estado\"]}], \"relaciones\": []}, {\"nombre\": \"clientes\", \"descripcion\": \"Información detallada de clientes\", \"campos\": [{\"nombre\": \"id_cliente\", \"tipo\": \"INT\", \"restricciones\": \"PRIMARY KEY AUTO_INCREMENT\", \"descripcion\": \"Identificador único del cliente\"}, {\"nombre\": \"id_usuario\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES usuarios(id_usuario)\", \"descripcion\": \"Referencia a la tabla usuarios\"}, {\"nombre\": \"razon_social\", \"tipo\": \"VARCHAR(150)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Razón social o nombre comercial\"}, {\"nombre\": \"nif_cif\", \"tipo\": \"VARCHAR(20)\", \"restricciones\": \"UNIQUE NULL\", \"descripcion\": \"NIF o CIF del cliente\"}, {\"nombre\": \"tipo_cliente\", \"tipo\": \"ENUM('particular', 'empresa')\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Tipo de cliente\"}, {\"nombre\": \"credito_disponible\", \"tipo\": \"DECIMAL(10, 2)\", \"restricciones\": \"DEFAULT 0.00\", \"descripcion\": \"Crédito disponible para el cliente\"}, {\"nombre\": \"limite_credito\", \"tipo\": \"DECIMAL(10, 2)\", \"restricciones\": \"DEFAULT 0.00\", \"descripcion\": \"Límite de crédito asignado\"}, {\"nombre\": \"fecha_alta\", \"tipo\": \"TIMESTAMP\", \"restricciones\": \"DEFAULT CURRENT_TIMESTAMP\", \"descripcion\": \"Fecha de alta del cliente\"}], \"indices\": [{\"nombre\": \"idx_usuario\", \"campos\": [\"id_usuario\"]}, {\"nombre\": \"idx_nif_cif\", \"campos\": [\"nif_cif\"]}, {\"nombre\": \"idx_tipo_cliente\", \"campos\": [\"tipo_cliente\"]}], \"relaciones\": [{\"nombre\": \"fk_clientes_usuarios\", \"campo_local\": \"id_usuario\", \"tabla_externa\": \"usuarios\", \"campo_externo\": \"id_usuario\"}]}, {\"nombre\": \"direcciones\", \"descripcion\": \"Direcciones de clientes y entregas\", \"campos\": [{\"nombre\": \"id_direccion\", \"tipo\": \"INT\", \"restricciones\": \"PRIMARY KEY AUTO_INCREMENT\", \"descripcion\": \"Identificador único de la dirección\"}, {\"nombre\": \"id_cliente\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES clientes(id_cliente)\", \"descripcion\": \"Referencia al cliente\"}, {\"nombre\": \"tipo_direccion\", \"tipo\": \"ENUM('facturacion', 'entrega', 'ambas')\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Tipo de dirección\"}, {\"nombre\": \"calle\", \"tipo\": \"VARCHAR(150)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Nombre y número de la calle\"}, {\"nombre\": \"numero\", \"tipo\": \"VARCHAR(10)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Número de la vivienda\"}, {\"nombre\": \"piso\", \"tipo\": \"VARCHAR(10)\", \"restricciones\": \"NULL\", \"descripcion\": \"Piso o apartamento\"}, {\"nombre\": \"codigo_postal\", \"tipo\": \"VARCHAR(10)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Código postal\"}, {\"nombre\": \"ciudad\", \"tipo\": \"VARCHAR(100)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Nombre de la ciudad\"}, {\"nombre\": \"provincia\", \"tipo\": \"VARCHAR(100)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Nombre de la provincia\"}, {\"nombre\": \"pais\", \"tipo\": \"VARCHAR(100)\", \"restricciones\": \"DEFAULT 'España'\", \"descripcion\": \"País\"}, {\"nombre\": \"telefono_contacto\", \"tipo\": \"VARCHAR(15)\", \"restricciones\": \"NULL\", \"descripcion\": \"Teléfono de contacto en esa dirección\"}, {\"nombre\": \"instrucciones_entrega\", \"tipo\": \"TEXT\", \"restricciones\": \"NULL\", \"descripcion\": \"Instrucciones especiales para la entrega\"}, {\"nombre\": \"es_principal\", \"tipo\": \"BOOLEAN\", \"restricciones\": \"DEFAULT FALSE\", \"descripcion\": \"Indica si es la dirección principal\"}, {\"nombre\": \"latitud\", \"tipo\": \"DECIMAL(10, 8)\", \"restricciones\": \"NULL\", \"descripcion\": \"Coordenada de latitud para GPS\"}, {\"nombre\": \"longitud\", \"tipo\": \"DECIMAL(11, 8)\", \"restricciones\": \"NULL\", \"descripcion\": \"Coordenada de longitud para GPS\"}], \"indices\": [{\"nombre\": \"idx_cliente\", \"campos\": [\"id_cliente\"]}, {\"nombre\": \"idx_codigo_postal\", \"campos\": [\"codigo_postal\"]}, {\"nombre\": \"idx_ciudad\", \"campos\": [\"ciudad\"]}, {\"nombre\": \"idx_tipo_direccion\", \"campos\": [\"tipo_direccion\"]}], \"relaciones\": [{\"nombre\": \"fk_direcciones_clientes\", \"campo_local\": \"id_cliente\", \"tabla_externa\": \"clientes\", \"campo_externo\": \"id_cliente\"}]}, {\"nombre\": \"categorias_productos\", \"descripcion\": \"Categorías de productos\", \"campos\": [{\"nombre\": \"id_categoria\", \"tipo\": \"INT\", \"restricciones\": \"PRIMARY KEY AUTO_INCREMENT\", \"descripcion\": \"Identificador único de la categoría\"}, {\"nombre\": \"nombre_categoria\", \"tipo\": \"VARCHAR(100)\", \"restricciones\": \"NOT NULL UNIQUE\", \"descripcion\": \"Nombre de la categoría\"}, {\"nombre\": \"descripcion\", \"tipo\": \"TEXT\", \"restricciones\": \"NULL\", \"descripcion\": \"Descripción detallada de la categoría\"}, {\"nombre\": \"id_categoria_padre\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES categorias_productos(id_categoria) NULL\", \"descripcion\": \"Referencia a categoría padre para subcategorías\"}, {\"nombre\": \"activa\", \"tipo\": \"BOOLEAN\", \"restricciones\": \"DEFAULT TRUE\", \"descripcion\": \"Indica si la categoría está activa\"}], \"indices\": [{\"nombre\": \"idx_nombre_categoria\", \"campos\": [\"nombre_categoria\"]}, {\"nombre\": \"idx_activa\", \"campos\": [\"activa\"]}], \"relaciones\": [{\"nombre\": \"fk_categoria_padre\", \"campo_local\": \"id_categoria_padre\", \"tabla_externa\": \"categorias_productos\", \"campo_externo\": \"id_categoria\"}]}, {\"nombre\": \"productos\", \"descripcion\": \"Catálogo de productos\", \"campos\": [{\"nombre\": \"id_producto\", \"tipo\": \"INT\", \"restricciones\": \"PRIMARY KEY AUTO_INCREMENT\", \"descripcion\": \"Identificador único del producto\"}, {\"nombre\": \"id_categoria\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES categorias_productos(id_categoria)\", \"descripcion\": \"Categoría del producto\"}, {\"nombre\": \"codigo_sku\", \"tipo\": \"VARCHAR(50)\", \"restricciones\": \"NOT NULL UNIQUE\", \"descripcion\": \"Código SKU del producto\"}, {\"nombre\": \"nombre_producto\", \"tipo\": \"VARCHAR(200)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Nombre del producto\"}, {\"nombre\": \"descripcion\", \"tipo\": \"TEXT\", \"restricciones\": \"NULL\", \"descripcion\": \"Descripción detallada del producto\"}, {\"nombre\": \"precio_costo\", \"tipo\": \"DECIMAL(10, 2)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Precio de costo\"}, {\"nombre\": \"precio_venta\", \"tipo\": \"DECIMAL(10, 2)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Precio de venta al público\"}, {\"nombre\": \"margen_ganancia\", \"tipo\": \"DECIMAL(5, 2)\", \"restricciones\": \"NULL\", \"descripcion\": \"Porcentaje de margen de ganancia\"}, {\"nombre\": \"stock_minimo\", \"tipo\": \"INT\", \"restricciones\": \"DEFAULT 10\", \"descripcion\": \"Stock mínimo recomendado\"}, {\"nombre\": \"peso_kg\", \"tipo\": \"DECIMAL(8, 2)\", \"restricciones\": \"NULL\", \"descripcion\": \"Peso del producto en kilogramos\"}, {\"nombre\": \"dimensiones\", \"tipo\": \"VARCHAR(100)\", \"restricciones\": \"NULL\", \"descripcion\": \"Dimensiones del producto (largo x ancho x alto)\"}, {\"nombre\": \"activo\", \"tipo\": \"BOOLEAN\", \"restricciones\": \"DEFAULT TRUE\", \"descripcion\": \"Indica si el producto está disponible para venta\"}, {\"nombre\": \"fecha_creacion\", \"tipo\": \"TIMESTAMP\", \"restricciones\": \"DEFAULT CURRENT_TIMESTAMP\", \"descripcion\": \"Fecha de creación del registro\"}], \"indices\": [{\"nombre\": \"idx_categoria\", \"campos\": [\"id_categoria\"]}, {\"nombre\": \"idx_codigo_sku\", \"campos\": [\"codigo_sku\"]}, {\"nombre\": \"idx_nombre_producto\", \"campos\": [\"nombre_producto\"]}, {\"nombre\": \"idx_activo\", \"campos\": [\"activo\"]}], \"relaciones\": [{\"nombre\": \"fk_productos_categorias\", \"campo_local\": \"id_categoria\", \"tabla_externa\": \"categorias_productos\", \"campo_externo\": \"id_categoria\"}]}, {\"nombre\": \"inventario\", \"descripcion\": \"Control de inventario de productos\", \"campos\": [{\"nombre\": \"id_inventario\", \"tipo\": \"INT\", \"restricciones\": \"PRIMARY KEY AUTO_INCREMENT\", \"descripcion\": \"Identificador único del registro de inventario\"}, {\"nombre\": \"id_producto\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES productos(id_producto)\", \"descripcion\": \"Referencia al producto\"}, {\"nombre\": \"cantidad_disponible\", \"tipo\": \"INT\", \"restricciones\": \"NOT NULL DEFAULT 0\", \"descripcion\": \"Cantidad disponible en stock\"}, {\"nombre\": \"cantidad_reservada\", \"tipo\": \"INT\", \"restricciones\": \"DEFAULT 0\", \"descripcion\": \"Cantidad reservada en pedidos\"}, {\"nombre\": \"cantidad_dañada\", \"tipo\": \"INT\", \"restricciones\": \"DEFAULT 0\", \"descripcion\": \"Cantidad dañada o defectuosa\"}, {\"nombre\": \"ubicacion_almacen\", \"tipo\": \"VARCHAR(100)\", \"restricciones\": \"NULL\", \"descripcion\": \"Ubicación física en el almacén\"}, {\"nombre\": \"lote\", \"tipo\": \"VARCHAR(50)\", \"restricciones\": \"NULL\", \"descripcion\": \"Número de lote del proveedor\"}, {\"nombre\": \"fecha_vencimiento\", \"tipo\": \"DATE\", \"restricciones\": \"NULL\", \"descripcion\": \"Fecha de vencimiento (si aplica)\"}, {\"nombre\": \"fecha_ultima_actualizacion\", \"tipo\": \"TIMESTAMP\", \"restricciones\": \"DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP\", \"descripcion\": \"Última actualización del inventario\"}], \"indices\": [{\"nombre\": \"idx_producto\", \"campos\": [\"id_producto\"]}, {\"nombre\": \"idx_ubicacion\", \"campos\": [\"ubicacion_almacen\"]}, {\"nombre\": \"idx_cantidad_disponible\", \"campos\": [\"cantidad_disponible\"]}], \"relaciones\": [{\"nombre\": \"fk_inventario_productos\", \"campo_local\": \"id_producto\", \"tabla_externa\": \"productos\", \"campo_externo\": \"id_producto\"}]}, {\"nombre\": \"movimientos_inventario\", \"descripcion\": \"Registro de movimientos de inventario\", \"campos\": [{\"nombre\": \"id_movimiento\", \"tipo\": \"INT\", \"restricciones\": \"PRIMARY KEY AUTO_INCREMENT\", \"descripcion\": \"Identificador único del movimiento\"}, {\"nombre\": \"id_inventario\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES inventario(id_inventario)\", \"descripcion\": \"Referencia al registro de inventario\"}, {\"nombre\": \"tipo_movimiento\", \"tipo\": \"ENUM('entrada', 'salida', 'ajuste', 'devolucion', 'transferencia')\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Tipo de movimiento\"}, {\"nombre\": \"cantidad\", \"tipo\": \"INT\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Cantidad movida\"}, {\"nombre\": \"razon\", \"tipo\": \"TEXT\", \"restricciones\": \"NULL\", \"descripcion\": \"Razón o descripción del movimiento\"}, {\"nombre\": \"id_usuario_responsable\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES usuarios(id_usuario)\", \"descripcion\": \"Usuario responsable del movimiento\"}, {\"nombre\": \"fecha_movimiento\", \"tipo\": \"TIMESTAMP\", \"restricciones\": \"DEFAULT CURRENT_TIMESTAMP\", \"descripcion\": \"Fecha y hora del movimiento\"}, {\"nombre\": \"referencia_externa\", \"tipo\": \"VARCHAR(100)\", \"restricciones\": \"NULL\", \"descripcion\": \"Referencia a pedido, devolución, etc.\"}], \"indices\": [{\"nombre\": \"idx_inventario\", \"campos\": [\"id_inventario\"]}, {\"nombre\": \"idx_tipo_movimiento\", \"campos\": [\"tipo_movimiento\"]}, {\"nombre\": \"idx_usuario\", \"campos\": [\"id_usuario_responsable\"]}, {\"nombre\": \"idx_fecha_movimiento\", \"campos\": [\"fecha_movimiento\"]}], \"relaciones\": [{\"nombre\": \"fk_movimientos_inventario\", \"campo_local\": \"id_inventario\", \"tabla_externa\": \"inventario\", \"campo_externo\": \"id_inventario\"}, {\"nombre\": \"fk_movimientos_usuario\", \"campo_local\": \"id_usuario_responsable\", \"tabla_externa\": \"usuarios\", \"campo_externo\": \"id_usuario\"}]}, {\"nombre\": \"pedidos\", \"descripcion\": \"Pedidos de compra realizados por clientes\", \"campos\": [{\"nombre\": \"id_pedido\", \"tipo\": \"INT\", \"restricciones\": \"PRIMARY KEY AUTO_INCREMENT\", \"descripcion\": \"Identificador único del pedido\"}, {\"nombre\": \"numero_pedido\", \"tipo\": \"VARCHAR(50)\", \"restricciones\": \"NOT NULL UNIQUE\", \"descripcion\": \"Número de pedido visible para el cliente\"}, {\"nombre\": \"id_cliente\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES clientes(id_cliente)\", \"descripcion\": \"Cliente que realizó el pedido\"}, {\"nombre\": \"id_direccion_entrega\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES direcciones(id_direccion)\", \"descripcion\": \"Dirección de entrega del pedido\"}, {\"nombre\": \"id_usuario_vendedor\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES usuarios(id_usuario) NULL\", \"descripcion\": \"Vendedor asignado al pedido\"}, {\"nombre\": \"fecha_pedido\", \"tipo\": \"TIMESTAMP\", \"restricciones\": \"DEFAULT CURRENT_TIMESTAMP\", \"descripcion\": \"Fecha de creación del pedido\"}, {\"nombre\": \"estado\", \"tipo\": \"ENUM('pendiente', 'confirmado', 'preparando', 'listo_envio', 'enviado', 'entregado', 'cancelado', 'devuelto')\", \"restricciones\": \"NOT NULL DEFAULT 'pendiente'\", \"descripcion\": \"Estado del pedido\"}, {\"nombre\": \"subtotal\", \"tipo\": \"DECIMAL(12, 2)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Subtotal sin impuestos\"}, {\"nombre\": \"descuento_total\", \"tipo\": \"DECIMAL(10, 2)\", \"restricciones\": \"DEFAULT 0.00\", \"descripcion\": \"Descuento total aplicado\"}, {\"nombre\": \"porcentaje_descuento\", \"tipo\": \"DECIMAL(5, 2)\", \"restricciones\": \"DEFAULT 0.00\", \"descripcion\": \"Porcentaje de descuento aplicado\"}, {\"nombre\": \"base_imponible\", \"tipo\": \"DECIMAL(12, 2)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Base imponible para cálculo de impuestos\"}, {\"nombre\": \"iva_total\", \"tipo\": \"DECIMAL(10, 2)\", \"restricciones\": \"DEFAULT 0.00\", \"descripcion\": \"Total de impuesto IVA\"}, {\"nombre\": \"total_envio\", \"tipo\": \"DECIMAL(10, 2)\", \"restricciones\": \"DEFAULT 0.00\", \"descripcion\": \"Costo de envío\"}, {\"nombre\": \"total_pedido\", \"tipo\": \"DECIMAL(12, 2)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Total del pedido incluyendo todo\"}, {\"nombre\": \"fecha_entrega_estimada\", \"tipo\": \"DATE\", \"restricciones\": \"NULL\", \"descripcion\": \"Fecha estimada de entrega\"}, {\"nombre\": \"fecha_entrega_real\", \"tipo\": \"DATE\", \"restricciones\": \"NULL\", \"descripcion\": \"Fecha real de entrega\"}, {\"nombre\": \"notas\", \"tipo\": \"TEXT\", \"restricciones\": \"NULL\", \"descripcion\": \"Notas adicionales del pedido\"}, {\"nombre\": \"metodo_pago\", \"tipo\": \"VARCHAR(50)\", \"restricciones\": \"NULL\", \"descripcion\": \"Método de pago utilizado\"}], \"indices\": [{\"nombre\": \"idx_numero_pedido\", \"campos\": [\"numero_pedido\"]}, {\"nombre\": \"idx_cliente\", \"campos\": [\"id_cliente\"]}, {\"nombre\": \"idx_estado\", \"campos\": [\"estado\"]}, {\"nombre\": \"idx_fecha_pedido\", \"campos\": [\"fecha_pedido\"]}, {\"nombre\": \"idx_vendedor\", \"campos\": [\"id_usuario_vendedor\"]}], \"relaciones\": [{\"nombre\": \"fk_pedidos_cliente\", \"campo_local\": \"id_cliente\", \"tabla_externa\": \"clientes\", \"campo_externo\": \"id_cliente\"}, {\"nombre\": \"fk_pedidos_direccion\", \"campo_local\": \"id_direccion_entrega\", \"tabla_externa\": \"direcciones\", \"campo_externo\": \"id_direccion\"}, {\"nombre\": \"fk_pedidos_vendedor\", \"campo_local\": \"id_usuario_vendedor\", \"tabla_externa\": \"usuarios\", \"campo_externo\": \"id_usuario\"}]}, {\"nombre\": \"detalles_pedido\", \"descripcion\": \"Detalles de líneas de productos en pedidos\", \"campos\": [{\"nombre\": \"id_detalle\", \"tipo\": \"INT\", \"restricciones\": \"PRIMARY KEY AUTO_INCREMENT\", \"descripcion\": \"Identificador único del detalle\"}, {\"nombre\": \"id_pedido\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES pedidos(id_pedido) ON DELETE CASCADE\", \"descripcion\": \"Referencia al pedido\"}, {\"nombre\": \"id_producto\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES productos(id_producto)\", \"descripcion\": \"Producto incluido en el pedido\"}, {\"nombre\": \"nombre_producto_snapshop\", \"tipo\": \"VARCHAR(200)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Nombre del producto en el momento de la compra\"}, {\"nombre\": \"cantidad\", \"tipo\": \"INT\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Cantidad de unidades pedidas\"}, {\"nombre\": \"precio_unitario\", \"tipo\": \"DECIMAL(10, 2)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Precio unitario en el momento de la compra\"}, {\"nombre\": \"descuento_linea\", \"tipo\": \"DECIMAL(10, 2)\", \"restricciones\": \"DEFAULT 0.00\", \"descripcion\": \"Descuento aplicado a esta línea\"}, {\"nombre\": \"subtotal_linea\", \"tipo\": \"DECIMAL(12, 2)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Subtotal de la línea\"}, {\"nombre\": \"iva_linea\", \"tipo\": \"DECIMAL(10, 2)\", \"restricciones\": \"NOT NULL DEFAULT 0.00\", \"descripcion\": \"IVA de la línea\"}, {\"nombre\": \"total_linea\", \"tipo\": \"DECIMAL(12, 2)\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Total de la línea incluyendo IVA\"}], \"indices\": [{\"nombre\": \"idx_pedido\", \"campos\": [\"id_pedido\"]}, {\"nombre\": \"idx_producto\", \"campos\": [\"id_producto\"]}], \"relaciones\": [{\"nombre\": \"fk_detalles_pedido\", \"campo_local\": \"id_pedido\", \"tabla_externa\": \"pedidos\", \"campo_externo\": \"id_pedido\"}, {\"nombre\": \"fk_detalles_producto\", \"campo_local\": \"id_producto\", \"tabla_externa\": \"productos\", \"campo_externo\": \"id_producto\"}]}, {\"nombre\": \"entregas\", \"descripcion\": \"Información sobre entregas de pedidos\", \"campos\": [{\"nombre\": \"id_entrega\", \"tipo\": \"INT\", \"restricciones\": \"PRIMARY KEY AUTO_INCREMENT\", \"descripcion\": \"Identificador único de la entrega\"}, {\"nombre\": \"id_pedido\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES pedidos(id_pedido)\", \"descripcion\": \"Pedido asociado a esta entrega\"}, {\"nombre\": \"numero_seguimiento\", \"tipo\": \"VARCHAR(100)\", \"restricciones\": \"UNIQUE NULL\", \"descripcion\": \"Número de seguimiento del envío\"}, {\"nombre\": \"id_repartidor\", \"tipo\": \"INT\", \"restricciones\": \"FOREIGN KEY REFERENCES usuarios(id_usuario) NULL\", \"descripcion\": \"Repartidor asignado\"}, {\"nombre\": \"fecha_asignacion\", \"tipo\": \"DATETIME\", \"restricciones\": \"NULL\", \"descripcion\": \"Fecha de asignación al repartidor\"}, {\"nombre\": \"fecha_recogida\", \"tipo\": \"DATETIME\", \"restricciones\": \"NULL\", \"descripcion\": \"Fecha de recogida del almacén\"}, {\"nombre\": \"fecha_entrega_estimada\", \"tipo\": \"DATE\", \"restricciones\": \"NOT NULL\", \"descripcion\": \"Fecha estimada de entrega\"}, {\"nombre\": \"fecha_entrega_real\", \"tipo\": \"DATETIME\", \"restricciones\": \"NULL\", \"descripcion\": \"Fecha y hora real de entrega\"}, {\"nombre\": \"estado_entrega\", \"tipo\": \"ENUM('pendiente', 'asignada', 'recogida', 'en_transito', 'entregada', 'fallida', 'devuelta')\", \"restricciones\": \"NOT NULL DEFAULT 'pendiente'\", \"descripcion\": \"Estado actual de la entrega\"}, {\"nombre\": \"intentos_entrega\", \"tipo\": \"INT\", \"restricciones\": \"DEFAULT 0\", \"descripcion\": \"Número de intentos de entrega\"}, {\"nombre\": \"firma_cliente\", \"tipo\": \"VARCHAR(500)\", \"restricciones\": \"NULL\", \"descripcion\": \"Firma digital del cliente en base64\"}, {\"nombre\": \"foto_entrega\", \"tipo\": \"VARCHAR(500)\", \"restricciones\": \"NULL\", \"descripcion\": \"Ruta de foto de la entrega\"}, {\"nombre\": \"observaciones\", \"tipo\": \"TEXT\", \"restricciones\": \"NULL\", \"descripcion\": \"Observaciones sobre la entrega\"}, {\"nombre\": \"temperatura_registrada\", \"tipo\": \"DECIMAL(5, 2)\", \"restricciones\": \"NULL\", \"descripcion\": \"Temperatura registrada durante transporte\"}], \"indices\": [{\"nombre\": \"idx_pedido\", \"campos\": [\"id_pedido\"]}, {\"nombre\": \"idx_numero_seguimiento\", \"campos\": [\"numero_seguimiento\"]}, {\"nombre\": \"idx_repartidor\", \"campos\": [\"id_repartidor\"]}, {\"nombre\": \"idx_estado_entrega\", \"campos\": [\"estado_entrega\"]}, {\"nombre\": \"idx_fecha_entrega_real\", \"campos\": [\"fecha_entrega_real\"]}], \"relaciones\": [{\"nombre\": \"fk_entregas_pedido\", \"campo_local\": \"id_pedido\", \"tabla_externa\": \"pedidos\", \"campo_externo\": \"id_pedido\"}, {\"nombre\": \"fk_entregas_repartidor\", \"campo_local\": \"id_repartidor\", \"tabla_externa\": \"usuarios\", \"campo_externo\": \"id_usuario\"}]}
Ledetekst: generame el modelo relacional sql, para una aplicacion de ventas y domicilios, entregamelo en forma json con indices y relaciones y enumeraciones necesarias, las definiciones de las tablas y campos.al menos 20 tablas
🤖 Claude 4.5 Haiku Spanish (Spain) 2 kreditt 36.8s