{
"title": "Modelo Relacional SQL para Ventas y Domicilios",
"description": "Este JSON define un modelo relacional completo para una aplicación de ventas y domicilios, incluyendo 20 tablas con sus respectivos campos, índices, relaciones y enumeraciones necesarias. Cada tabla representa un ente lógico de la aplicación como clientes, empleados, productos, pedidos, etc.",
"text": [
"{\n \"titulo\": \"Modelo Relacional SQL para Ventas y Domicilios\",\n \"descripcion\": \"Definición de las tablas, campos, índices y relaciones para una aplicación de ventas y entregas de productos.\",\n \"tablas\": [\n {\n \"nombre\": \"clientes\",\n \"campos\": [\n {\"nombre\": \"cliente_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"apellido\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"correo\", \"tipo\": \"VARCHAR(150)\", \"not_null\": true, \"unique\": true},\n {\"nombre\": \"telefono\", \"tipo\": \"CHAR(15)\", \"not_null\": true},\n {\"nombre\": \"direccion\", \"tipo\": \"VARCHAR(255)\", \"not_null\": true}\n ],\n \"indices\": [\"correo\"],\n \"relaciones\": []\n },\n {\n \"nombre\": \"empleados\",\n \"campos\": [\n {\"nombre\": \"empleado_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"apellido\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"correo\", \"tipo\": \"VARCHAR(150)\", \"not_null\": true, \"unique\": true},\n {\"nombre\": \"rol\", \"tipo\": \"ENUM('Administrador', 'Vendedor', 'Repartidor')\", \"not_null\": true}\n ],\n \"indices\": [\"correo\"],\n \"relaciones\": []\n },\n {\n \"nombre\": \"proveedores\",\n \"campos\": [\n {\"nombre\": \"proveedor_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre_empresa\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"contacto\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"telefono\", \"tipo\": \"CHAR(15)\", \"not_null\": true},\n {\"nombre\": \"correo\", \"tipo\": \"VARCHAR(150)\", \"not_null\": true, \"unique\": true}\n ],\n \"indices\": [\"correo\"],\n \"relaciones\": []\n },\n {\n \"nombre\": \"productos\",\n \"campos\": [\n {\"nombre\": \"producto_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"descripcion\", \"tipo\": \"TEXT\"},\n {\"nombre\": \"precio\", \"tipo\": \"DECIMAL(10,2)\", \"not_null\": true},\n {\"nombre\": \"stock\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"categoria\", \"tipo\": \"ENUM('Alimentos', 'Bebidas', 'Ropa', 'Electrodomésticos')\", \"not_null\": true},\n {\"nombre\": \"proveedor_id\", \"tipo\": \"INT\", \"not_null\": true}\n ],\n \"indices\": [\"nombre\"],\n \"relaciones\": [{\"tabla\": \"proveedores\", \"campo\": \"proveedor_id\"}]\n },\n {\n \"nombre\": \"categorias\",\n \"campos\": [\n {\"nombre\": \"categoria_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre_categoria\", \"tipo\": \"VARCHAR(50)\", \"not_null\": true, \"unique\": true}\n ],\n \"indices\": [],\n \"relaciones\": []\n },\n {\n \"nombre\": \"pedidos\",\n \"campos\": [\n {\"nombre\": \"pedido_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"cliente_id\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"fecha_pedido\", \"tipo\": \"DATETIME\", \"not_null\": true},\n {\"nombre\": \"estado\", \"tipo\": \"ENUM('Pendiente', 'En proceso', 'Entregado', 'Cancelado')\", \"not_null\": true},\n {\"nombre\": \"total\", \"tipo\": \"DECIMAL(10,2)\", \"not_null\": true}\n ],\n \"indices\": [],\n \"relaciones\": [{\"tabla\": \"clientes\", \"campo\": \"cliente_id\"}]\n },\n {\n \"nombre\": \"detalles_pedido\",\n \"campos\": [\n {\"nombre\": \"detalle_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"pedido_id\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"producto_id\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"cantidad\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"precio_unitario\", \"tipo\": \"DECIMAL(10,2)\", \"not_null\": true}\n ],\n \"indices\": [],\n \"relaciones\": [\n {\"tabla\": \"pedidos\", \"campo\": \"pedido_id\"},\n {\"tabla\": \"productos\", \"campo\": \"producto_id\"}\n ]\n },\n {\n \"nombre\": \"direcciones_entrega\",\n \"campos\": [\n {\"nombre\": \"direccion_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"cliente_id\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"direccion\", \"tipo\": \"VARCHAR(255)\", \"not_null\": true},\n {\"nombre\": \"ciudad\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"codigo_postal\", \"tipo\": \"CHAR(10)\", \"not_null\": true}\n ],\n \"indices\": [],\n \"relaciones\": [{\"tabla\": \"clientes\", \"campo\": \"cliente_id\"}]\n },\n {\n \"nombre\": \"formas_pago\",\n \"campos\": [\n {\"nombre\": \"forma_pago_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre\", \"tipo\": \"VARCHAR(50)\", \"not_null\": true, \"unique\": true}\n ],\n \"indices\": [],\n \"relaciones\": []\n },\n {\n \"nombre\": \"historial_pagos\",\n \"campos\": [\n {\"nombre\": \"pago_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"pedido_id\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"forma_pago_id\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"monto\", \"tipo\": \"DECIMAL(10,2)\", \"not_null\": true},\n {\"nombre\": \"fecha_pago\", \"tipo\": \"DATETIME\", \"not_null\": true}\n ],\n \"indices\": [],\n \"relaciones\": [\n {\"tabla\": \"pedidos\", \"campo\": \"pedido_id\"},\n {\"tabla\": \"formas_pago\", \"campo\": \"forma_pago_id\"}\n ]\n },\n {\n \"nombre\": \"repartidores\",\n \"campos\": [\n {\"nombre\": \"repartidor_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"apellido\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"telefono\", \"tipo\": \"CHAR(15)\", \"not_null\": true},\n {\"nombre\": \"licencia_conduccion\", \"tipo\": \"VARCHAR(50)\", \"not_null\": true},\n {\"nombre\": \"estado\", \"tipo\": \"ENUM('Activo', 'Inactivo')\", \"not_null\": true}\n ],\n \"indices\": [],\n \"relaciones\": []\n },\n {\n \"nombre\": \"rutas\",\n \"campos\": [\n {\"nombre\": \"ruta_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre_ruta\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"ciudades\",\ \"tipo\": \"TEXT\", \"not_null\": true}\n ],\n \"indices\": [],\n \"relaciones\": []\n },\n {\n \"nombre\": \"entregas\",\n \"campos\": [\n {\"nombre\": \"entrega_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"pedido_id\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"repartidor_id\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"fecha_entrega\", \"tipo\": \"DATETIME\", \"not_null\": true},\n {\"nombre\": \"estado\", \"tipo\": \"ENUM('Pendiente', 'En camino', 'Entregado', 'No encontrado')\", \"not_null\": true}\n ],\n \"indices\": [],\n \"relaciones\": [\n {\"tabla\": \"pedidos\", \"campo\": \"pedido_id\"},\n {\"tabla\": \"repartidores\", \"campo\": \"repartidor_id\"}\n ]\n },\n {\n \"nombre\": \"usuarios\",\n \"campos\": [\n {\"nombre\": \"usuario_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre_usuario\", \"tipo\": \"VARCHAR(50)\", \"not_null\": true, \"unique\": true},\n {\"nombre\": \"contrasena\", \"tipo\": \"VARCHAR(255)\", \"not_null\": true},\n {\"nombre\": \"rol\", \"tipo\": \"ENUM('Administrador', 'Vendedor', 'Repartidor')\", \"not_null\": true},\n {\"nombre\": \"activo\", \"tipo\": \"BOOLEAN\", \"not_null\": true}\n ],\n \"indices\": [\"nombre_usuario\"],\n \"relaciones\": []\n },\n {\n \"nombre\": \"permisos\",\n \"campos\": [\n {\"nombre\": \"permiso_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre_permiso\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true, \"unique\": true}\n ],\n \"indices\": [],\n \"relaciones\": []\n },\n {\n \"nombre\": \"roles_permisos\",\n \"campos\": [\n {\"nombre\": \"rol_id\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"permiso_id\", \"tipo\": \"INT\", \"not_null\": true}\n ],\n \"indices\": [],\n \"relaciones\": [\n {\"tabla\": \"roles\", \"campo\": \"rol_id\"},\n {\"tabla\": \"permisos\", \"campo\": \"permiso_id\"}\n ]\n },\n {\n \"nombre\": \"marcas\",\n \"campos\": [\n {\"nombre\": \"marca_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre_marca\", \"tipo\": \"VARCHAR(50)\", \"not_null\": true, \"unique\": true}\n ],\n \"indices\": [],\n \"relaciones\": []\n },\n {\n \"nombre\": \"sucursal\",\n \"campos\": [\n {\"nombre\": \"sucursal_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"nombre_sucursal\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true},\n {\"nombre\": \"direccion\", \"tipo\": \"VARCHAR(255)\", \"not_null\": true},\n {\"nombre\": \"ciudad\", \"tipo\": \"VARCHAR(100)\", \"not_null\": true}\n ],\n \"indices\": [],\n \"relaciones\": []\n },\n {\n \"nombre\": \"ventas\",\n \"campos\": [\n {\"nombre\": \"venta_id\", \"tipo\": \"INT\", \"not_null\": true, \"primary_key\": true},\n {\"nombre\": \"sucursal_id\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"empleado_id\", \"tipo\": \"INT\", \"not_null\": true},\n {\"nombre\": \"fecha_venta\", \"tipo\": \"DATETIME\", \"not_null\": true},\n {\"nombre\": \"monto_total\", \"tipo\": \"DECIMAL(10,2)\", \"not_null\": true}\n ],\n \"indices\": [],\n \"relaciones\": [\n {\"tabla\": \"sucursal\", \"campo\": \"sucursal_id\"},\n {\"tabla\": \"empleados\", \"campo\": \"empleado_id\"}\n ]\n }\n ]\n}"
]
}