Simulador EGEL Ingeniería de Software

🗄️ Gestión de datos

Gestión de datos: modelo relacional, SQL, normalización y ACID

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.

Practica el banco completo y haz simulacros gratis

Preguntas de muestra (35)

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?

  1. Edgar F. Codd
  2. Charles Bachman
  3. Peter Chen
  4. Donald Chamberlin

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?

  1. Atomicidad, Concurrencia, Integridad, Disponibilidad
  2. Atomicidad, Consistencia, Aislamiento, Durabilidad
  3. Agregación, Consistencia, Independencia, Durabilidad
  4. Atomicidad, Consistencia, Integridad, Disponibilidad

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?

  1. Consistencia
  2. Aislamiento
  3. Atomicidad
  4. Durabilidad

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?

  1. Consistencia
  2. Aislamiento
  3. Atomicidad
  4. Durabilidad

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?

  1. READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE
  2. READ COMMITTED, READ UNCOMMITTED, SERIALIZABLE, REPEATABLE READ
  3. SERIALIZABLE, REPEATABLE READ, READ COMMITTED, READ UNCOMMITTED
  4. READ UNCOMMITTED, REPEATABLE READ, READ COMMITTED, SERIALIZABLE

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?

  1. Lectura sucia
  2. Lectura fantasma
  3. Lectura no repetible
  4. Interbloqueo

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ó?

  1. Lectura fantasma
  2. Lectura no repetible
  3. Lectura sucia
  4. Actualización perdida

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?

  1. Que todo atributo no primo dependa completamente de la clave candidata
  2. Que no existan dependencias transitivas entre atributos no primos
  3. Que todo determinante de una dependencia funcional no trivial sea una superclave
  4. Que todos los atributos contengan valores atómicos y no existan grupos repetitivos

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?

  1. Segunda forma normal
  2. Primera forma normal
  3. Tercera forma normal
  4. Forma normal de Boyce-Codd

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?

  1. Primera forma normal
  2. Tercera forma normal
  3. Segunda forma normal
  4. Forma normal de Boyce-Codd

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)?

  1. La BCNF permite dependencias transitivas que la 3FN prohíbe de forma explícita
  2. La BCNF solo se aplica a relaciones con clave primaria simple, no a claves compuestas
  3. La BCNF exige que todo determinante no trivial sea superclave, requisito más estricto que la 3FN
  4. La BCNF elimina los valores NULL en atributos no clave, algo que la 3FN sí permite

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?

  1. Toda clave foránea debe coincidir con un valor existente en la tabla referenciada
  2. Toda relación debe tener al menos una clave candidata alternativa a la primaria
  3. Ningún atributo puede repetirse en dos tuplas distintas de la misma relación
  4. Ningún atributo que forme parte de la clave primaria puede tomar el valor NULL

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?

  1. El motor de base de datos debe rechazar la inserción y devolver un error de integridad referencial
  2. El motor de base de datos debe insertar el registro y crear automáticamente el cliente faltante
  3. El motor de base de datos debe insertar el registro con IdCliente en NULL
  4. El motor de base de datos debe insertar el registro sin verificar la clave foránea

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?

  1. SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY
  2. FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY
  3. FROM, SELECT, WHERE, GROUP BY, HAVING, ORDER BY
  4. WHERE, FROM, GROUP BY, HAVING, SELECT, ORDER BY

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?

  1. 4
  2. 3
  3. 2
  4. 1

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?

  1. 7
  2. 3
  3. 17
  4. 10

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?

  1. 7
  2. 10
  3. 17
  4. 3

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)?

  1. INSERT INTO clientes VALUES (1, 'Ana')
  2. CREATE TABLE clientes (id INT, nombre VARCHAR)
  3. UPDATE clientes SET nombre = 'Ana'
  4. DELETE FROM clientes WHERE id = 1

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?

  1. Agrupar por departamento y filtrar con HAVING sobre el promedio de cada grupo
  2. Ordenar los salarios de mayor a menor y tomar solo el primer registro
  3. Comparar cada salario, en el WHERE, contra una subconsulta con AVG(salario)
  4. Aplicar DISTINCT sobre la columna de salario para eliminar duplicados

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?

  1. ISO
  2. IEEE
  3. W3C
  4. ANSI

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?

  1. Base de datos clave-valor
  2. Base de datos documental
  3. Base de datos de grafos
  4. Base de datos columnar

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?

  1. Base de datos columnar
  2. Base de datos de grafos
  3. Base de datos documental
  4. Base de datos clave-valor

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?

  1. Base de datos documental
  2. Base de datos de grafos
  3. Base de datos columnar
  4. Base de datos clave-valor

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:

  1. Entidad
  2. Atributo
  3. Relación
  4. Dominio

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:

  1. Un atributo derivado del esquema
  2. Una relación entre dos entidades
  3. Una entidad débil sin clave propia
  4. Una clave primaria compuesta

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?

  1. Muchos a uno (N:1)
  2. Muchos a muchos (N:M)
  3. Uno a muchos (1:N)
  4. Uno a uno (1:1)

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:

  1. El número máximo de asociaciones permitidas para cada ocurrencia de la entidad
  2. El tipo de dato válido para el atributo que forma la clave de la entidad
  3. El número de atributos obligatorios que debe registrar la entidad
  4. El número mínimo de asociaciones en que debe participar cada ocurrencia de la entidad

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:

  1. Entidad débil
  2. Entidad asociativa
  3. Entidad derivada
  4. Entidad especializada

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?

  1. El sistema debe insertar el pedido y crear automáticamente el cliente 950
  2. El sistema debe rechazar la inserción porque viola la integridad referencial
  3. El sistema debe insertar el pedido y dejar id_cliente en NULL
  4. El sistema debe insertar el pedido y registrar una advertencia sin bloquear la operación

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:

  1. Agregar la clave primaria de Curso como clave foránea en la tabla Alumno
  2. Agregar la clave primaria de Alumno como clave foránea en la tabla Curso
  3. Crear una tabla intermedia cuya clave primaria combine las claves foráneas de ambas entidades
  4. Fusionar ambas entidades en una sola tabla con atributos combinados

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?

  1. Integridad de entidad
  2. Integridad referencial
  3. Restricción de dominio
  4. Atomicidad de las transacciones

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:

  1. Atomicidad, Consistencia, Aislamiento, Durabilidad
  2. Atomicidad, Concurrencia, Integridad, Disponibilidad
  3. Agregación, Consistencia, Independencia, Disponibilidad
  4. Atomicidad, Consistencia, Integridad, Distribución

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:

  1. Consistencia
  2. Atomicidad
  3. Aislamiento
  4. Durabilidad

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?

  1. Aislamiento
  2. Atomicidad
  3. Durabilidad
  4. Consistencia

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:

  1. Lectura no repetible entre consultas
  2. Lectura fantasma en un conjunto de filas
  3. Interbloqueo entre transacciones concurrentes
  4. Lectura sucia de un valor transitorio

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))

Comienza gratis