Ejemplo
En este módulo, aplicaremos lo aprendido en procedimientos almacenados, funciones y triggers mediante casos prácticos. Además, desarrollaremos un proyecto final para consolidar conocimientos.
1. Caso Práctico: Automatización de Procesos con Procedimientos Almacenados #
📌 Escenario:
Una empresa quiere automatizar el cálculo de salarios considerando bonificaciones del 10% para empleados con más de 5 años de antigüedad.
Solución con Procedimiento Almacenado #
2. Caso Práctico: Seguridad y Control con Triggers #
📌 Escenario:
Queremos evitar que un empleado con rol de "Admin" pueda ser eliminado accidentalmente.
Solución con Trigger #
3. Proyecto Final: Implementación de una Lógica de Negocio Completa #
Escenario: #
Desarrollaremos un sistema para gestionar ventas y stock en una tienda.
El sistema deberá:
✅ Registrar una nueva venta.
✅ Verificar si hay stock disponible antes de realizar la venta.
✅ Descontar el stock del producto vendido.
✅ Guardar un registro de auditoría con cada venta realizada.
Diseño de Tablas #
1CREATE TABLE productos ( 2 id INT PRIMARY KEY AUTO_INCREMENT, 3 nombre VARCHAR(50), 4 stock INT NOT NULL, 5 precio DECIMAL(10,2) NOT NULL 6); 7 8CREATE TABLE ventas ( 9 id INT PRIMARY KEY AUTO_INCREMENT, 10 producto_id INT, 11 cantidad INT NOT NULL, 12 fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 13 FOREIGN KEY (producto_id) REFERENCES productos(id) 14); 15 16CREATE TABLE auditoria_ventas ( 17 id INT PRIMARY KEY AUTO_INCREMENT, 18 mensaje TEXT, 19 fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP 20);
Procedimiento para Registrar Ventas #
Trigger para Registrar Auditoría #
4. Optimización y Buenas Prácticas #
Usar Índices #
1CREATE INDEX idx_producto_id ON ventas(producto_id);
Evitar Cursores cuando sea posible #
Usar JOIN en lugar de cursores para consultas eficientes.
Validaciones en la Aplicación y en la Base de Datos #
Es recomendable validar datos tanto en la aplicación como en la base de datos.