En el primer apartado de este tema se muestra la estructura del diccionario de datos de un sistema de gestión de bases de datos relacionales y cómo éste almacena las construcciones del modelo relacional, incluyendo información sobre restricciones, índices y vistas. A modo de ejemplo, se ven algunos aspectos del diccionario de datos de Oracle. A continuación, se presenta cómo los distintos módulos del sistema de gestión de bases de datos acceden a la información del diccionario de datos y qué otros tipos de información se almacenan en éste.
En el segundo apartado se trata el procesamiento de consultas. Para ello, se muestra cómo las consultas SQL se traducen al álgebra relacional y diversos modos en que se pueden ejecutar las operaciones del álgebra relacional. Algunas operaciones, como la restricción y la concatenación, pueden ejecutarse de muchas formas diferentes. A continuación, se describen técnicas heurísticas de optimización de consultas que utilizan reglas heurísticas y técnicas algebraicas para mejorar la eficiencia de la ejecución de consultas. Se muestra cómo se puede optimizar heurísticamente un árbol de consulta que representa una expresión del álgebra relacional, reorganizando los nodos del árbol y tranformándolo en otro árbol equivalente que se ejecuta más eficientemente. También se muestran los planes de ejecución de las consultas SQL. Se presentan los métodos de optimización de consultas basados en costes y se muestra cómo se desarrollan funciones de costes para algunos algoritmos de acceso a la base de datos y cómo se usan estas funciones para estimar los costes de las distintas estrategias de ejecución. A modo de ejemplo, se ofrece un resumen del optimizador de consultas de Oracle.
En el tercer apartado se presenta el concepto de transacción y las operaciones principales del procesamiento de transacciones. Se comparan los sistemas monousuario con los sistemas multiusuario y se presentan ejemplos de cómo una ejecución incontrolada de transacciones concurrentes en un sistema multiusuario puede provocar datos erróneos en la base de datos. También se presentan varios tipos de fallos que se pueden dar durante la ejecución de las transacciones. A continuación, se muestran los estados típicos que atraviesa una transacción durante su ejecución, y se discuten algunos de los conceptos que se utilizan en los métodos de recuperación y de control de concurrencia. El sistema mantiene un historial de los accesos realizados a la base de datos y utiliza esta información para recuperarse ante los posibles fallos. Una transacción puede terminar con éxito, alcanzando su punto de commit, o fallar, siendo entonces deshecha (rollback). Cuando una transacción termina con éxito, los cambios que ha realizado se hacen permanentes sobre la base de datos. Se presenta también un resumen de las propiedades que deberían tener las transacciones: atomicidad, preservación de la consistencia, aislamiento y perdurabilidad. Después se definen los planes de transacciones como secuencias de ejecución de las operaciones de varias transacciones que pueden intercalarse. Se clasifican los planes según su recuperabilidad. Los planes recuperables garantizan que, una vez se ha hecho el commit en una transacción, nunca hace falta deshacerla. Hay otro tipo de planes que añaden la condición de que se garantice que ninguna transacción abortada provoque el tener que abortar en cascada otras transacciones. Los planes estrictos proporcionan una condición más fuerte que permite que la recuperación sea más sencilla, de modo que tan solo hay que restablecer los antiguos valores de los datos que han sido modificados por una transacción abortada. Se define la equivalencia de planes y se ve que un plan serializable es un plan equivalente a algún plan serie. Un plan serializable es un plan correcto. Se presenta después un algoritmo para comprobar la serializabilidad de un plan. Aunque la serializabilidad no se comprueba en los sistemas reales, este algoritmo es útil para definir y verificar los protocolos de control de la concurrencia.
En el cuarto apartado del tema se presentan técnicas de recuperación ante fallos en las transacciones. En primer lugar, se da una idea de cómo es el proceso de recuperación y algunos conceptos que tienen que ver con ella. Se presentan dos tipos de algoritmos de recuperación distintos: los algoritmos de actualización diferida y los algoritmos de actualización inmediata. En los algoritmos de actualización diferida, la base de datos en disco sólo se actualiza cuando la transacción finaliza (commit). Esto simplifica la recuperación ya que nunca hay que deshacer transacciones, pero tiene el inconveniente de que se necesitan grandes buffers para mantener en memoria todas las actualizaciones que realiza la transacción. Por otra parte, en los algorimos de actualización inmediata, la base de datos se actualiza inmediatamente cuando una transacción hace una actualización, sin que haga falta que la transacción finalice. Cuando una transacción falla, hay que deshacer todas sus actualizaciones. En este apartado también se presenta el protocolo de dos fases que se utiliza en los sistemas de múltiples bases de datos y se comenta cómo se realiza la recuperación ante fallos catastróficos.
En el último apartado de este tema se presentan varias técnicas para controlar la seguridad en los sistemas de bases de datos. Estas técnicas controlan el acceso al sistema de la base de datos como un todo y controlan los permisos para acceder a porciones concretas de la base de datos. El control de acceso a la base de datos como un todo se realiza asignando cuentas con claves a los usuarios. Para controlar el acceso a porciones de la base de datos el sistema proporciona un mecanismo para conceder y revocar permisos. Se presentan los mecanismos que se utilizan para controlar la seguridad multinivel. Estos mecanismos necesitan que los datos y los usuarios se clasifiquen en los distintos niveles de seguridad y hacen que se respeten las reglas que prohiben el flujo de información desde niveles altos de seguridad hacia niveles bajos. Por último, se presenta brevemente el problema de controlar el acceso a las bases de datos estadísticas sobre la población para proteger la privacidad de la información individual, a la vez que se permite el acceso estadístico.