DevBlog Jon Quintanilla

Mis Aportaciones al proyecto Tuxeria

Introducción

Publicado: Noviembre 2023

El sistema de base de datos de la pizzería Tuxeria incluye alteraciones estratégicas que son fundamentales para el funcionamiento de triggers y eventos programados. Estas modificaciones no son meros añadidos, sino elementos clave de la arquitectura.

Este análisis se centra en las alteraciones de tablas que permiten:

Alteración 1: Tabla Pizza

Se añadieron 2 campos para rastreo estadístico:

ALTER TABLE Pizza ADD COLUMN veces_pedidas INT DEFAULT 0;
ALTER TABLE Pizza ADD COLUMN sumadepizzas INT DEFAULT 0;

Propósito:

Ejemplo de Trigger asociado:

CREATE TRIGGER actualizar_stats_pizza AFTER INSERT ON LineaPedido
FOR EACH ROW
UPDATE Pizza SET veces_pedidas = veces_pedidas + 1,
sumadepizzas = sumadepizzas + NEW.unidades
WHERE nom_pizza = NEW.nom_pizza;

Alteración 2: Tabla Cliente

Se añadieron 2 campos para seguimiento de actividad:

ALTER TABLE Cliente ADD COLUMN ped_realizados INT UNSIGNED DEFAULT 0;
ALTER TABLE Cliente ADD COLUMN pizzastotales INT UNSIGNED DEFAULT 0;

Propósito:

Ejemplo de Trigger asociado:

CREATE TRIGGER actualizar_stats_cliente AFTER INSERT ON Pedido
FOR EACH ROW
UPDATE Cliente SET ped_realizados = ped_realizados + 1
WHERE DNI = NEW.dni_cliente;

Alteración 3: Tablas Auxiliares

Se crearon tablas especializadas para funcionalidades específicas:

Tabla top_clientes:

CREATE TABLE top_clientes (
  nombre VARCHAR(40) NOT NULL,
  cant_pedidos INT NOT NULL,
  cant_pizzas INT NOT NULL,
  PRIMARY KEY (nombre)
);

Tabla clientes_antiguos:

CREATE TABLE clientes_antiguos LIKE Cliente;
ALTER TABLE clientes_antiguos ADD COLUMN ultimo_pedido DATETIME;

Propósito:

Ejemplo de Evento asociado:

CREATE EVENT actualizar_top_clientes
ON SCHEDULE EVERY 1 MONTH
DO
BEGIN
  TRUNCATE top_clientes;
  INSERT INTO top_clientes
  SELECT nombre, ped_realizados, pizzastotales
  FROM Cliente
  ORDER BY ped_realizados DESC
  LIMIT 10;
END;

Arquitectura Basada en Alteraciones

Ventajas del diseño:

Flujo de datos con triggers:

  1. Nuevo pedido → Trigger actualiza Cliente.ped_realizados
  2. Línea de pedido → Trigger actualiza Pizza.veces_pedidas y sumadepizzas
  3. Línea de pedido → Trigger actualiza Cliente.pizzastotales

Flujo de datos con eventos:

  1. Mensualmente → Evento actualiza tabla top_clientes
  2. Periódicamente → Evento mueve clientes inactivos a clientes_antiguos

Conclusión

Las alteraciones en las tablas de Tuxeria demuestran una arquitectura bien planificada que:

Estas modificaciones transforman una base de datos transaccional básica en un sistema inteligente que soporta tanto operaciones diarias como análisis de negocio avanzado.

← Volver al index