Preguntas examen

De FdIwiki ABD
Saltar a: navegación, buscar

1. ¿Cuales son las diferencias entre SERIALIZABLE y READ COMMITED?

   - La diferencia entre los dos niveles de aislamiento es que SERIALIZABLE es mas restrictivo y después del
     interbloqueo los cambios no son efectivos. Sin embargo, en READ COMMITED si se producen las últimas
     actualizaciones que se hayan realizado en ambas sesiones.

2. Diferencias entre SET AUTOCOMMIT OFF y SET AUTOCOMMIT ON.

   - Son sentencias que sirven para fijar el actualizado automático de las tablas tras ejecutar una instrucción. El SET  
     AUTOCOMMIT OFF hace que las tablas no se actualicen cuando se ejecuta una instrucción mientras que el SET AUTOCOMMIT ON
     las actualiza.

3. ¿Qué funciones realizan COMMIT y ROLLBACK?

   - Con COMMIT confirmamos todos los cambios que hayamos realizado en la base de datos.
   - Con ROLLBACK deshacemos todos los cambios realizados volviendo al inicio de la transacción o hasta 
     un punto de retorno dentro de la misma transacción.

4. ¿Qué es un SAVEPOINT?

   - Un SAVEPOINT se trata de un punto de salvaguarda dentro de una transacción al que podemos volver 
     en cualquier momento a través de ROLLBACK.

5. ¿Cuando comienza una nueva transacción?

   - Una transacción comienza en la siguiente instrucción después de un COMMIT y un ROLLBACK.

6. ¿Cuales son las propiedades que deben cumplir las transacciones para evitar la inconsistencia de datos?

   - Atomicidad: O se ejecutan todas las operaciones de una transacción o ninguna.
   - Consistencia: El programador debe garantizarla, por ejemplo con el uso de check, triggers, primary key, foreign key,…
   - Aislamiento entre transacciones: Una transacción en proceso no permite acceder a sus actualizaciones antes de que sea
     confirmada. El programador es el responsable de comprobarlo.
   - Durabilidad: Comprobar que ningún error posterior impida la correcta actualización de una transacción confirmada 
     previamente.

7. ¿Qué tiene que cumplir una tabla para que estar en 1FN?

   - Sus atributos solo pueden ser atómicos, para evitar atributos multivalorados, compuestos y sus combinaciones.

8. ¿Qué tiene que cumplir una tabla para que estar en 2FN?

   - Estar en 1FN y que los atributos que no formen parte de la CP dependan de forma completa de la CP. Depender de forma completa
     significa que si la CP está formada por dos atributos, los atributos que no formen parte de la CP dependen de ambos. Si sólo 
     dependiera de uno de ellos, se trataría de dependencia parcial.

9. ¿Qué tiene que cumplir una tabla para que estar en 3FN?

   - Estar en 1FN, 2FN y que no exista ninguna dependencia funcional transitiva entre los atributos que no son CP, es decir, que
     no exista ningún atributo que dependa funcionalmente de atributos que no formen parte de la CP.

10. ¿De qué manera se puede bloquear una sola fila de una tabla?

   - Con una operación select cuya última línea sea FOR UPDATE consigues que la sesión actual bloquee la fila.

11. ¿Cómo provocarías un deadlock?

   - Comienzas indicando que el nivel de aislamiento de la transacción es read committed o serializable en dos sesiones 
     diferentes. Modificas una fila diferente de una tabla en cada sesión. Intentas modificar de forma respectiva la fila de 
     la otra sesión. Dado que oracle está esperando a que se realice un commit o un rollback en sendas sesiones, se produce un deadlock.