generor
{ } Generator Public

{ } JSON #11355

Modelo Relacional SQL Ventas y Domicilios

Objeto JSON que representa el modelo relacional completo para una aplicación de ventas y entregas a domicilio, con definiciones de al menos 20 tablas, campos, índices, relaciones y enumeraciones en formato SQL.

{ } Object ✓ Geldig
{
    "tablas": [
        {
            "nombre": "Cliente",
            "campos": [
                {
                    "nombre": "id_cliente",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "nombre",
                    "tipo": "VARCHAR(100)"
                },
                {
                    "nombre": "email",
                    "tipo": "VARCHAR(100)"
                },
                {
                    "nombre": "telefono",
                    "tipo": "VARCHAR(20)"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_cliente)",
                "INDEX idx_email (email)"
            ],
            "relaciones": []
        },
        {
            "nombre": "Producto",
            "campos": [
                {
                    "nombre": "id_producto",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "nombre",
                    "tipo": "VARCHAR(100)"
                },
                {
                    "nombre": "precio",
                    "tipo": "DECIMAL(10,2)"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_producto)"
            ],
            "relaciones": []
        },
        {
            "nombre": "Categoria",
            "campos": [
                {
                    "nombre": "id_categoria",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "nombre",
                    "tipo": "VARCHAR(50)"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_categoria)"
            ],
            "relaciones": []
        },
        {
            "nombre": "Pedido",
            "campos": [
                {
                    "nombre": "id_pedido",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "id_cliente",
                    "tipo": "INT"
                },
                {
                    "nombre": "fecha",
                    "tipo": "DATETIME"
                },
                {
                    "nombre": "estado",
                    "tipo": "ENUM('pendiente','entregado','cancelado')"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_pedido)",
                "INDEX idx_cliente (id_cliente)"
            ],
            "relaciones": [
                {
                    "tabla": "Cliente",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_cliente"
                }
            ]
        },
        {
            "nombre": "DetallePedido",
            "campos": [
                {
                    "nombre": "id_detalle",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "id_pedido",
                    "tipo": "INT"
                },
                {
                    "nombre": "id_producto",
                    "tipo": "INT"
                },
                {
                    "nombre": "cantidad",
                    "tipo": "INT"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_detalle)",
                "INDEX idx_pedido (id_pedido)"
            ],
            "relaciones": [
                {
                    "tabla": "Pedido",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_pedido"
                },
                {
                    "tabla": "Producto",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_producto"
                }
            ]
        },
        {
            "nombre": "Empleado",
            "campos": [
                {
                    "nombre": "id_empleado",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "nombre",
                    "tipo": "VARCHAR(100)"
                },
                {
                    "nombre": "rol",
                    "tipo": "ENUM('repartidor','admin','vendedor')"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_empleado)"
            ],
            "relaciones": []
        },
        {
            "nombre": "Vehiculo",
            "campos": [
                {
                    "nombre": "id_vehiculo",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "matricula",
                    "tipo": "VARCHAR(20)"
                },
                {
                    "nombre": "tipo",
                    "tipo": "ENUM('moto','coche','bicicleta')"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_vehiculo)"
            ],
            "relaciones": []
        },
        {
            "nombre": "Ruta",
            "campos": [
                {
                    "nombre": "id_ruta",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "id_empleado",
                    "tipo": "INT"
                },
                {
                    "nombre": "fecha",
                    "tipo": "DATE"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_ruta)"
            ],
            "relaciones": [
                {
                    "tabla": "Empleado",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_empleado"
                }
            ]
        },
        {
            "nombre": "Domicilio",
            "campos": [
                {
                    "nombre": "id_domicilio",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "direccion",
                    "tipo": "VARCHAR(200)"
                },
                {
                    "nombre": "ciudad",
                    "tipo": "VARCHAR(50)"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_domicilio)"
            ],
            "relaciones": []
        },
        {
            "nombre": "Zona",
            "campos": [
                {
                    "nombre": "id_zona",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "nombre",
                    "tipo": "VARCHAR(50)"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_zona)"
            ],
            "relaciones": []
        },
        {
            "nombre": "Inventario",
            "campos": [
                {
                    "nombre": "id_inventario",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "id_producto",
                    "tipo": "INT"
                },
                {
                    "nombre": "stock",
                    "tipo": "INT"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_inventario)"
            ],
            "relaciones": [
                {
                    "tabla": "Producto",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_producto"
                }
            ]
        },
        {
            "nombre": "Proveedor",
            "campos": [
                {
                    "nombre": "id_proveedor",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "nombre",
                    "tipo": "VARCHAR(100)"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_proveedor)"
            ],
            "relaciones": []
        },
        {
            "nombre": "Compra",
            "campos": [
                {
                    "nombre": "id_compra",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "id_proveedor",
                    "tipo": "INT"
                },
                {
                    "nombre": "fecha",
                    "tipo": "DATETIME"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_compra)"
            ],
            "relaciones": [
                {
                    "tabla": "Proveedor",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_proveedor"
                }
            ]
        },
        {
            "nombre": "DetalleCompra",
            "campos": [
                {
                    "nombre": "id_detalle_compra",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "id_compra",
                    "tipo": "INT"
                },
                {
                    "nombre": "id_producto",
                    "tipo": "INT"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_detalle_compra)"
            ],
            "relaciones": [
                {
                    "tabla": "Compra",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_compra"
                }
            ]
        },
        {
            "nombre": "Pago",
            "campos": [
                {
                    "nombre": "id_pago",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "id_pedido",
                    "tipo": "INT"
                },
                {
                    "nombre": "monto",
                    "tipo": "DECIMAL(10,2)"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_pago)"
            ],
            "relaciones": [
                {
                    "tabla": "Pedido",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_pedido"
                }
            ]
        },
        {
            "nombre": "Factura",
            "campos": [
                {
                    "nombre": "id_factura",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "id_pedido",
                    "tipo": "INT"
                },
                {
                    "nombre": "fecha_emision",
                    "tipo": "DATETIME"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_factura)"
            ],
            "relaciones": [
                {
                    "tabla": "Pedido",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_pedido"
                }
            ]
        },
        {
            "nombre": "Descuento",
            "campos": [
                {
                    "nombre": "id_descuento",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "porcentaje",
                    "tipo": "DECIMAL(5,2)"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_descuento)"
            ],
            "relaciones": []
        },
        {
            "nombre": "Promocion",
            "campos": [
                {
                    "nombre": "id_promocion",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "nombre",
                    "tipo": "VARCHAR(100)"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_promocion)"
            ],
            "relaciones": []
        },
        {
            "nombre": "HistorialEstado",
            "campos": [
                {
                    "nombre": "id_historial",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "id_pedido",
                    "tipo": "INT"
                },
                {
                    "nombre": "estado",
                    "tipo": "ENUM('pendiente','entregado','cancelado')"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_historial)"
            ],
            "relaciones": [
                {
                    "tabla": "Pedido",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_pedido"
                }
            ]
        },
        {
            "nombre": "DireccionCliente",
            "campos": [
                {
                    "nombre": "id_direccion",
                    "tipo": "INT",
                    "pk": true
                },
                {
                    "nombre": "id_cliente",
                    "tipo": "INT"
                },
                {
                    "nombre": "id_domicilio",
                    "tipo": "INT"
                }
            ],
            "indices": [
                "PRIMARY KEY (id_direccion)"
            ],
            "relaciones": [
                {
                    "tabla": "Cliente",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_cliente"
                },
                {
                    "tabla": "Domicilio",
                    "tipo": "FOREIGN KEY",
                    "campo": "id_domicilio"
                }
            ]
        }
    ],
    "enumeraciones": [
        "estado_pedido: pendiente,entregado,cancelado",
        "tipo_vehiculo: moto,coche,bicicleta",
        "rol_empleado: repartidor,admin,vendedor"
    ]
}
Prompt: 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
Grok 4.3 Spanish (Spain) 2 credit 19.0s