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.

PostgreSQL PL/pgSQL Validaciones Git Submodule
Volver al Portafolio

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
1
Validación de Stock

Verificación automática de stock disponible antes de procesar ventas.

CHECK constraint
2
Validación de Precios

Control de precios positivos y rangos válidos.

BEFORE INSERT
3
Validación de Fechas

Consistencia temporal en transacciones.

TRIGGER
Ejemplo 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.

AUDIT LOG STOCK CHECK AUTO UPDATE NOTIFICATIONS

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
UNIT TESTS INTEGRATION PERFORMANCE VALIDATION

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

Completado
2FN

Eliminación de dependencias parciales

Completado
3FN

Eliminación de dependencias transitivas

Completado
Ejemplo 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.