Sistema de Inventario v2.0 - Mejorado
Versión mejorada con validaciones avanzadas, funciones personalizadas y documentación completa. Aplicando mejores prácticas de desarrollo y arquitectura de bases de datos.
Mejoras Implementadas en v2.0
Validaciones
Integridad y consistencia de datos
Funciones SQL
Procedimientos personalizados
Documentación
Completa por módulos
Git Submodule
Control de versiones
Arquitectura del Sistema
Mejora en v2.0: Modularización
El sistema ahora está dividido en módulos independientes para mejor mantenimiento y escalabilidad.
Módulos Principales:
- Validaciones de datos
- Gestión de transacciones
- Reportes y consultas
- Triggers automatizados
Tecnologías:
- PostgreSQL 15+
- PL/pgSQL
- Git Submodules
- Markdown Docs
Arquitectura del Sistema
Diseño modular en capas
Sistema de Validaciones Avanzadas
Validaciones de Integridad
Validación de Stock
Verificación automática de stock disponible antes de procesar ventas.
CHECK constraintValidación de Precios
Control de precios positivos y rangos válidos.
BEFORE INSERTValidación de Fechas
Consistencia temporal en transacciones.
TRIGGEREjemplo de Validación:
-- Función de validación de stock
CREATE OR REPLACE FUNCTION validar_stock()
RETURNS TRIGGER AS $$
BEGIN
IF NEW.tipo = 'venta' AND
NEW.cantidad > (SELECT cantidad FROM productos
WHERE producto_id = NEW.producto_id) THEN
RAISE EXCEPTION 'Stock insuficiente';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Funciones SQL Personalizadas
Nuevo en v2.0
Funciones modulares para reportes y cálculos complejos.
- calcular_valor_inventario() - Valor total del inventario
- obtener_movimientos_mes() - Transacciones por período
- productos_bajo_stock() - Alertas de reabastecimiento
- generar_reporte_ventas() - Análisis de ventas
Triggers Mejorados
Los triggers son una de las características más poderosas de PostgreSQL que aprendí en este proyecto. Son procedimientos que se ejecutan automáticamente cuando ocurre un evento específico en la base de datos (como INSERT, UPDATE o DELETE).
En este sistema implementé triggers que:
- Validan el stock antes de permitir una venta
- Actualizan automáticamente las cantidades en inventario
- Registran cambios en una tabla de auditoría
- Generan alertas cuando el stock está bajo
Lo más emocionante fue ver cómo los triggers mantienen la integridad de los datos sin intervención manual, y cómo me ayudaron a entender mejor el concepto de "eventos" en bases de datos.
Documentación Completa
Mejora en v2.0
Documentación modular y detallada para cada componente del sistema.
📋 Documentación Principal:
📚 Documentación por Módulos:
Scripts de Testing
Nuevo en v2.0
Scripts automatizados para validar el funcionamiento del sistema y detectar errores.
- validaciones_integridad.sql - Testing de claves foráneas y restricciones
- validaciones_consistencia.sql - Testing de lógica de negocio
- ejecutar_testing_completo.sql - Script maestro de testing
registros_problematicos > 0
,
es necesario revisar y corregir los datos antes de continuar.
Normalización hasta 3FN - Explicación Pedagógica
Mejora en v2.0: Documentación de Normalización
Explicación detallada paso a paso del proceso de normalización aplicado.
1FN
Eliminación de grupos repetitivos y valores atómicos
Completado2FN
Eliminación de dependencias parciales
Completado3FN
Eliminación de dependencias transitivas
CompletadoEjemplo Práctico de Normalización:
-- Antes (No normalizado)
CREATE TABLE inventario_completo (
producto_id INT,
nombre_producto VARCHAR(100),
proveedor_nombre VARCHAR(100),
proveedor_telefono VARCHAR(20),
cantidad INT,
precio DECIMAL(10,2)
);
-- Después (3FN)
CREATE TABLE productos (
producto_id INT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
precio DECIMAL(10,2) CHECK (precio > 0),
proveedor_id INT REFERENCES proveedores(proveedor_id)
);
CREATE TABLE proveedores (
proveedor_id INT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
telefono VARCHAR(20) UNIQUE
);
Control de Versiones con Git Submodule
Nuevo en v2.0
Implementación de Git Submodules para manejo modular del código y documentación.
Estructura del Proyecto:
inventario-v2/
├── database/ # Esquemas y scripts SQL
├── docs/ # Documentación
├── tests/ # Scripts de testing
├── examples/ # Ejemplos de uso
└── .gitmodules # Configuración de submódulos
Comandos Git Submodule:
# Agregar submódulo
git submodule add [URL] [path]
# Actualizar submódulos
git submodule update --remote
# Clonar con submódulos
git clone --recursive [URL]
Aprendizajes y Conclusiones
Habilidades Desarrolladas:
- Arquitectura de Bases de Datos: Diseño modular y escalable
- PL/pgSQL Avanzado: Funciones, triggers y validaciones complejas
- Control de Versiones: Git Submodules para proyectos modulares
- Documentación Técnica: Estándares de documentación profesional
- Testing Automatizado: Scripts de validación y pruebas
Mejoras Implementadas:
- Validaciones robustas de integridad de datos
- Arquitectura modular y mantenible
- Documentación completa y pedagógica
- Control de versiones profesional
- Scripts de testing automatizados
Resultado Final
Un sistema de inventario robusto, escalable y bien documentado que demuestra el dominio de PostgreSQL avanzado, buenas prácticas de desarrollo y arquitectura de software profesional.