SQL II: diseñar, indexar y transaccionar
Modelos, índices, transacciones y consultas que escalan, sobre SQLite de verdad.
13 aulas · 7 horas de práctica · en el navegador, sin instalar nada
Temario
- Modelar sin duplicar — Entidades, claves primarias y relaciones 1-N y N-N con REFERENCES.
- Restricciones: reglas que cuida la base — NOT NULL, UNIQUE, CHECK, DEFAULT y ON DELETE CASCADE: la base rechazando lo que no debería pasar.
- Normalizar: de la planilla a las tablas — De una sola tabla repetida a varias sin redundancia: por qué la duplicación es el problema, no una molestia estética.
- Taller — El modelo de la tienda — El primer reporte de gerencia, armado sobre las tablas recién separadas: cuánto gastó cada cliente, y quiénes gastan de verdad.
- Índices: por qué una consulta es lenta — De recorrer la tabla entera a saltar directo a la fila: CREATE INDEX, EXPLAIN QUERY PLAN e índices compuestos.
- Transacciones: todo o nada — BEGIN, COMMIT y ROLLBACK: cómo agrupar varias operaciones para que pasen todas juntas, o ninguna.
- CTEs y subconsultas — WITH para nombrar un resultado intermedio, EXISTS para preguntar sin traer datos, y la trampa de NOT IN con NULL.
- Window functions — ROW_NUMBER, RANK, SUM() OVER y LAG/LEAD: calcular sobre un grupo sin perder el detalle de cada fila.
- Taller — La consulta lenta — Diagnosticar por qué dos consultas de la tienda son lentas, indexar lo justo, y resolver el reporte que las motivó.
- Vistas y triggers — CREATE VIEW para empaquetar una consulta con nombre, y CREATE TRIGGER para que la base reaccione sola a un cambio.
- UPSERT, fechas y JSON — ON CONFLICT DO UPDATE para insertar-o-actualizar en un solo paso, strftime para agrupar fechas, json_extract para leer datos semiestructurados.
- Diseñar para el análisis — Tabla de hechos y dimensiones: por qué un reporte se arma distinto a como se guardan los datos operativos.
- Taller — El cierre de mes — El reporte de cierre: cuánto vendió cada categoría en enero, rankeadas, sin perder de vista cuántos pedidos hay detrás de cada número.