Bases de datos: modelo relacional, normalización y transacciones
Bases de datos evalúa el modelo relacional y su formalización, la escritura de SQL correcto, la normalización hasta BCNF y la gestión de transacciones y concurrencia, además de criterios de diseño físico como índices y desnormalización justificada.
Álgebra relacional y SQL
Operadores σ (selección de filas), π (proyección con eliminación de duplicados), ⋈ (reunión), ×, ∪ y −. En SQL, WHERE filtra filas antes de agrupar y HAVING filtra grupos después; toda columna no agregada del SELECT debe aparecer en GROUP BY. Los NULL siguen lógica de tres valores: salario > 1000 no devuelve filas con NULL; COUNT(*) cuenta filas y COUNT(columna) ignora NULL.
Normalización
1FN: atributos atómicos. 2FN: ningún atributo no primo depende de parte de la clave. 3FN: ningún no primo depende transitivamente de la clave. BCNF: todo determinante es superclave. Ejemplo: R(#factura, fecha, #cliente, nombre_cliente, producto, cantidad) con clave (#factura, producto) y dependencias #factura → fecha, #cliente, nombre_cliente; #cliente → nombre_cliente; (#factura, producto) → cantidad.
- 2FN: fecha y #cliente dependen solo de #factura (dependencia parcial) → se separa Factura(#factura, fecha, #cliente) y Detalle(#factura, producto, cantidad).
- 3FN: en Factura, #cliente → nombre_cliente es transitiva → Cliente(#cliente, nombre_cliente). Resultado: tres relaciones en 3FN, sin pérdida de información (la reunión por claves recupera R) y sin repetir el nombre del cliente.
Transacciones y concurrencia
ACID: atomicidad, consistencia, aislamiento y durabilidad. Niveles de aislamiento y anomalías: read uncommitted permite lectura sucia; read committed evita la sucia pero permite la no repetible; repeatable read evita la no repetible y puede permitir lecturas fantasma; serializable evita las tres a costa de concurrencia.
Errores que cuestan puntos
Usar WHERE con funciones agregadas; creer que 3FN siempre es más rápido (a veces se desnormaliza por consultas); crear índices en columnas de baja selectividad, que casi no ayudan y encarecen las escrituras; confundir clave candidata con superclave.