SkiCraft Custom Boots — Inventory DB
Sistema de gestión de inventario en PostgreSQL · Information Engineering (CEAC4010)
El problema
SkiCraft Custom Boots es una tienda especializada en botas de esquí a medida con sede en Davos. El negocio gestionaba su inventario mediante hojas de cálculo Excel, lo que generaba errores de stock, duplicados de datos y la imposibilidad de consultar el historial de pedidos de forma eficiente.
El objetivo del proyecto era diseñar e implementar una base de datos relacional completa que sustituyera el sistema manual, con integridad referencial, acceso por roles y automatización de operaciones de negocio mediante funciones y disparadores.
Proceso de desarrollo
Aná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.
Implementació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.
Funciones 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.
Triggers 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.
Control 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.
Entorno 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.
Lo que aprendí
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.