El modelo relacional fue propuesto por Edgar F. Codd en 1970 (A Relational Model of Data for Large Shared Data Banks, CACM), y organiza los datos en relaciones (tablas) formadas por tuplas y atributos. En el diseño lógico se traduce un modelo entidad-relación (entidades, atributos, cardinalidades) a tablas: cada entidad se vuelve una relación y las asociaciones se representan mediante claves foráneas. Dos restricciones son clave: la integridad de entidad prohíbe que un atributo de la clave primaria tome valor NULL, y la integridad referencial exige que toda clave foránea coincida con un valor existente de la clave referenciada o sea totalmente NULL.
La normalización reduce la redundancia y las anomalías mediante formas normales progresivas:
En SQL (derivado de SEQUEL de IBM, estandarizado por ANSI en 1986 e ISO en 1987; norma vigente ISO/IEC 9075) se distingue DDL (definición) de DML (manipulación). El orden lógico de una consulta SELECT no es el de escritura: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY. WHERE filtra filas antes de agrupar; HAVING filtra grupos tras GROUP BY y es la única que aplica condiciones sobre funciones de agregación (COUNT, SUM, AVG). Un INNER JOIN devuelve solo las filas con coincidencia en ambas tablas, mientras que un LEFT OUTER JOIN conserva todas las filas de la izquierda y rellena con NULL las columnas derechas sin coincidencia.
Las transacciones garantizan fiabilidad con las propiedades ACID (Härder & Reuter, 1983): Atomicidad (todo o nada; si falla se hace ROLLBACK), Consistencia, Aislamiento y Durabilidad (tras COMMIT los cambios persisten ante fallas, vía bitácora/log). El estándar SQL define cuatro niveles de aislamiento (READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE) según los fenómenos que permiten: lectura sucia, lectura no repetible y lectura fantasma; SERIALIZABLE los evita todos. Los índices aceleran las consultas y las bases NoSQL o la fragmentación y replicación se aplican según necesidades de escala y disponibilidad.
1. ¿Quién propuso el modelo relacional de datos en 1970, sentando las bases de las relaciones (tablas), tuplas y atributos como fundamento de la gestión de datos?
Codd publicó 'A Relational Model of Data for Large Shared Data Banks' en 1970 en Communications of the ACM, fundando el modelo relacional; Bachman propuso el modelo en red, Chen el modelo entidad-relación y Chamberlin coautoró SQL. (E. F. Codd, Communications of the ACM, Vol. 13, No. 6, junio 1970)
2. En el contexto de las transacciones de bases de datos, ¿qué significan las siglas ACID?
ACID significa Atomicidad, Consistencia, Aislamiento y Durabilidad, según Härder y Reuter (1983); los distractores sustituyen algunos términos por conceptos reales de sistemas distribuidos que no forman parte del acrónimo. (Härder, T. & Reuter, A., ACM Computing Surveys, Vol. 15, No. 4, 1983)
3. Durante una transacción bancaria se debita el saldo de la cuenta A, pero antes de acreditar la cuenta B el sistema sufre una falla eléctrica. Al reiniciar, el motor de base de datos revierte el débito ya realizado en la cuenta A. ¿Qué propiedad ACID garantiza este comportamiento?
La atomicidad trata la transacción como una unidad indivisible: si una operación falla antes de completarse, se hace ROLLBACK de todas las operaciones parciales ('todo o nada'). (Elmasri & Navathe, Fundamentals of Database Systems, propiedades ACID)
4. Un cliente confirma su compra en línea y recibe el mensaje 'pedido registrado' (COMMIT). Segundos después, el servidor de base de datos se apaga de forma abrupta por un corte de energía. Al reiniciar, el pedido sigue registrado gracias al registro de bitácora. ¿Qué propiedad ACID se refleja en este caso?
La durabilidad garantiza que los cambios de una transacción ya confirmada con COMMIT persisten aun ante fallas del sistema, típicamente mediante el registro de bitácora. (Silberschatz, Korth & Sudarshan, Database System Concepts, cap. de transacciones)
5. El estándar SQL define cuatro niveles de aislamiento para las transacciones. Ordenados del más laxo (permite más fenómenos de concurrencia) al más estricto, ¿cuál es el orden correcto?
El estándar SQL ordena los niveles de aislamiento de menor a mayor restricción como READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ y SERIALIZABLE; la tercera opción invierte por completo ese orden. (ISO/IEC 9075, SET TRANSACTION ISOLATION LEVEL)
6. En una transacción, un reporte ejecuta dos veces la misma consulta 'SELECT COUNT(*) FROM pedidos WHERE estado = pendiente' y obtiene 50 la primera vez y 53 la segunda, porque otra transacción insertó tres pedidos nuevos con ese estado entre ambas lecturas. ¿Qué fenómeno de concurrencia ilustra este caso?
La lectura fantasma ocurre cuando una segunda ejecución de la misma consulta devuelve filas nuevas insertadas por otra transacción concurrente; se diferencia de la lectura no repetible, que afecta el valor de filas ya leídas, no la aparición de filas nuevas. (ISO/IEC 9075:1992 (SQL-92), subcláusula de isolation levels)
7. Una transacción T1 actualiza el precio de un producto pero aún no ejecuta COMMIT. Una transacción T2, en ejecución concurrente, lee ese precio modificado y lo utiliza para generar una factura; después, T1 hace ROLLBACK. ¿Qué fenómeno de concurrencia se presentó?
La lectura sucia (dirty read) ocurre cuando una transacción lee datos modificados por otra transacción que todavía no confirma (COMMIT) y que después puede revertirse con ROLLBACK. (ISO/IEC 9075:1992 (SQL-92), subcláusula de isolation levels)
8. ¿Qué condición exige la primera forma normal (1FN) sobre los atributos de una relación?
La 1FN exige valores atómicos y ausencia de grupos repetitivos o atributos multivaluados; las otras opciones describen, en orden, la 2FN, la 3FN y la BCNF. (Elmasri & Navathe, Fundamentals of Database Systems, cap. de normalización)
9. Una tabla 'Inscripciones' tiene como clave primaria compuesta (Matrícula, Curso) y almacena el atributo 'NombreAlumno', el cual depende únicamente de Matrícula y no de la clave completa. ¿Qué forma normal se viola?
Existe una dependencia funcional parcial, pues NombreAlumno depende solo de una parte de la clave compuesta (Matrícula) y no de la clave completa, lo que viola la 2FN. (Elmasri & Navathe, Fundamentals of Database Systems, cap. de normalización)
10. En una tabla 'Empleados' con clave primaria IdEmpleado, el atributo 'CodigoDepartamento' determina a 'NombreDepartamento'; es decir, NombreDepartamento depende de IdEmpleado únicamente a través de CodigoDepartamento. ¿Qué forma normal se viola?
NombreDepartamento depende transitivamente de la clave primaria a través de CodigoDepartamento, lo cual viola la 3FN, resumida en la regla 'la clave, toda la clave y nada más que la clave'. (Bill Kent, 'A Simple Guide to Five Normal Forms...', Communications of the ACM, Vol. 26, No. 2, 1983)
11. ¿Cuál es la diferencia esencial entre la tercera forma normal (3FN) y la forma normal de Boyce-Codd (BCNF)?
La BCNF es más estricta que la 3FN porque exige que todo determinante de una dependencia funcional no trivial sea superclave, incluso cuando el atributo dependiente es primo, caso que la 3FN sí permite. (Codd, 'Recent Investigations into Relational Data Base Systems', 1974; Elmasri & Navathe, cap. de normalización)
12. ¿Qué establece la regla de integridad de entidad en el modelo relacional?
La integridad de entidad prohíbe valores NULL en cualquier atributo que forme parte de la clave primaria; la opción sobre claves foráneas corresponde, en cambio, a la integridad referencial. (Elmasri & Navathe, Fundamentals of Database Systems, restricciones del modelo relacional)
13. Un desarrollador intenta insertar un registro en la tabla 'Pedidos' con un valor de 'IdCliente' que no existe en la tabla 'Clientes', y la columna IdCliente no admite valores NULL. Según la regla de integridad referencial, ¿qué debe ocurrir?
La integridad referencial exige que toda clave foránea coincida con un valor existente de la clave referenciada, o sea NULL si se permite; al no admitirse NULL y no existir el cliente, la inserción debe rechazarse. (Elmasri & Navathe, Fundamentals of Database Systems, restricciones de integridad relacional)
14. ¿Cuál es el orden lógico correcto en que el motor de base de datos evalúa las cláusulas de una sentencia SELECT?
El procesamiento lógico de una consulta SQL inicia en FROM y concluye en ORDER BY; aunque SELECT se escribe primero, se evalúa después de HAVING. (ISO/IEC 9075, procesamiento lógico de la consulta)
15. La tabla 'Ventas' se agrupa por la columna 'vendedor' y produce los siguientes conteos de operaciones: Ana con 12, Beto con 5, Carla con 8 y Diego con 3. Se ejecuta la sentencia: SELECT vendedor, COUNT(*) FROM ventas GROUP BY vendedor HAVING COUNT(*) > 5. ¿Cuántos vendedores aparecen en el resultado?
HAVING filtra los grupos después de GROUP BY; solo Ana (12) y Carla (8) superan estrictamente el umbral de 5, por lo que Beto (exactamente 5) queda excluido y el resultado contiene 2 vendedores. (ISO/IEC 9075, semántica de GROUP BY/HAVING; Elmasri & Navathe, cap. de SQL)
16. La tabla 'Clientes' tiene 10 registros y la tabla 'Pedidos' contiene exactamente un pedido para 7 de esos clientes; los otros 3 clientes no tienen ningún pedido registrado. Si se ejecuta un LEFT OUTER JOIN de Clientes hacia Pedidos, ¿cuántas filas devuelve el resultado?
El LEFT OUTER JOIN conserva todas las filas de la tabla izquierda (los 10 clientes) y rellena con NULL las columnas de Pedidos donde no hay coincidencia, por lo que el resultado tiene 10 filas. (ISO/IEC 9075, operadores de JOIN; Silberschatz, Korth & Sudarshan, Database System Concepts)
17. La tabla 'Clientes' tiene 10 registros y la tabla 'Pedidos' contiene exactamente un pedido para 7 de esos clientes; los otros 3 clientes no tienen ningún pedido registrado. Si en cambio se ejecuta un INNER JOIN entre Clientes y Pedidos, ¿cuántas filas devuelve el resultado?
El INNER JOIN devuelve solo las filas con coincidencia en ambas tablas; como únicamente 7 clientes tienen un pedido asociado, el resultado contiene 7 filas. (ISO/IEC 9075, operadores de JOIN; Silberschatz, Korth & Sudarshan, Database System Concepts)
18. ¿Cuál de las siguientes sentencias SQL pertenece al lenguaje de definición de datos (DDL) y no al lenguaje de manipulación de datos (DML)?
CREATE TABLE define la estructura de un objeto de la base de datos (DDL); las sentencias INSERT, UPDATE y DELETE manipulan los datos ya almacenados en esas estructuras (DML). (ISO/IEC 9075, clasificación de sentencias SQL)
19. Se requiere obtener el nombre de los empleados cuyo salario es mayor al salario promedio de toda la empresa. ¿Qué construcción SQL resuelve este requerimiento de forma directa?
Una subconsulta escalar con AVG(salario) en el WHERE permite comparar cada fila contra el promedio general; agrupar por departamento respondería una pregunta distinta y ordenar con límite 1 solo obtendría el salario máximo, no todos los superiores al promedio. (Elmasri & Navathe, Fundamentals of Database Systems, cap. de SQL (subconsultas))
20. El lenguaje SQL, derivado de SEQUEL desarrollado en IBM, fue estandarizado por primera vez por un organismo en 1986 (SQL-86). ¿Qué organismo emitió ese primer estándar?
ANSI publicó el primer estándar SQL (SQL-86) en 1986; ISO lo adoptó un año después, en 1987, dando origen a la serie ISO/IEC 9075. (ANSI X3.135-1986; ISO 9075:1987)
21. Una aplicación necesita almacenar y recuperar sesiones de usuario activas mediante un identificador único, con lecturas y escrituras extremadamente rápidas y sin consultas complejas sobre el contenido almacenado. ¿Qué tipo de base de datos NoSQL es más adecuado para este requerimiento?
Las bases clave-valor están optimizadas para búsquedas directas por identificador único con latencia mínima, ideales para cachés de sesión; las documentales, de grafos y columnares están pensadas para estructuras o cargas distintas. (Silberschatz, Korth & Sudarshan, Database System Concepts, cap. de almacenes NoSQL)
22. Una red social requiere calcular de forma eficiente recomendaciones de 'amigos en común' y rutas de conexión entre usuarios, mediante consultas que recorren múltiples relaciones interconectadas. ¿Qué tipo de base de datos NoSQL conviene emplear para este requerimiento?
Las bases de datos de grafos modelan nodos y relaciones de forma nativa, lo que hace eficiente recorrer conexiones múltiples como 'amigos en común'; las columnares se enfocan en agregaciones sobre grandes volúmenes homogéneos, no en recorridos de relaciones. (Silberschatz, Korth & Sudarshan, Database System Concepts, cap. de almacenes NoSQL)
23. Un sistema de monitoreo de sensores IoT genera millones de lecturas por minuto, cada una con marca de tiempo, identificador de sensor y valor numérico; los reportes agregan estos datos por rangos de tiempo y requieren escrituras masivas sostenidas sobre un esquema muy homogéneo. Frente a un modelo puramente relacional normalizado, ¿qué tipo de base de datos NoSQL es la opción más adecuada?
Las bases de datos columnares (orientadas a columnas o wide-column) están diseñadas para escrituras masivas y sostenidas de datos homogéneos con series de tiempo, permitiendo agregaciones eficientes por rango; las documentales convienen a datos semiestructurados variables y las de grafos a relaciones complejas. (Silberschatz, Korth & Sudarshan, Database System Concepts, cap. de almacenes NoSQL)
24. En el modelo entidad-relación (E-R), un conjunto de objetos del mundo real que comparten las mismas características y que se representa mediante un rectángulo en el diagrama se conoce como:
En el modelo E-R, la entidad es el objeto o concepto del mundo real representado con un rectángulo; los atributos son sus propiedades y las relaciones son los vínculos entre entidades, representados con rombos. (Peter Chen, 'The Entity-Relationship Model — Toward a Unified View of Data', ACM Transactions on Database Systems, Vol. 1, No. 1, 1976)
25. En un diagrama entidad-relación, el rombo (diamante) se utiliza convencionalmente para representar:
El rombo representa una relación o asociación entre entidades; las entidades se dibujan con rectángulos y los atributos con óvalos. (Peter Chen, 'The Entity-Relationship Model', ACM TODS, Vol. 1, No. 1, 1976)
26. Un analista modela un sistema en el que cada empleado está asignado a un único departamento, mientras que cada departamento puede tener asignados varios empleados. ¿Qué cardinalidad describe correctamente la relación 'trabaja en' entre las entidades Departamento y Empleado, leída de Departamento hacia Empleado?
Como un departamento se asocia con varios empleados pero cada empleado pertenece a un solo departamento, la cardinalidad de Departamento hacia Empleado es uno a muchos (1:N); etiquetarla como N:1 invierte el sentido de la lectura. (Elmasri & Navathe, 'Fundamentals of Database Systems', cap. de modelado E-R (restricciones de cardinalidad))
27. En un diagrama E-R, la cardinalidad mínima de participación de una entidad en una relación indica:
La cardinalidad mínima (0 o 1) define si la participación de la entidad en la relación es opcional o total (obligatoria); el máximo, en cambio, establece el techo de asociaciones permitidas. (Elmasri & Navathe, 'Fundamentals of Database Systems', cap. de modelado E-R (restricciones de cardinalidad y participación))
28. Una entidad que no cuenta con suficientes atributos propios para formar su propia clave primaria, y que depende de otra entidad (llamada entidad propietaria) para poder identificarse, se denomina:
La entidad débil carece de clave primaria propia y se identifica combinando una clave parcial con la clave primaria de su entidad propietaria a través de una relación identificadora. (Elmasri & Navathe, 'Fundamentals of Database Systems', cap. de modelado E-R (entidades débiles))
29. En una base de datos relacional, la tabla Pedido incluye la columna id_cliente, definida como clave foránea que referencia la clave primaria de la tabla Cliente. Un empleado intenta registrar un pedido con id_cliente = 950, valor que no existe en la tabla Cliente. Según la restricción de integridad referencial, ¿qué debe ocurrir?
La integridad referencial exige que todo valor no nulo de una clave foránea coincida con un valor existente de la clave primaria referenciada; si no existe, la operación debe rechazarse. (Elmasri & Navathe, 'Fundamentals of Database Systems', restricciones de integridad relacional (integridad referencial))
30. Al traducir al modelo relacional una relación de cardinalidad muchos a muchos (N:M) entre las entidades Alumno y Curso, la técnica correcta consiste en:
Una relación N:M requiere una tabla asociativa (de unión) con las claves foráneas de ambas entidades como clave primaria compuesta; colocar la clave foránea en una sola de las tablas solo es válido para relaciones 1:N. (Elmasri & Navathe, 'Fundamentals of Database Systems', cap. de mapeo de diagramas E-R al modelo relacional)
31. ¿Cuál de las siguientes NO es una restricción de integridad definida sobre el esquema en el modelo relacional clásico?
Las restricciones clásicas del modelo relacional son de dominio, de entidad y referencial; la atomicidad es una propiedad de las transacciones (ACID), no una restricción de esquema de datos. (Elmasri & Navathe, cap. de restricciones del modelo relacional; Härder & Reuter, 'Principles of Transaction-Oriented Database Recovery', 1983)
32. El acrónimo ACID, que resume las propiedades que garantizan la fiabilidad de una transacción en una base de datos, corresponde a:
ACID corresponde a Atomicidad, Consistencia, Aislamiento (Isolation) y Durabilidad, tal como lo formalizaron Härder y Reuter en 1983. (Härder, T. & Reuter, A., 'Principles of Transaction-Oriented Database Recovery', ACM Computing Surveys, Vol. 15, No. 4, 1983)
33. La propiedad ACID que garantiza que una transacción se ejecute como una unidad indivisible, es decir, que se apliquen todas sus operaciones o ninguna, se denomina:
La atomicidad implementa el principio de 'todo o nada'; si la transacción no puede completarse, el sistema ejecuta un ROLLBACK que revierte cualquier cambio parcial. (Elmasri & Navathe, 'Fundamentals of Database Systems', cap. de propiedades ACID)
34. Justo después de que una transacción bancaria confirma (COMMIT) una transferencia entre cuentas, el servidor sufre un corte de energía inesperado. Al reiniciar, el sistema recupera el registro de bitácora (log) y verifica que los cambios de la transferencia siguen reflejados en la base de datos. ¿Qué propiedad ACID se está garantizando con este comportamiento?
La durabilidad asegura que los cambios de una transacción ya confirmada persistan de forma permanente aun ante fallas del sistema, típicamente mediante el registro de bitácora. (Silberschatz, Korth & Sudarshan, 'Database System Concepts', cap. de transacciones)
35. La transacción T1 actualiza el saldo de una cuenta pero todavía no confirma el cambio. Mientras T1 sigue activa, la transacción T2 lee ese saldo modificado y, con base en él, autoriza un retiro. Momentos después, T1 realiza ROLLBACK, por lo que el valor que leyó T2 nunca llegó a existir de forma permanente en la base de datos. Este fenómeno de concurrencia se conoce como:
La lectura sucia (dirty read) ocurre cuando una transacción lee datos modificados por otra que aún no ha confirmado el cambio y que después puede revertirse mediante ROLLBACK. (ISO/IEC 9075:1992 (SQL-92), subcláusula de niveles de aislamiento (isolation levels))