Heierling GmbH fabrica y vende botas de esquí a medida en Davos. Trabajé allí como agente de ventas, y de ahí salió el caso: conocía de primera mano cómo se movía el stock por la tienda.
El sistema, en cambio, es exclusivamente un trabajo académico. Lo diseñé desde cero para el módulo de Information Engineering; no fue un encargo de la empresa ni ha llegado a usarse allí, que sigue con sus propios sistemas internos.
Lo que hace particular al caso son sus tres ubicaciones de stock — el almacén exterior, el ejemplar de cada modelo y talla que se queda en tienda para probar, y la zona de reservas apartadas para clientes. El sistema tiene que deducir dónde está cada par en lugar de limitarse a contar unidades, y avisar para reponer cuando solo queda el ejemplar de exposición.
El objetivo era implementar una base de datos relacional completa con integridad referencial, acceso por roles y automatización de las operaciones de negocio mediante funciones y disparadores.
01Análisis de requisitos y modelado E/R
Identificación de entidades (Product, Customer, Order, Supplier, Employee), atributos y relaciones. Diseño del diagrama Entidad-Relación con cardinalidades y restricciones de integridad.
02Implementación del esquema SQL
Traducción del modelo E/R a sentencias CREATE TABLE en PostgreSQL con claves primarias, foráneas, restricciones CHECK, valores por defecto y tipos de dato apropiados para cada entidad.
03Funciones PL/pgSQL
Desarrollo de funciones almacenadas para todas las operaciones de negocio: registro de pedidos, actualización de stock, cálculo de totales, búsqueda de productos por categoría y generación de informes de inventario.
04Triggers y automatización
Implementación de disparadores AFTER INSERT y AFTER UPDATE para actualizar automáticamente el stock al procesar pedidos y generar alertas cuando el inventario cae por debajo del umbral mínimo.
05Control de acceso por roles
Creación de roles de base de datos (admin, staff, readonly) con permisos granulares mediante GRANT y REVOKE. Cada rol accede únicamente a las tablas y operaciones que le corresponden.
06Entorno Docker
Despliegue de PostgreSQL en contenedor Docker sobre Debian Linux para reproducibilidad del entorno. El repositorio incluye instrucciones para levantar la base de datos en cualquier máquina con un único comando.
Este proyecto fue mi primera implementación completa de una base de datos relacional de producción. La diferencia entre escribir SQL básico y diseñar un sistema con integridad referencial real, triggers y roles es sustancial — aprendí que la mayor parte del trabajo está en el modelado previo, no en el código SQL en sí.
También fue mi primera experiencia con Docker como herramienta de reproducibilidad de entornos, un patrón que ahora uso en todos mis proyectos.