Estructura JSON que define el esquema de una base de datos relacional con 20 tablas, incluyendo claves primarias, foráneas, índices y enumeraciones para un sistema de gestión de ventas y logística de domicilios.
{
"schema": "ecommerce_delivery",
"tables": [
{
"table_name": "usuarios",
"columns": [
"id",
"nombre",
"email",
"rol",
"fecha_registro"
],
"primary_key": "id",
"indexes": [
"email"
]
},
{
"table_name": "perfiles",
"columns": [
"id",
"usuario_id",
"telefono",
"direccion_predeterminada"
],
"foreign_keys": [
{
"column": "usuario_id",
"references": "usuarios(id)"
}
]
},
{
"table_name": "categorias",
"columns": [
"id",
"nombre",
"descripcion"
],
"primary_key": "id"
},
{
"table_name": "productos",
"columns": [
"id",
"nombre",
"precio",
"categoria_id",
"stock"
],
"foreign_keys": [
{
"column": "categoria_id",
"references": "categorias(id)"
}
]
},
{
"table_name": "metodos_pago",
"columns": [
"id",
"nombre_metodo"
],
"enumerations": [
"Tarjeta",
"Efectivo",
"Transferencia",
"PayPal"
]
},
{
"table_name": "pedidos",
"columns": [
"id",
"usuario_id",
"fecha",
"estado",
"metodo_pago_id",
"total"
],
"foreign_keys": [
{
"column": "usuario_id",
"references": "usuarios(id)"
},
{
"column": "metodo_pago_id",
"references": "metodos_pago(id)"
}
],
"indexes": [
"estado",
"fecha"
]
},
{
"table_name": "detalles_pedido",
"columns": [
"id",
"pedido_id",
"producto_id",
"cantidad",
"precio_unitario"
],
"foreign_keys": [
{
"column": "pedido_id",
"references": "pedidos(id)"
},
{
"column": "producto_id",
"references": "productos(id)"
}
]
},
{
"table_name": "repartidores",
"columns": [
"id",
"nombre",
"vehiculo",
"estado_disponibilidad"
],
"enumerations": [
"Disponible",
"Ocupado",
"Inactivo"
]
},
{
"table_name": "envios",
"columns": [
"id",
"pedido_id",
"repartidor_id",
"estado_envio",
"ubicacion_actual",
"fecha_entrega"
],
"foreign_keys": [
{
"column": "pedido_id",
"references": "pedidos(id)"
},
{
"column": "repartidor_id",
"references": "repartidores(id)"
}
],
"indexes": [
"estado_envio"
]
},
{
"table_name": "direcciones",
"columns": [
"id",
"usuario_id",
"alias",
"direccion_completa",
"coordenadas"
],
"foreign_keys": [
{
"column": "usuario_id",
"references": "usuarios(id)"
}
]
},
{
"table_name": "cupones",
"columns": [
"id",
"codigo",
"descuento",
"fecha_expiracion"
],
"indexes": [
"codigo"
]
},
{
"table_name": "historial_estados",
"columns": [
"id",
"pedido_id",
"estado_anterior",
"nuevo_estado",
"fecha_cambio"
],
"foreign_keys": [
{
"column": "pedido_id",
"references": "pedidos(id)"
}
]
},
{
"table_name": "valoraciones",
"columns": [
"id",
"pedido_id",
"calificacion",
"comentario"
],
"foreign_keys": [
{
"column": "pedido_id",
"references": "pedidos(id)"
}
]
},
{
"table_name": "inventario",
"columns": [
"id",
"producto_id",
"cantidad_almacen",
"ubicacion_bodega"
],
"foreign_keys": [
{
"column": "producto_id",
"references": "productos(id)"
}
]
},
{
"table_name": "proveedores",
"columns": [
"id",
"nombre_empresa",
"contacto"
],
"primary_key": "id"
},
{
"table_name": "producto_proveedor",
"columns": [
"producto_id",
"proveedor_id"
],
"foreign_keys": [
{
"column": "producto_id",
"references": "productos(id)"
},
{
"column": "proveedor_id",
"references": "proveedores(id)"
}
]
},
{
"table_name": "notificaciones",
"columns": [
"id",
"usuario_id",
"mensaje",
"leido",
"fecha"
],
"foreign_keys": [
{
"column": "usuario_id",
"references": "usuarios(id)"
}
]
},
{
"table_name": "configuracion",
"columns": [
"id",
"llave",
"valor"
],
"primary_key": "id"
},
{
"table_name": "auditoria",
"columns": [
"id",
"tabla_afectada",
"accion",
"usuario_id",
"timestamp"
],
"foreign_keys": [
{
"column": "usuario_id",
"references": "usuarios(id)"
}
]
},
{
"table_name": "soporte_tickets",
"columns": [
"id",
"usuario_id",
"asunto",
"estado_ticket"
],
"foreign_keys": [
{
"column": "usuario_id",
"references": "usuarios(id)"
}
]
}
]
}