Bases de datos y gestión de la información
Qué debe dominar el sustentante
Cubra modelo relacional (tablas, llaves primarias y foráneas, integridad referencial), normalización hasta 3FN y formas normales superiores, álgebra relacional básica y SQL (SELECT con JOIN, GROUP BY, HAVING, subconsultas, INSERT/UPDATE/DELETE). Repase transacciones y propiedades ACID, niveles de aislamiento y problemas de concurrencia (lectura sucia, lectura no repetible, lectura fantasma), índices y su costo, y conceptos de modelado dimensional (hechos y dimensiones) frente a OLTP y OLAP. Incluya gobierno de datos, calidad, metadatos y respaldo/recuperación.
Trampas frecuentes
- Usar WHERE para filtrar agregados; el filtro sobre agregados va en HAVING.
- Confundir 2FN (elimina dependencias parciales de la llave compuesta) con 3FN (elimina dependencias transitivas).
- Creer que un índice siempre mejora el rendimiento: acelera lecturas pero encarece escrituras.
- Asumir que un JOIN interno devuelve filas sin coincidencia; para eso existe el LEFT JOIN.
- Interpretar “durabilidad” como “atomicidad” dentro de ACID.
Regla de trabajo
Ante una consulta, pregúntese: ¿el filtro es por fila o por grupo? Fila → WHERE; grupo → HAVING. Y si el enunciado pide conservar registros sin coincidencia, piense en JOIN externo.
Ejemplo resuelto
Para obtener el total facturado por cliente incluyendo clientes sin facturas: SELECT c.nombre, SUM(f.monto) FROM cliente c LEFT JOIN factura f ON c.id = f.cliente_id GROUP BY c.nombre HAVING SUM(f.monto) > 0 OR SUM(f.monto) IS NULL;. El LEFT JOIN preserva clientes sin factura y el GROUP BY agrega por cliente.