26 Construcción de estructura Tablas Compra, Detalle y Temporal con Índices 🛒📋Sistema de Farmacia

Duración: 11 min
Módulo: Módulo Compras Lección 3 de 16

Descripción

📊 Lección 26: Base de Datos para el Módulo de Compras

En esta lección diseñamos el flujo relacional para el abastecimiento de la farmacia, dividiendo el proceso en tres niveles lógicos y optimizando el rendimiento con índices.

🧠 1. El Flujo de Abastecimiento

  • Compras Temporales: Funciona como una orden de compra o carrito interno por sucursal. Los precios son estimados y el stock no se altera porque la mercadería aún no ha llegado.
  • Compras (Cabecera): Centraliza los datos globales de la transacción real: proveedor, usuario, sucursal, fecha, número de comprobante y monto total.
  • Compra Detalles: El desglose del pedido. Vincula cada producto con la compra y, de forma crítica, con su lote específico para controlar la trazabilidad y los vencimientos.

⚠️ Regla de diseño: El subtotal no se guarda en la base de datos. Se calcula sobre la marcha en la vista o en el modelo multiplicando precio por cantidad para evitar datos redundantes.

⚡ 2. Índices y Corrección de Migraciones

  • Rendimiento: Añadimos índices en las llaves foráneas y campos de estado. Esto evita que la base de datos lea miles de filas una por una, acelerando las búsquedas y los reportes.
  • Depuración: Ejecutamos un refresco de migraciones para verificar la integridad del esquema. Corregimos errores comunes de orden de ejecución apuntando correctamente a las tablas nativas de usuarios (users) y sucursales (sucursales).

💡 Conclusión

Con esta estructura organizada, el sistema está listo para soportar la lógica transaccional. En la próxima lección pasaremos al frontend para construir las interfaces dinámicas de este módulo.

Tip de Hilari Web: Las tablas maestras (usuarios, sucursales) siempre deben crearse antes que las tablas que dependen de ellas para evitar errores de llaves foráneas en Laravel.