Manual de Apoyo Al Profesor

221

Transcript of Manual de Apoyo Al Profesor

Page 1: Manual de Apoyo Al Profesor
Page 2: Manual de Apoyo Al Profesor

CONTENIDOS

PREFACIO ____________________________________________________ 4

INTRODUCCIÓN _______________________________________________ 5

MODELO ENTIDAD-RELACIÓN ____________________________________ 9

MODELO RELACIONAL _________________________________________ 28

SQL _______________________________________________________ 38

OTROS LENGUAJES RELACIONALES_______________________________ 51

INTEGRIDAD Y SEGURIDAD _____________________________________ 64

DISEÑO DE BASES DE DATOS RELACIONALES ______________________ 71

BASES DE DATOS ORIENTADAS A OBJETOS ________________________ 84

BASES DE DATOS RELACIONALES ORIENTADAS A OBJETOS ___________ 93

XML ______________________________________________________ 102

ALMACENAMIENTO Y ESTRUCTURA DE ARCHIVOS__________________ 112

INDEXACION Y ASOCIACION ___________________________________ 122

PROCESAMIENTO DE CONSULTAS_______________________________ 134

OPTIMIZACIÓN DE CONSULTAS_________________________________ 142

TRANSACCIONES ____________________________________________ 151

CONTROL DE CONCURRENCIA__________________________________ 157

SISTEMAS DE RECUPERACIÓN__________________________________ 168

ARQUITECTURAS DE SISTEMAS DE BASES DE DATOS _______________ 175

BASES DE DATOS DISTRIBUÍDAS _______________________________ 180

BASES DE DATOS PARALELAS __________________________________ 189

Page 3: Manual de Apoyo Al Profesor

DESARROLLO DE APLICACIONES Y ADMINISTRACIÓN_______________ 195

CONSULTAS AVANZADAS Y RECUPERACIÓN DE LA INFORMACIÓN _____ 200

TIPOS DE DATOS AVANZADOS Y NUEVAS APLICACIONES ____________ 208

PROCESAMIENTO AVANZADO DE TRANSACCIONES _________________ 215

Page 4: Manual de Apoyo Al Profesor

PREFACIO

Este volumen es un manual del profesor para la cuarta edición de Fundamentos de Bases de Datos porAbraham Silberschatz, Henry F. Korth y S. Sudarshan. Contiene las respuestas a los ejercicios del final decada capítulo del libro. Antes de aportar las respuestas a los ejercicios de cada capítulo, se incluyen unoscomentarios sobre cada uno. La naturaleza de estos cometarios es variable. Incluyen explicaciones sobre lainclusión u omisión de ciertas materias y se hace notar la manera en que se enseña el capítulo en nuestrospropios cursos. Los comentarios también incluyen sugerencias sobre las materias a omitir, si el tiempo esescaso, consejos prácticos sobre el software y el material que se puede emplear para los ejercicios deprogramación.

El inicio de esta edición se han dispuesto en la Web las soluciones de algunos problemas. Estosproblemas se han marcado con un “*” en el manual del profesor.

La página web del libro, http://www.bell-labs.com/topic/books/db-book, contiene una variedadde información útil, incluyendo la actualización de erratas, apéndices en línea que describen modelos de datosen red, modelos de datos jerárquicos, diseño avanzado de bases de datos relacionales y el modelo del plan deestudios del curso. Periódicamente se actualizará esta página con material suplementario que pueda ser útil aprofesores y estudiantes.

Se suministra una lista de correo para que los usuarios se puedan comunicar entre sí y con nosotros.Si desea formar parte de la lista envíe un email a [email protected] indicando su nombre,afiliación, puesto y dirección de correo electrónico.

Le agradeceríamos que nos hiciera llegar los errores u omisiones del libro, así como del manual delprofesor. Aunque hemos intentado escribir un manual del profesor que ayude a los usuarios de nuestro librotanto como sea posible, siempre se puede mejorar. Se podrían incluir respuestas mejoradas, preguntasadicionales, ejemplos de preguntas de test, proyectos de programación, sugerencias sobre ordenes alternativosde presentación de las materias, referencias adicionales y otros.

Si desea sugerir cualquier mejora al libro o al manual del profesor, estaremos encantados deescucharle. El correo electrónico por Internet debe dirigirse a [email protected]. El correofísico debe enviarse a Avi Silberschatz, Laboratorios Bell, Room 2T-310, 600 Mountain Avenue,Murray Hill,NJ 07974, USA. Todas las aportaciones que tengan lugar serán, naturalmente, convenientemente reconocidasa sus autores.Nilesh Dalvi, Sumit Sanghai, Gaurav Bhalotia y Arvind Hulgeri hicieron la mayor parte del trabajo depreparación para la cuarta edición del manual del profesor. Este manual se ha elaborado a partir de losmanuales de las ediciones anteriores. El manual de la tercera edición fue preparado por K. V. Raghavan con laayuda de Prateek R. Kapadia, Sara Strandtman ayudó con el manual del profesor para las ediciones segunda ytercera, mientras que Greg Speegle y Dawn Bezviner ayudaron a preparar el manual del profesor para laprimera edición.

A.S.H.F.K.S.S.

Manual de apoyo al profesor, Versión 4.0.0

Page 5: Manual de Apoyo Al Profesor

CAPITULO 1

INTRODUCCIÓN

El Capítulo 1 aporta una visión general sobre la naturaleza y el propósito de los sistemas de bases de datos.El concepto más importante de este capítulo es que los sistemas de bases de datos permiten tratar los

datos con un alto nivel de abstracción. Así, los sistemas de bases de datos se diferencian significativamente delos sistemas de ficheros y de los entornos de programación de propósito general, con los cuales ya estánfamiliarizados los estudiantes. Otro aspecto importante del capítulo es animar al empleo de los sistemas debases de datos, en lugar de los programas de aplicaciones construidos sobre sistemas de ficheros. Así, elcapítulo motiva lo que el estudiante estudiará el resto del curso.

La idea de la abstracción en los sistemas de bases de datos merece ser enfatizada en todo el proceso,no sólo en la discusión del Apartado 1.3. La visión general de la estructura de las bases de datos que arrancaen el Apartado 1.4 es, forzosamente, más bien breve y pretende solamente dar al estudiante una ideaaproximada de algunos conceptos. Puede que los estudiantes no sean capaces, inicialmente, de apreciarcompletamente los conceptos que aquí se describen, pero deberían serlo al final del curso.

Las especificaciones de los modelos E-R, relacional y orientados a objeto, se cubren en capítulosposteriores. Estos modelos se pueden emplear en el Capítulo 1 para reforzar el concepto de abstracción,mientras los detalles sintácticos se postergan para más tarde en el curso.

Si los estudiantes ya han realizado un curso sobre sistemas operativos, vale la pena mostrar como serelacionan las bases de datos -DBMS- y los sistemas operativos -OS-. También es útil diferenciar entre laconcurrencia, tal y como es enseñada en los cursos sobre sistemas operativos (con una orientación haciaficheros, procesos y recursos físicos) y el control de concurrencia en las bases de datos (con una orientaciónhacia una granularidad más sutil que el nivel de ficheros, las transacciones de recuperación y los recursosaccedidos asociativamente, más que físicamente). Si los estudiantes están familiarizados con un sistemaoperativo en particular, el enfoque de esos S.O. a un acceso de ficheros concurrentes pude emplearse comoejemplo.

Page 6: Manual de Apoyo Al Profesor

Ejercicios

1.1 ¿Cuáles son las cuatro diferencias principales entre un sistema de procesamiento de archivos y unSGBD?

Respuesta: Algunas de las diferencias más importantes entre un sistema de gestión de bases de datos y unode procesamiento de archivos son:

• Ambos sistemas contienen una colección de datos y un conjunto de programas que acceden a ellos. Unsistema de gestión de bases de datos coordina los accesos físicos y lógicos a los datos, mientras que unsistema de procesamiento de ficheros coordina sólo el acceso físico.

• Un sistema de gestión de bases de datos reduce la cantidad de datos duplicados, asegurando que una secciónfísica de datos esté disponible para todos los programas autorizados a accederla, mientras que los datosescritos por un programa sobre un sistema de procesamiento de ficheros pueden no ser accesibles por otroprograma.

• Un sistema de gestión de bases de datos está diseñado para permitir acceso flexible a los datos (es decir,consultas), mientras que un sistema de procesamiento de ficheros está diseñado para permitir predeterminadosaccesos a los datos(es decir, programas compilados).

• Un sistema de gestión de bases de datos está diseñado para coordinar a múltiples usuarios accediendo a losmismos datos en el mismo momento. Un sistema de procesamiento de ficheros generalmente se diseña parapermitir que uno o más programas accedan a diferentes ficheros de datos al mismo tiempo. En un sistema deprocesamiento de ficheros, dos programas pueden acceder concurrentemente a un fichero sólo si ambos tienenacceso de sólo lectura sobre el fichero.

1.2 En este capítulo se han descrito las diferentes ventajas principales de un sistema gestor de bases dedatos. ¿Cuáles son dos de los inconvenientes?

Respuesta: A continuación se indican dos inconvenientes asociados con los sistemas de bases de datos.a. La instalación de un sistema de bases de datos requiere más conocimiento, dinero, habilidad ytiempo.b. La complejidad de una base de datos puede originar una disminución del rendimiento.

1.3 Explíquese la diferencia entre independencia física y lógica de los datos.

Respuesta:• La independencia física de los datos es la capacidad para modificar el esquema físico, sin necesidad derescribir los programas de las aplicaciones. Tales modificaciones incluyen cambiar el almacenamiento deregistros desbloqueados a bloqueados, o de ficheros de acceso secuencial a random.

• La independencia lógica de los datos es la capacidad para modificar el esquema conceptual, sin necesidad derescribir los programas de las aplicaciones. Una de estas modificaciones podría ser la adición de un campo aun registro; una vista de los programas de la aplicación oculta este cambio desde los programas.

Page 7: Manual de Apoyo Al Profesor

1.4 Lístense cinco responsabilidades de un sistema de gestión de bases de datos. Para cadaresponsabilidad, explíquense los problemas que ocurrirían si no se realizara esta función.

Respuesta: Un gestor de bases de datos de propósito general (DBM) tiene cinco responsabilidades:a. interaccionar con el gestor de ficheros.b. poner en práctica la integridadc. poner en práctica la seguridadd. copias de seguridad y recuperacióne. controlar las concurrencias.

Si estas responsabilidades no fueran asumidas por un determinado DBM (y los textos indican que enocasiones se omite alguna responsabilidad en el diseño, como es el caso del control de concurrencia en unDBM mono puesto para un microordenador) podrían ocurrir, respectivamente, los siguientes problemas:

a. Ningún DBM puede hacer nada sin esto; si no hay interacción con el gestor de ficheros no se puederecuperar nada que esté almacenado en los ficheros.

b. Pueden no cumplirse las restricciones de integridad, los saldos de las cuentas podían estar por debajodel mínimo permitido, los empleados podrían ganar demasiadas horas extraordinarias (por ejemplo, horas >80) o los pilotos de las compañías aéreas podrían volar más horas de las que permite la ley.

c. Usuarios no autorizados podrían acceder a la base de datos, o usuarios autorizados para acceder adeterminadas partes de la base de datos podrían ser capaces de acceder a otras, para las que carecen deautorización. Por ejemplo, un estudiante de escuela superior podría tener acceso a los códigos secretos de ladefensa nacional, o los empleados podrían averiguar lo que ganan sus jefes.

d. Los datos se podrían perder de forma permanente en vez de, al menos, estar disponibles en el estadode consistencia que existía antes del fallo.e. Se podrían violar la restricciones de integridad a pesar del cumplimiento de la propia integridad encada transacción. Por ejemplo, se podrían reflejar saldos bancarios incorrectos debido a retiradas y depósitossimultáneos, etcétera.

1.5 ¿Cuáles son las cinco funciones principales del administrador de una base de datos?

Respuesta: Las cinco funciones principales del administrador de una base de datos son:• Crear la definición del esquema• Definir la estructura de almacenamiento y los métodos de acceso• Modificar el esquema y/o la organización física cuando sea necesario• Conceder autorización para acceder a los datos• Definir las restricciones de integridad

1.6 Lístense siete lenguajes de programación que sean procedimentales y dos que no lo sean. ¿Qué grupoes más fácil de aprender y de usar? Justifíquese la respuesta.

Respuesta: Clasificación de lenguajes de programación:• Procedimentales: C, C++, Java, Basic, Fortran, Cobol, Pascal

• No procedimentales: Lisp y PrologNota: Lisp y Prolog soportan algunas construcciones procedimentales, pero el núcleo de ambos lenguajes esno procedimental.

En teoría los lenguajes no procedimentales son más fáciles de aprender porque permiten al programadorconcentrarse en lo que necesita ser hecho, en vez de en cómo hacerlo. En la práctica esto no siempre es cierto,especialmente si los lenguajes procedimentales se aprenden primero.

Page 8: Manual de Apoyo Al Profesor

1.7 Lístense los seis pasos principales que se deberían dar en la definición de una base de datos para unaempresa particular.

Respuesta: Los seis pasos principales en la definición de una base de datos para una determinada empresaparticular son:• Definir los requerimientos de alto nivel de la empresa (este paso genera un documento conocido como lasespecificaciones requeridas por el sistema.)

• Definir un modelo conteniendo todos los tipos apropiados de datos y las relaciones entre ellos.

• Definir las restricciones de integridad en los datos.

• Definir el nivel físico.

• Por cada problema conocido que haya de resolverse regularmente (por ejemplo, las tareas a realizar porusuarios Web o auxiliares) definir una interface de usuario para llevar a cabo la tarea y escribir los programasde aplicación necesarios para implantar la interface del usuario.

• Crear/inicializar la base de datos.

1.8 Considérese un array de enteros bidimensionales de tamaño n × m que se va a usar en su lenguaje deprogramación preferido. Usando el array como ejemplo, ilústrese la diferencia (a) entre los tres niveles deabstracción y (b) entre un esquema e instancias.

Respuesta: Sea tgrid un array de enteros bidimensionales de tamaño n × m.a. • El nivel físico serían simplemente m × n (probablemente consecutivas) localizaciones dealmacenamiento de cualquier tamaño especificado para la implantación (por ejemplo, 32 bits cada una).

• El nivel conceptual es un cuadrícula de cajas, cada una conteniendo posiblemente un entero, la cuáles n cajas de alto por m de ancho.

• Hay 2m x n vistas posibles. Por ejemplo, una vista podría ser el array entero o una fila particular delarray o todas las n filas, pero solamente columnas de 1 a i.

b. • Considérense las siguientes declaraciones Pascal:type tgrid = array[1..n, 1..m] of integer;var vgrid1, vgrid2 : tgrid

Entonces tgrid es un esquema, mientras que los valores de las variables vgrid1 y vgrid2 soninstancias.

• Para ilustrarlo aún más, considérese el esquema array[1..2, 1..2] of integer. Dos instancias de esteesquema son:

1 16 17 907 89 412 89

Page 9: Manual de Apoyo Al Profesor

CAPITULO 2

MODELO ENTIDAD-RELACIÓN

Este capítulo introduce el modelo entidad-relación en detalle. El capítulo abarca numerosas características delmodelo, varias de las cuales se pueden omitir dependiendo del alcance del curso que se ha planificado.Conjuntos de entidades débiles (Apartado 2.6), diseño de restricciones (Apartado 2.7.4) y agregación(Apartado 2.7.5), junto con los correspondientes sub apartados del Apartado 2.9 (Reducción de un EsquemaE-R a Tablas) se pueden omitir si se dispone de poco tiempo. Se recomienda tratar la especialización(Apartado 2.7.1), al menos con algún detalle, dado que es un concepto importante en las bases de datosorientadas a objeto (Capítulo 8).

El propio modelo E-R y los diagramas E-R se emplean a menudo en el texto. Es importante que losestudiantes se encuentren cómodos con ellos. El modelo E-R es un excelente contexto para introducir a losestudiantes en la complejidad del diseño de las bases de datos. Para una empresa dada hay, a menudo, unaextensa variedad de diseños E-R. Aunque algunas elecciones son arbitrarias, frecuentemente sucede que undiseño es intrínsecamente mejor que los restantes. Varios de los ejercicios ilustran este punto. La evaluaciónde las bondades de un diseño E-R requiere un conocimiento de la empresa a modelar y de las aplicaciones aejecutar. A menudo es posible dirigir a los estudiantes a un debate sobre los méritos relativos de diseñoscontrapuestos y así ilustrar, por ejemplo, como la comprensión de la aplicación es frecuentemente la partemás dura del diseño de la base de datos.

Un énfasis considerable se ha puesto en la construcción de tablas a partir de diagramas E-R.Esto sirve para desarrollar la intuición en la discusión del modelo relacional en los capítulos siguientes.También es útil para convertir los conceptos abstractos, de las entidades y sus relaciones, en los más concretosde las relaciones. Diversos textos sitúan esta materia junto al modelo de datos relacional, en lugar de hacerloel capítulo del modelo E-R. Nuestra intención, al situar esta materia aquí, es ayudar a los estudiantes aapreciar como se emplean, en la realidad los modelos de datos E-R, mientras se estudia el modelo E-R, en vezde hacerlo más tarde.

La materia sobre la conversión de diagramas E-R en tablas es bastante breve en algunos puntos dellibro, aportando las transparencias un mejor tratamiento de los detalles que el implícitamente dejado en ellibro.

Cambios a la tercera edición:

En la cuarta edición se han actualizado varios ejemplos, incluyendo relaciones ternarias (empleados,sucursales, trabajo en lugar de cliente, préstamo, sucursal) y agregaciones (administración en lugar deresponsable de préstamos), para hacerlos más realistas. También se han añadido más ejemplos, así en laespecialización se emplean persona, cliente y empleado como ejemplo principal, en lugar de cuenta, cuentascontrol y cuentas de ahorro, que también hace el ejemplo más realista. Se ha reemplazado D.N.I. por el másglobal (y realista) id-cliente e id-empleado.Se han añadido notaciones para hacer restricciones sin conexión y aclarar la participación total (solapamientoy participación parcial están por defecto). Se han introducido notaciones E-R alternativas, dado quenumerosas aplicaciones del mundo real las emplean.También se ha aportado una breve introducción a los diagramas de clase UML, que están empezando aemplearse cada vez más en lugar de los diagramas E-R, en herramientas tales como el diseñador de Oracle.Se ha abandonado el alcance de las dependencias de existencia, dado que las restricciones de participacióntotal aportan una restricción muy parecida. La distinción entre participación total y dependencias de existenciaes demasiado pequeña como para ser tenida en cuenta y sólo confunde a los estudiantes.Las cuestiones de diseño se discuten en mayor detalle.

Page 10: Manual de Apoyo Al Profesor

Figura 2.1 Diagrama E-R para una compañía de seguros de coches.

Ejercicios

2.1 Explíquense las diferencias entre los términos clave primaria, clave candidata y superclave.

Respuesta: Una superclave es un conjunto de uno o más atributos que, tomados colectivamente, permitenidentificar de forma única una entidad en el conjunto de entidades. Una superclave puede contener atributosajenos. Si K es una superclave, entonces también lo es cualquier superconjunto de K. Una superclave para laque ningún subconjunto propio es también superclave, se denomina clave candidata. Es posible que variosconjuntos diferentes de atributos puedan servir como claves candidatas. La clave primaria es una de las clavescandidatas que se elige, por el diseñador de la base de datos, como el elemento principal para identificar lasentidades dentro un conjunto de entidades.

2.2 Constrúyase un diagrama E-R para una compañía de seguros de coches cuyos clientes poseen uno omás coches. Cada coche tiene asociado un número, de cero a cualquier valor, que almacena el número deaccidentes.

Respuesta: Véase la Figura 2.1

2.3 Constrúyase un diagrama E-R para un hospital con un conjunto de pacientes y un conjunto demédicos. Asóciese con cada paciente un registro de las diferentes pruebas y exámenes realizados.

Respuesta: Véase la Figura 2.2

2.4 Una oficina de registro de una universidad mantiene datos acerca de las siguientes entidades: (a)cursos, incluyendo número, título, créditos, programa de estudios y requisitos previos; (b) ofertas de cursos,incluyendo número del curso, año, semestre, número de sección, profesor(es), horarios y aulas; (c)estudiantes, incluyendo id-estudiante, nombre y programa; y (d) profesores, incluyendo número deidentificación, nombre, departamento y título.Además, se deben modelar adecuadamente la matriculación de los estudiantes en los cursos y lascalificaciones otorgadas en cada uno.

Constrúyase un diagrama E-R para la oficina de registro. Documéntense todas las suposiciones quese hagan acerca de las restricciones de correspondencia.

Page 11: Manual de Apoyo Al Profesor

Respuesta: Véase la Figura 2.3.En la respuesta dada aquí, los principales conjuntos de entidades son estudiantes, cursos, ofertas-cursosy profesores. El conjunto de entidades ofertas-cursos es un conjunto de entidad débil dependiente de curso.Las suposiciones hechas son:a. una clase sólo se reúne en un lugar y en un momento preciso. Este diagrama E-R no puede modelaruna clase que se reúna en diferentes lugares y en diferentes momentos.

b. No hay garantía de que la base de datos no tenga dos clases reuniéndose en el mismo lugar y almismo tiempo.

Figura 2.2 Diagrama E-R para un hospital.

Figura 2.3 Diagrama E-R para una universidad.

Page 12: Manual de Apoyo Al Profesor

2.5 Considérese una base de datos cuyo objeto es registrar las notas que obtienen los estudiantes en losdistintos exámenes de los diferentes cursos ofertados.a. Constrúyase un diagrama E-R que modele los exámenes como entidades y haga uso de una relaciónternaria para la base de datos anterior.b. Constrúyase un diagrama E-R alternativo que emplee sólo una relación binaria entre estudiantes yofertas-cursos. Asegúrese de que sólo existe una relación entre un determinado estudiante y un par ofertas-cursos, y que aún se pueden representar las notas que obtiene un estudiante en los diferentes exámenes de uncurso ofertado.

Respuesta:a. Véase la Figura 2.4b. Véase la Figura 2.5

Figura 2.4 Diagrama E-R para la base de datos de notas.

2.6 Constrúyanse las tablas apropiadas para cada uno de los diagramas E-R de los ejercicios 2.2 al 2.4.

Respuesta:a. Tablas de seguros de coches:

persona (id-conductor, nombre, dirección)coche (matrícula, año, modelo)accidente (número-informe, fecha, lugar)participado (id-conductor, matrícula, número-informe, cantidad-daños)

b. Tablas de hospitales:pacientes (id-paciente, nombre, seguro, fecha-admisión, fecha-alta)doctores (id-doctor, nombre, especialidad)pruebas (id-prueba, nombre-prueba, fecha, hora, resultado)paciente-doctor (id-paciente, id-doctor)registro-pruebas (id-prueba, id-paciente) realizada-por (id-prueba, id-doctor)

Page 13: Manual de Apoyo Al Profesor

c. Tablas del registro de la universidad:estudiante (id-estudiante, nombre, programa)curso (número-curso, título, programa-estudios, créditos)ofertas-cursos (número-curso, número-sección, año, semestre, hora, aula)profesor (id-profesor, nombre, departamento, título)matrículas (id-estudiante, número-curso, número-sección, semestre, año, calificación)enseña (número-curso, número-sección, semestre, año, id-profesor)requerimientos (curso-principal, requisitos-previos)

Figura 2.5 Otro diagrama E-R para la base de datos de notas.

2.7 Diséñese un diagrama E-R para seguir la pista de las hazañas de su equipo de deportes favorito. Sedeberían almacenar los partidos jugados, los resultados de cada partido, los jugadores y las estadísticasindividuales de cada jugador, para cada partido. Las estadísticas de resumen se deberían modelar comoatributos derivados.

Respuesta: Véase la Figura 2.6

2.8 Extiéndase el diagrama E-R del ejercicio anterior, a fin de almacenar la misma información paratodos los equipos de una liga.

Respuesta: Véase la Figura 2.7. Nótese que un jugador sólo puede pertenecer a un equipo durante unatemporada.

2.9 Explíquense las diferencias entre conjunto de entidades débiles y fuertes.

Respuesta: Un conjunto de entidades fuertes tiene una clave primaria. Todas las tuplas del conjunto sedistinguen por medio de esa clave. Un conjunto de entidades débiles no tiene clave primaria, a menos que seincluyan los atributos del conjunto de entidades fuertes del que depende. En un conjunto de entidades débileslas tuplas están divididas según su relación con las de la entidad fuerte. Las tuplas de cada división se

Page 14: Manual de Apoyo Al Profesor

distinguen mediante un discriminador, que es un conjunto de atributos.

Figura 2.6 Diagrama E-R para las estadísticas del equipo favorito.

Figura 2.7 Diagrama E-R para las estadísticas de todos los equipos.

2.10 Se puede convertir cualquier conjunto de entidades débiles en un conjunto de entidades fuertes,simplemente añadiendo los atributos apropiados. ¿Por qué, entonces, se tienen conjuntos de entidadesdébiles?

Respuesta: Se tienen entidades débiles por varias razones:• Se desea evitar la duplicidad de datos y las consiguientes posibles inconsistencias causadas por las clavesduplicadas de la entidad fuerte.

• Las entidades débiles reflejan la estructura lógica de una entidad que es dependiente de otra.

• Las entidades débiles se pueden borrar automáticamente cuando se borra la entidad fuerte de la quedependen.

• Las entidades débiles se pueden almacenar físicamente con sus entidades fuertes.

Page 15: Manual de Apoyo Al Profesor

2.11 Defínase el concepto de agregación. Propónganse dos ejemplos para los que este concepto es útil.

Figura 2.8 Ejemplo 1 de diagrama E-R de agregación.

Figura 2.9 Ejemplo 2 de diagrama E-R de agregación.

Respuesta: La agregación es una abstracción a través de la cual las relaciones se tratan como entidades denivel más alto. Así, la relación entre las entidades A y B se trata como si fuera una entidad C. Algunosejemplos de esto son:a. Empleados que trabajan por proyectos. Un empleado trabajando para un proyecto en particularutiliza diversa maquinaria. Véase la Figura 2.8b. Los fabricantes tienen asociaciones con distribuidores para la distribución de productos. Cadaasociación tiene especificado el conjunto de productos que se van a distribuir. Véase la Figura 2.9

Page 16: Manual de Apoyo Al Profesor

Figura 2.10 Diagrama E-R para el Ejercicio 2.12.

2.12 Considérese el diagrama E-R de la Figura 2.29, que modela una librería en línea.a. Lístense los conjuntos de entidades y sus claves primarias.b. Supóngase que la librería añade casetes de música y discos compactos a su colección. El mismoelemento musical puede estar presente en formato de casete o de disco compacto con diferentes precios.Extiéndase el diagrama E-R para modelar este añadido, ignorando el efecto sobre las cestas de la compra.c. Extiéndase ahora el diagrama E-R usando generalización para modelar el caso en que una cesta de lacompra pueda contener cualquier combinación de libros, casetes de música o discos compactos.

Respuesta:

2.13 Considérese un diagrama E-R en el que el mismo conjunto de entidades aparece varias veces. ¿Porqué está permitida esta redundancia, una mala práctica que se debería evitar siempre que sea posible?

Respuesta: Al utilizar un conjunto de entidades muchas veces se están perdiendo relaciones en el modelo.Por ejemplo, en el diagrama E-R de la Figura 2.11: los estudiantes que toman clases son los mismos que sonatletas, pero este modelo no lo mostrará.

Page 17: Manual de Apoyo Al Profesor

Figura 2.11 Diagrama E-R con duplicidad de entidades.

2.14 Considérese la base de datos de una universidad para la planificación de las aulas para los exámenesfinales. Esta base de datos se modelaría mediante un único conjunto de entidades examen, con atributosnombre-curso, número-sección, número-aula y hora. Alternativamente, se podrían definir uno o másconjuntos de entidades, con conjuntos de relaciones para sustituir algunos de los atributos del conjunto deentidades examen, como

• curso con atributos nombre, departamento y número-c• sección con atributos número-s y matriculados, que es un conjunto de entidades débiles dependiente decurso• aula con atributos número-a, capacidad y edificio

a. Muéstrese en un diagrama E-R el uso de los tres conjuntos de entidades adicionales listados.b. Explíquense qué aplicaciones características influirían en la decisión de incluir o no, cada uno de losconjuntos de entidades adicionales.

Respuesta:a. Véase la Figura 2.12

b. Los conjuntos de entidades adicionales son útiles si se desea almacenar sus atributos como parte dela base de datos. Para el conjunto de entidades curso se han elegido tres atributos a incluir. Si se incluyerasolamente la clave primaria (número-c) y si los cursos tuvieran sólo una sección, entonces sería apropiadoreemplazar los conjuntos de entidades curso (y sección) por un atributo (número-c) de examen. La razón deque no sea aconsejable tener múltiples atributos de curso como atributos de examen es que, entonces, seríadifícil el mantenimiento de los datos en los cursos, en concreto si un curso tuviera varios exámenes o ninguno.Comentarios similares aplican al conjunto de entidades aula.

Page 18: Manual de Apoyo Al Profesor

Figura 2.12 Diagrama E-R para el calendario de exámenes.

2.15 Cuando se diseña un diagrama E-R para un desarrollo particular se tienen varias alternativas entre lasque hay que decidir.a. ¿Qué criterio se deberá considerar para hacer la elección apropiada?b. Diséñense tres diagramas E-R alternativos para representar la oficina de registro de la universidaddel Ejercicio 2.4. Lístense las ventajas de cada uno. Decídase por una de las alternativas.

Respuesta:a. Los criterios a emplear son diseños intuitivos, expresiones fieles del concepto de mundo real yeficiencia. Un modelo que esboza claramente los objetos y las relaciones de una forma intuitiva es mejor queuno que no lo hace, porque es más fácil de usar y de cambiar. Decidirse entre un atributo y conjunto deentidades para representar un objeto y decidirse entre un conjunto de entidades y un conjunto de relaciones,influye en la precisión con que se representan los conceptos del mundo real. Si no se hace la elección dediseño correcta, resultarán inconsistencias y /o pérdidas de información. Es preferible, por razones obvias, unmodelo que se pueda implantar de una forma eficiente.

b. Considérense tres alternativas diferentes para el problema del Ejercicio 2.4.

• Véase la Figura 2.13• Véase la Figura 2.14• Véase la Figura 2.15

Cada alternativa tiene ventajas, dependiendo del uso previsto de la base de datos. El esquema 2.13 se ha vistoanteriormente. El esquema 2.15 no requiere una entidad independiente para requisitos-previos. Sin embargo,será difícil almacenar todos los requisitos previos(siendo un atributo multivalorado). El esquema 2.14 trata losrequisitos previos, así como las aulas, como entidades independientes, siendo útil para la recogida de datossobre los requisitos previos y el uso las habitaciones. El esquema 2.13 está entre medias de los otros, trata losrequisitos previos como entidades independientes, pero las aulas no. Dado que una oficina de registroprobablemente ha de responder preguntas generales sobre el número de clases que tiene un estudiante, losrequisitos previos de un curso o acerca de los lugares concretos en que tienen lugar las clases, el esquema 2.14es seguramente la mejor elección.

Page 19: Manual de Apoyo Al Profesor

Figura 2.13 Diagrama E-R para una universidad (a).

Figura 2.14 Diagrama E-R para una universidad (b).

Page 20: Manual de Apoyo Al Profesor

Figura 2.15 Diagrama E-R para una universidad (c).

2.16 Un diagrama E-R se puede ver como un grafo. ¿Qué significan los siguientes términos de estructuraen un esquema de desarrollo?a. El grafo es inconexo.b. El grafo es acíclico.

Respuesta:a. Si un par de conjuntos de entidades están conectados por una línea en un diagrama E-R, losconjuntos de entidades están relacionados, aunque sea indirectamente. Un grafo desconectado implica que hayparejas de conjuntos de entidades que no están relacionadas entre sí. Si se divide el grafo en los componentesconectados se tiene, en efecto, una base de datos independiente.

b. Como se ha indicado en la respuesta del apartado anterior, una conexión en el grafo entre un par deconjuntos de entidades indica una relación (posiblemente indirecta) entre ellos. Si hay un ciclo en el grafo,entonces cada par de conjuntos de entidades del ciclo están relacionadas entre sí en, al menos, dos manerasdistintas. Si el diagrama E-R es acíclico hay sólo una conexión entre cada par de conjuntos de entidades y, porlo tanto, sólo una relación.

2.17 En el Apartado 2.4.3 se representó una relación ternaria (Figura 2.30a) usando relaciones binarias,como se muestra en la Figura 2.30b. Considérese la alternativa mostrada en la Figura 2.30c. Discútanse lasventajas relativas de estas dos representaciones alternativas entre una relación ternaria y relaciones binarias.

Respuesta: El modelo de la Figura 2.30c no será capaz de representar todas las relaciones ternarias.Considérese el conjunto de relaciones ABC siguiente.

Page 21: Manual de Apoyo Al Profesor

Figura 2.30 Diagrama E-R para el Ejercicio 2.17 (no se muestran los atributos).

A B C1 2 34 2 74 8 3

Si ABC está partido en tres conjuntos de relaciones AB, BC y AC, los tres implicarán que la relación (4, 2, 3)es una parte de ABC.

2.18 Considérese la representación de una relación ternaria usando relaciones binarias como se describióen el Apartado 2.4.3 (mostrado en la figura 2.30b).a. Muéstrese una instancia sencilla de E, A, B, C, RA, RBy RC que no pueda corresponderse con ningunainstancia de A, B, C y R.b. Modifíquese el diagrama E-R de la Figura 2.30b para introducir restricciones que garanticen quecualquier ejemplar de E, A, B, C, RA, RB y RC que satisfaga las restricciones, corresponda a una instancia deA, B, C y R.c. Modifíquese la traducción anterior para manejar restricciones de participación total sobre lasrelaciones ternarias.d. La representación anterior requiere que se cree un atributo clave primaria para E. Muéstrese la formaen que tratar E, como un conjunto de entidades débiles, de manera que no se requiera un atributo claveprimaria.

Respuesta:a. Sea E = {e1, e2}, A = {a1, a2}, B = {b1}, C = {c1}, RA = {(e1, a1), (e2, a2)}, RB = {(e1, b1)} y RC = {(e1,c1)}. Se ve que debido a la tupla (e2, a2), no existe ninguna instancia de R que se corresponda con E, RA, RB yRC.

Page 22: Manual de Apoyo Al Profesor

Figura 2.31 Diagrama E-R del Ejercicio 2.31b.

Figura 2.32 Diagrama E-R del Ejercicio 2.31d.

b. Véase la Figura 2.31. La idea es introducir restricciones de participación total entre E y las relacionesRA, RB y RC, para que cada tupla en E tenga una relación con A, B y C.

c. Supóngase que A participa totalmente en la relación R, entonces introdúzcase una restricción departicipación total entre A y RA.

d. Considérese a E como un conjunto de entidades débiles y a RA, RB y RC como su conjunto derelaciones identificadoras. Véase la Figura 2.32.

2.19 Un conjunto de entidades débiles siempre se puede convertir en un conjunto de entidades fuertes,añadiéndole a sus atributos los de la clave primaria de su conjunto de entidades identificadoras. Descríbasequé tipo de redundancia resultaría si se hiciese así.

Respuesta: La clave primaria de un conjunto de entidades débiles se puede deducir de su relación con elconjunto de entidades fuertes. Si se añaden los atributos de la clave primaria al conjunto de entidades débiles,estarán presentes tanto en el conjunto de entidades como en el de relaciones y serán lo mismo. Enconsecuencia, habrá redundancia.

2.20 Diséñese una jerarquía de especialización-generalización para las ventas de una compañía devehículos a motor. La compañía vende motocicletas, coches de pasajeros, mono volúmenes y autobuses.Justifíquese la colocación de los atributos en cada nivel de la jerarquía. Explíquese por qué se deberíancolocar en un nivel más alto o más bajo.

Respuesta: La Figura 2.33 presenta una posible jerarquía; podría haber muy distintas soluciones. La jerarquíade especialización-generalización para la compañía de vehículos a motor se muestra en la figura. Losatributos modelo, tasa-impuestos-ventas y volumen-ventas son necesarios para todos los tipos de vehículos.Los vehículos comerciales son objeto del impuesto de vehículos comerciales y cada tipo tiene una capacidad

Page 23: Manual de Apoyo Al Profesor

de transporte de pasajeros específica de él. Algunos tipos de vehículos no comerciales están sujetos alimpuesto de vehículos de lujo. Los coches solamente pueden se de varios tipos, tales como coches deportivos,sedán, familiares, etc., por tanto el atributo tipo.

Figura 2.33 Diagrama E-R de una compañía que vende vehículos a motor.

2.21 Explíquese la distinción entre las restricciones de diseño definidas por condición y las definidas porel usuario. ¿Cuáles de estas restricciones se pueden comprobar automáticamente? Explíquese la respuesta.

Respuesta: En una jerarquía de especialización-generalización debe ser posible decidir qué entidades sonmiembros del conjunto de entidades de nivel inferior. En una restricción de diseño definidas por condición, lapertenencia al conjunto de entidades de nivel inferior se evalúa partiendo de si una entidad cumple, o no, unacondición explícita o predicado. Los conjuntos de entidades de bajo nivel definidas por usuario no estánrestringidos por una condición de pertenencia; Más bien las entidades están asignadas, por el usuario de labase de datos, a un conjunto de entidades determinado.

Las restricciones de diseño definidas por condición sólo se pueden manejar automáticamente por elsistema. Siempre que se inserta cualquier tupla en la base de datos, se puede decidir automáticamente supertenencia a los varios conjuntos de entidades de nivel inferior, mediante la evaluación de loscorrespondientes predicados de pertenencia. Igualmente, cuando se actualiza una tupla, se puede volver aevaluar automáticamente su pertenencia a los varios conjuntos de entidades.

2.22 Explíquese la distinción entre las restricciones disjuntas y solapadas.

Respuesta: En una restricción de diseño disjunta, una entidad no puede pertenecer a más de un conjunto deentidades de nivel inferior. En generalizaciones solapadas la misma entidad puede pertenecer a más de unconjunto de entidades de nivel inferior. Así, en el ejemplo del libro sobre los grupos de trabajo de empleados,un jefe puede participar en más de un grupo de trabajo.

Page 24: Manual de Apoyo Al Profesor

Figura 2.34 Diagrama E-R para el Ejercicio 2.24 (no se muestran los atributos).

Figura 2.35 UML equivalente de la Figura 2.9c

2.23 Explíquese la distinción entre las restricciones totales y parciales.

Respuesta: En una restricción de diseño total, cada entidad de nivel superior deber pertenecer a un conjuntode entidades de nivel inferior. Lo mismo no tiene por qué ser cierto en una restricción de diseño parcial. Porejemplo, algunos empleados pueden no pertenecer a ningún grupo de trabajo.

2.24 En la Figura 2.31 se muestra una estructura reticular de generalización y especialización. Para losconjuntos de entidades A, B y C explíquese cómo se heredan los atributos desde los conjuntos de entidades denivel más alto X e Y. Discútase cómo manejar el caso en que un atributo de X tiene el mismo nombre que unatributo de Y.

Respuesta: A hereda todos los atributos de X y, además, puede definir los suyos propios. Análogamente Chereda, junto con sus propios atributos, todos los de Y. B hereda los atributos de X e Y. Si algunos de losatributos nombre pertenecen a X e Y, puede referirse a B mediante el nombre cualificado X.nombre oY.nombre.

2.25 Dibújense equivalentes UML de los diagramas E-R de las Figuras 2.9c, 2.10, 2.12, 2.13 y 2.17.

Respuesta: Véanse las Figuras 2.35 a 2.39

Page 25: Manual de Apoyo Al Profesor

2.26 Considérense dos bancos que deciden fusionarse. Asúmase que ambos bancos usan exactamente elmismo esquema de bases de datos E-R - el de la Figura 2.22. (Esta suposición es, naturalmente, muy irreal; seconsidera un caso más realista en el Apartado 19.8). Si el banco fusionado tiene sólo una base de datos, hayvarios problemas potenciales:

• La posibilidad de que los dos bancos originales tengan sucursales con el mismo nombre• La posibilidad de que algunos clientes lo sean de ambos bancos originales• La posibilidad de que algunos números de préstamo o de cuenta fueran usados en ambos bancos originales(para diferentes préstamos o cuentas, por supuesto).

Por cada uno de estos problemas potenciales descríbase por qué existen de hecho dificultades potenciales.Propóngase una solución a este problema. En la solución, explíquese cualquier cambio que se tenga que hacery descríbase cómo afectará al esquema y a los datos.

Figura 2.36 UML equivalente de la Figura 2.10

Figura 2.37 UML equivalente de la Figura 2.12

Page 26: Manual de Apoyo Al Profesor

Figura 2.38 UML equivalente de la Figura 2.13

Figura 2.39 UML equivalente de la Figura 2.17

Respuesta: En este ejemplo se asume que ambos bancos tienen los identificadores compartidos para losclientes, como es el caso del D.N.I. La solución general se presenta en el siguiente ejercicio. Cada uno de losproblemas mencionados tiene dificultades potenciales.

Page 27: Manual de Apoyo Al Profesor

a. nombre-sucursal es la clave primaria del conjunto de entidades sucursal. Por lo tanto, al fusionar losconjuntos de entidades de los dos bancos, si ambos tienen una sucursal con el mismo nombre uno de ellos seperderá.

b. los clientes participan en los conjuntos de relaciones banquero-consejero, prestatario e impositor.Al fusionar los conjuntos de entidades cliente de los dos bancos, las tuplas duplicadas del mismo cliente seborrarán. Por consiguiente se actualizarán las relaciones, de entre los tres conjuntos mencionados, que esténinvolucradas con las tuplas borradas. Nótese que si la representación tabular de un conjunto de relaciones seobtiene tomando una unión de las claves primarias de los conjuntos de entidades participantes, no seránecesario modificar ninguno de estos conjuntos de relaciones.

c. El problema causado por préstamos o cuentas con el mismo número en ambos bancos, es similar alcausado por las sucursales de los dos bancos con igual nombre-sucursal.

Para resolver los problemas originados por la fusión no es necesario modificar el esquema. Mezclar losconjuntos de entidades cliente eliminando tuplas duplicadas con el mismo campo D.N.I. Antes de fusionar losconjuntos de entidades sucursal, prefijar el nombre del banco antiguo al atributo nombre-sucursal en cadatupla. Los conjuntos de entidades empleado y pago se pueden fusionar directamente. No hay que realizarninguna eliminación de duplicados. Antes de fusionar los conjuntos de entidades préstamos y cuentas,siempre que haya un número común en ambos bancos, el número antiguo se reemplaza por un número nuevoúnico, en uno de los bancos.

Los conjuntos de relaciones siguientes se pueden fusionar. Cualquier relación, en un conjunto derelaciones que implica una tupla que se ha modificado previamente por la fusión, se modifica para conservarel mismo significado. Por ejemplo, sea 1611 un número de préstamo común en ambos bancos antes de lafusión y supongamos que se remplaza por un nuevo y único número 2611 en uno de los bancos, digamos en elbanco 2. Ahora todas las relaciones en prestatario, préstamo-sucursal y préstamo-pago del banco 2 que esténreferidas al número de préstamo 1611, habrán de modificarse para referirse a 2611. Entonces la fusión con losconjuntos de relaciones correspondientes del banco 1 podrán tener lugar.

2.27 Reconsidérese la situación descrita en el Ejercicio 2.26 bajo la suposición de que un banco está enEspaña y el otro en Portugal. Como antes, los bancos usan el esquema de la Figura 2.22, excepto que el bancoportugués usa un número de identificación asignado por el gobierno portugués, mientras que el banco españolusa el D.N.I. español para la identificación de clientes. ¿Qué problemas (además de los identificados en elEjercicio 2.24) ocurrirían en este caso multinacional? ¿Cómo se podrían resolver? Asegúrese de considerarambos esquemas y los valores de los datos actuales en la construcción de la respuesta.

Respuesta: Este es un caso en el que los esquemas de los dos bancos difieren, con lo que la fusión se hacemás difícil. El atributo de identificación para las personas en España es el D.N.I. y en Portugal el seguro-social. Por lo tanto, el esquema fusionado no puede emplear ninguno de estos. En su lugar se introduce unnuevo atributo id-persona que se usa por todos en el esquema fusionado. No es necesario ningún otro cambioen el esquema. Los valores del atributo id-persona se pueden obtener de diferentes maneras. Una forma seríaprefijar un código de país a los antiguos valores de D.N.I. o seguro-social (por ejemplo “E” y “P”,respectivamente), para obtener los correspondientes valores de id-persona. Otra manera sería asignar nuevosnúmeros, empezando en el 1 y hacia arriba, un número para cada valor de D.N.I. y seguro-social en lasantiguas bases de datos.

Una vez hecho esto, se puede proceder a la fusión de acuerdo a la respuesta de la pregunta anterior.Si un conjunto de relaciones en particular, por ejemplo prestatario, implica sólo a clientes españoles, se puedeexpresar en la base de datos fusionada especializando el conjunto de entidades cliente en e-cliente y p-cliente,y haciendo que sólo e-cliente participe en el prestatario fusionado. Análogamente, empleados se puedeespecializar si es necesario.

Page 28: Manual de Apoyo Al Profesor

CAPITULO 3

MODELO RELACIONAL

Este capítulo presenta el modelo relacional y tres lenguajes relacionales. El modelo relacional (Apartado 3.1)se emplea intensamente a través del texto, así como el álgebra relacional (Apartado 3.2). El capítulo tambiénabarca el cálculo relacional de tuplas (Apartado 3.6) y el cálculo relacional de dominios (Apartado 3.7) (elcual es la base del lenguaje QBE descrito en el Capítulo 5). Las clases que enfaticen sólo el SQL puedenomitir los lenguajes de cálculo relacional.

Nuestra notación para el cálculo relacional de tuplas hace que resulte fácil presentar el concepto deuna consulta segura. El concepto de seguridad para el cálculo relacional de dominios, aunque idéntico alcálculo de tuplas, es mucho más engorroso desde el punto de vista de la notación y requiere una presentacióncuidadosa. Esta consideración puede sugerir que se aporte un poco menos de énfasis en los cálculos dedominios, para las clases que no hayan planificado tratar QBE.

El Apartado 3.3 presenta operaciones de álgebra relacional extendidas, tales como reunionesexternas y agregaciones. La evolución de los lenguajes de consultas, tales como SQL, indica claramente laimportancia de estas operaciones extendidas. Algunas de estas operaciones, como las reuniones externas,pueden ser expresadas por medio del cálculo relacional de tuplas / dominios, mientras las extensiones sonrequeridas para otras operaciones, como es el caso de la agregación. Hemos decidido no presentar talesextensiones al cálculo relacional y, en cambio, restringir nuestra atención a las extensiones del álgebra.

Page 29: Manual de Apoyo Al Profesor

Figura 3.38. Diagrama E-R

Ejercicios

3.1 Diséñese una base de datos relacional para la oficina de registro de una universidad. La oficinaconserva datos sobre cada curso, incluyendo el profesor, el número de estudiantes matriculados y la hora y ellugar de las clases. Por cada pareja estudiante – curso, se guarda una calificación.

Respuesta: Los atributos subrayados indican la clave primaria.

estudiante (id-estudiante, nombre, programa)curso (número-curso, título, programa-estudios, créditos)ofertas-cursos (número-curso, número-sección, año, semestre, hora, aula)profesor (id-profesor, nombre, departamento, título)matrículas (id-estudiante, número-curso, número-sección, semestre, año, calificación)enseña (número-curso, número-sección, semestre, año, id-profesor)requerimientos (curso-principal, requisitos-previos)

3.2 Descríbanse las diferencias de significado entre los términos relación y esquema de la relación.Ilústrese la respuesta haciendo referencia a la solución propuesta para el Ejercicio 3.1.

Respuesta: Un esquema de la relación es una definición de tipos y una relación es una instancia de eseesquema. Por ejemplo, estudiante (ss#, nombre) es un esquema de la relación y ss# nombre es una relaciónbasada en ese esquema.

ss# nombre123-45-6789 Tom Jones456-78-9123 Joe Brown

Page 30: Manual de Apoyo Al Profesor

3.3 Diséñese una base de datos relacional correspondiente al diagrama E-R de la Figura 3.38.

Respuesta: El esquema de la base de datos relaciones se presenta a continuación.

persona (id-conductor, nombre, dirección)coche (matrícula, año, modelo)accidente (número-informe, lugar, fecha)posee (id-conductor, matrícula)participado (número-informe, id-conductor, matrícula, importe-daños)

empleado (nombre-persona, calle, ciudad)trabaja (nombre-persona, nombre-compañía, sueldo)

compañía (nombre-compañía, ciudad)jefe (nombre-persona, nombre-jefe)

Figura 3.39. Base de datos relacional para los Ejercicios 3.5, 3.8 y 3.10.

3.4 En el Capítulo 2 se mostró la manera de representar los conjuntos de relaciones de varios a varios, devarios a uno, de uno a varios y de uno a uno. Explicar la manera en que las claves primarias ayudan arepresentar estos conjuntos de relaciones en el modelo relacional.

Respuesta: Supóngase que la clave primaria del esquema de la relación R es {Ai1, Ai2 , ...,Ain} y que la claveprimaria del esquema de la relación S es {Bi1, Bi2 , ...,Bim}. Entonces una relación entre los dos conjuntos sepuede representar como una tupla (Ai1, Ai2 , ...,Ain, Bi1, Bi2 , ...,Bim). En una relación de uno a uno, cada valor en{Ai1, Ai2 , ...,Ain} aparecerá en una tupla e igualmete para {Bi1, Bi2 , ...,Bim}. En una relación de varios a uno (porejemplo de varios A a un B), cada valor en {Ai1, Ai2 , ...,Ain} aparecerá una vez y cada valor en {Bi1, Bi2 , ...,Bin}puede aparecer varias veces. En una relación de varios a varios, los valores en ambos {Ai1, Ai2 , ...,Ain} y {Bi1,Bi2 , ...,Bim}aparecerán varias veces. Sin embargo, en todos los casos anteriores {Ai1, Ai2 , ...,Ain ,Bi1, Bi2 , ...,Bim}es una clave primaria, por lo que ninguna tupla en (Aj1 , ...,Ajn Bk1 , ...,Bkm) aparecerá más de una vez.

3.5 Considérese la base de datos relacional de la Figura 3.39, donde las claves primarias estánsubrayadas.Formúlese una expresión del álgebra relacional, otra del cálculo relacional de tuplas y una tercera del cálculorelacional de dominios, para cada una de las consultas siguientes:a. Averiguar los nombres de todos los empleados que trabajan para el Banco Importante.b. Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el BancoImportante.c. Averiguar el nombre, la calle y ciudad de residencia, de todos los empleados que trabajan para elBanco Importante y ganan mas de 10.000€ anuales.d. Averiguar el nombre de todos los empleados de esta base de datos que viven en la misma ciudad quela compañía para la que trabajan.e. Averiguar el nombre de todos los empleados que viven en la misma ciudad y en la misma calle quesus jefes.f. Averiguar el nombre de todos los empleados de esta base de datos que no trabajan para el BancoImportante.g. Averiguar el nombre de todos los empleados que ganan más que cualquier empleado del BancoPequeño.h. Supóngase que las compañías pueden estar ubicadas en varias ciudades. Buscar todas las empresascon sede en todas las ciudades en las que tiene sede el Banco Pequeño.

Page 31: Manual de Apoyo Al Profesor

Respuesta:a. �nombre-persona (�nombre-compañía = “Banco Importante” (trabaja))

b. �nombre-persona (empleado |x|(�nombre-compañía = “Banco Importante” (trabaja)))

c. �nombre-persona, calle, ciudad

(�(nombre-compañía = “Banco Importante” � sueldo > 2.000.000)trabaja |x| 1 empleado)

d. �nombre-persona (empleado |x| trabaja |x| compañía)

e. �nombre-persona ((empleado |x| jefe)1

|x| (nombre-jefe = empleado2.nombre-persona � empleado.calle = empleado2.calle

� empleado.ciudad = empleado2.ciudad)(� empleado2 (empleado)))

f. Las soluciones siguientes asumen que todas las personas trabajan para una compañía. Si se permiteque aparezcan personas en la base de datos (por ejemplo en empleado) pero que no aparezcan en trabaja, elproblema se complica. Más adelante se dan soluciones para este caso más realista.�nombre-persona (�nombre-compañía � “Banco Importante” (trabaja))

Si las personas no pueden trabajar para cualquier compañía:�nombre-persona (empleado) �� �nombre-persona

(�(nombre-compañía = “Banco Importante”) (trabaja))

g. �nombre-persona (trabaja) �� �trabaja.nombre-persona (trabaja1

|x| (trabaja.sueldo � trabaja2.sueldo � trabaja2.cpnmbre-compañía =“Banco Pequeño”)

��trabaja2 (trabaja)))

h. Nota: El Banco Pequeño se incluirá en cada respuesta.�nombre-compañïa (compañía ÷

(�ciudad (�nombre-compañía = “Banco Pequeño” (compañía))))

3.6 Considérese la relación de la Figura 3.21, que muestra el resultado de la consulta “Averígüese elnombre de todos los clientes que tienen un préstamo en el banco.” Escríbase de nuevo la consulta para incluirno solamente el nombre, sino también la ciudad de residencia de cada cliente.Obsérvese que ahora el cliente Sotoca ya no aparece en el resultado, aunque en realidad tiene un préstamo delbanco.a. Explíquese por qué Sotoca no aparece en el resultado.b. Supóngase que desea que Sotoca aparezca en el resultado. ¿Cómo habría que modificar la base dedatos para conseguirlo?c. Nuevamente, supóngase que desea que Sotoca aparezca en el resultado. Escríbase una consultaempleando una reunión externa que cumpla esta condición sin que haya que modificar la base de datos.

Respuesta: La nueva consulta es�nombre-cliente,ciudad-cliente,importe(prestatario |x| 1 préstamo |x| 1 cliente)

a. Aunque Sotoca tenga un préstamo, en la relación cliente no aparece ninguna dirección para Sotoca.Dado que ninguna tupla de cliente se une con la tupla Sotoca de prestatario, Sotoca no puede aparecer en elresultado.

b. La mejor solución es insertar la dirección de Sotoca en la relación cliente. Si se desconoce ladirección, se pueden emplear valores nulos. Si el sistema de base de datos no soporta nulos, se puede emplearun valor especial (tal como desconocido) para la ciudad y la calle de Sotoca. El valor especial escogido no

Page 32: Manual de Apoyo Al Profesor

debe ser un nombre que se pueda corresponder con el de una calle o ciudad real.

c. �nombre-cliente,ciudad-cliente,importe((prestatario |x| 1 préstamo) ]x| 1 lcliente)

3.7 Las operaciones de reunión externa amplían la operación reunión natural, de manera que las tuplasde las relaciones participantes no se pierdan en el resultado de la reunión. Descríbase la manera en que laoperación reunión zeta puede ampliarse para que las tuplas de la relación de la izquierda, derecha, o ambas,no se pierdan en el resultado de una reunión zeta.

Respuesta:a. La reunión zeta externa por la izquierda de r(R) y s(S) (r ]x|� s) se puede definir como(r |x|� s) � ((r - �R(r |x|� s)) × (nulo,nulo, . . ., nulo))La tupla de nulos es de tamaño igual al número de atributos en S.

b. La reunión zeta externa por la derecha de r(R) y s(S) (r |x[� s) se puede definir como(r |x|� s) � ((nulo,nulo, . ., nulo) × (s - �s(r |x|� s)))La tupla de nulos es de tamaño igual al número de atributos en R.

c. La reunión zeta externa completa de r(R) y s(S) (r ]x[� s) se puede definir como(r |x|� s) � ((nulo,nulo, . . ., nulo) × (s - �s(r |x|� s))) � ((r - �R(r |x|� s)) × (nulo,nulo, . . ., nulo))La primera tupla de nulos es de tamaño igual al número de atributos en R y la segunda es de tamaño igual alnúmero de atributos en S.

3.8 Considérese la base de datos relacional de la Figura 3.39. Se da una expresión del álgebra relacionalpara cada petición:a. Modificar la base de datos de forma que Santos viva en Tres Cantos.b. Dar a todos los empleados del Banco Importante un aumento de sueldo del 10%.c. Dar a todos los jefes de la base de datos un aumento de sueldo del 10%.d. Dar a todos los jefes de la base de datos un aumento de sueldo del 10%, a menos que su sueldo estépor encima de 100.000 € anuales. En tal caso, darles sólo un 3%.e. Borrar todas las tuplas de la relación trabaja para los empleados del Banco Pequeño.

Respuesta:a. empleado � �nombre-persona,calle,“Tres Cantos”

(�nombre-persona =“Santos”(empleado))� (empleado - �nombre-persona =“Santos”(empleado))

b. trabaja � �nombre-persona,nombre-compañía, 1.1 * salario ((�(nombre-compañía = “Banco Importante”) (trabaja))� (trabaja - �nombre-compañía = “Banco Importante” (trabaja))

c. La sintaxis de actualización permite referenciar sólo a una relación sencilla. Dado que estaactualización requiere acceder a las dos relaciones a actualizar (trabaja) y jefe, se deben seguir varios pasos.En primer lugar, identificar las tuplas de trabaja que se han se actualizar y almacenarlas en una relacióntemporal (t1) Después, crear una relación temporal (t2) que contenga las nuevas tuplas. Finalmente borrar lastuplas en t1, desde trabaja, e insertar las tuplas t2.t1 � �trabaja.nombre-persona, nombre-compañía, salario

(�trabaja.nombre-persona = nombre-jefe (trabaja × jefe))t2 � �nombre-persona,nombre-compañía, 1.1 * salario (t1)trabaja(trabaja - t1) � t2

d. La misma situación surge aquí. Como antes, t1, contiene las tuplas que se han de actualizar y t2contiene estas tuplas en su forma actualizada.

Page 33: Manual de Apoyo Al Profesor

t1 � �trabaja.nombre-persona, nombre-compañía, salario

(�trabaja.nombre-persona = nombre-jefe (trabaja × jefe))t2 � �trabaja.nombre-persona, nombre-compañía, salario*1.03

(�t1.salario * 1.1 > 100.000(t1))t2 � t2 ��trabaja.nombre-persona, nombre-compañía, salario*1.1

(�t1.salario * 1.1 � 100.000(t1))trabaja(trabaja - t1) �� t2

e. trabaja � trabaja - �nombre-compañía = “Banco Pequeño” (trabaja)

3.9 Utilizando el ejemplo bancario, escríbanse consultas del álgebra relacional para averiguar las cuentaspor más de dos clientes:a. Utilizando una función de agregación.b. Sin utilizar funciones de agregación.

Respuesta:a. t1 � número-cuenta Gcount nombre-cliente (impositor)

�número-cuenta (�número-titulares>2 (�titulares-cuenta (número-cuenta,número-titulares)(t1)))

b. t1 � (�d1(impositor) × �d2(impositor) × �d3(impositor))t2 � �(d1.número-cuenta = d2.número-cuenta = d3.número-cuenta)(t1)�d1.número-cuenta (�(d1.nombre-cliente � d2.nombre-cliente �

d2.nombre-cliente � d3.nombre-cliente � d3.nombre-cliente � d1.nombre-cliente )(t2))

3.10 Considérese la base de datos relacional de la Figura 3.39. Se da una expresión del álgebra relacionalpara cada una de las consultas siguientes:a. Averiguar la compañía con mayor número de empleados.b. Averiguar la compañía con nómina (suma de sueldos de sus empleados) más reducida.c. Averiguar las compañías cuyos empleados ganan un sueldo más alto, en media, que el sueldo mediodel Banco Importante.

Respuesta:a. t1 � nombre-compañía G count-distinct nombre-persona (trabaja)

t2 � max número-empleados(��fuerza-compañía (nombre-compañía,número-empleados)(t1))�nombre-compañía(��t3 (nombre-compañía,número-empleados)(t1) |x| ��t4 (número-empleados)(t2))

b. t1 � nombre-compañía G sum sueldo (trabaja)t2 � min nómina (��nómina-compañía (nombre-compañía,nómina)(t1))�nombre-compañía(��t3 (nombre-compañía,nómina)(t1) |x| ��t4 (nómina)(t2))

c. t1 � nombre-compañía G avg sueldo (trabaja)t2 � �nombre-compañía = “Banco Importante” (t1)��t3.nombre-compañía((��t3(nombre-compañía,salario-medio)(t1))

| x| t3.salario-medio > banco-importante.salario-medio (� banco-importante (nombre-compañía,salario-medio)(t2)))

3.11 Dense dos motivos por los que se puede decidir definir una vista.

Respuesta:a. Las condiciones de seguridad pueden requerir que la base de datos lógica no sea totalmente visiblepara todos los usuarios.b. Puede que se desee crear un conjunto personalizado de relaciones que se adapte mejor que el modelológico a la intuición de un usuario concreto.

Page 34: Manual de Apoyo Al Profesor

3.12 Cítense dos problemas importantes del procesamiento de la operación actualización, expresadas entérminos de vistas.

Respuesta: Las vistas presentan problemas significativos si se expresan con ellas actualizaciones.La dificultad radica en que las modificaciones de la base de datos, expresadas en términos de vistas, debentraducirse en modificaciones de las relaciones reales en el modelo lógico de la base de datos.a. Dado que la vista puede no tener todos los atributos de las tablas subyacentes, la inserción de unatupla en la vista insertará tuplas en las tablas subyacentes, tomando valores nulos los atributos no participande la vista. Esto puede no ser conveniente, especialmente si el atributo en cuestión es parte de la claveprimaria de la tabla.

b. Si una vista es una reunión de varias tablas subyacentes y una inserción da como resultado tuplas connulos en las columnas de la reunión, no se logrará el efecto deseado de la inserción. En otras palabras, unaactualización para una vista puede no ser capaz de expresar, en absoluto, como actualiza para las relaciones debase. Para un ejemplo explicativo, consultar el de la actualización de información-crédito, en el Apartado3.5.2.

3.13 Sean los siguientes esquemas de relación:R = (A, B, C)S = (D, E, F)

Sean las relaciones r(R) y s(S). Se da una expresión del cálculo relacional de tuplas que sea equivalente a cadauna de las expresiones siguientes:

a. �A(R)b. �B = 17 (r)c. r x sd. �A, F (�C = D(r x s))

Respuesta:a. {t | q � r (q[A] = t[A])}

b. {t | t � r � t[B] = 17}

c. {t | p � r q � s (t[A] = p[A] � t[B] = p[B]� t[C] = p[C] � t[D] = q[D]� t[E] = q[E] � t[F] = q[F])}

d. {t | p � r q � s (t[A] = p[A] � t[F] = q[F] � p[C] = q[D]}

3.14 Sea R = (A, B, C) y sean r1 y r2 relaciones del esquema R. Se da una expresión del cálculo relacionalde dominios que sea equivalente a las expresiones siguientes:a. �A(r1)b. �B = 17 (r1)c. . r1 � r2

d. . r1 r2e. . r1 - r2

f. �A, B(r1) |x| �B, C(r2)

Respuesta:a. {< t > | p, q (< t, p, q > � r1)}

b. {< a, b, c > | < a, b, c > � r1 � b = 17}

Page 35: Manual de Apoyo Al Profesor

c. {< a, b, c > | < a, b, c > � r1 � < a, b, c > � r2}

d. {< a, b, c > | < a, b, c > � r1 � < a, b, c > � r2}

e. {< a, b, c > | < a, b, c > � r1 � < a, b, c > � r2}

f. {< a, b, c > | p, q (< a, b, p > � r1 � < q, b, c > � r2)}

3.15 Repítase el Ejercicio 3.5 usando el cálculo relacional de tuplas y el de dominios.

Respuesta:a. Averiguar los nombres de todos los empleados que trabajan para el Banco Importante:

i. {t | s � trabaja (t[nombre-persona] = s[nombre-persona]� s[nombre-compañía] = “Banco Importante”)}

ii. { < p > | c, s (< p, c, s >� trabaja � c = “Banco Importante”)}

b. Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el BancoImportante:

i.{t | r � empleado s � trabaja (t[nombre-persona] = r[nombre-persona]� t[ciudad] = r[ciudad] � r[nombre-persona] = s[nombre-persona]� s[nombre-compañía] = “Banco Importante”)}

ii. {< p,c > | co, sa, st (< p,co,sa >� trabaja� < p,st,c >� empleado � co = “Banco Importante”)}

c. Averiguar los nombres, direcciones y ciudades de residencia de todos los empleados que trabajanpara el Banco Importante y ganan más de 10.000 € anuales.

i. {t | t � empleado � ( s � trabaja ( s[nombre-persona] = t[nombre-persona]� s[nombre-compañía] = “Banco Importante” � s[sueldo] >

10.000))}ii. {< p, s, c > | < p, s, c > � empleado � �co, sa (< p,co,sa > � trabaja

� co = “Banco Importante” � sa > 10.000)}

d. Averiguar el nombre de todos los empleados de esta base de datos que viven en la misma ciudad quela compañía para la que trabajan:

i. {t | e � empleado w � trabaja c � compañía(t[nombre-persona] = e[nombre-persona]� e[nombre-persona] = w[nombre-persona]� w[nombre-compañía] = c[nombre-compañía] � e[ciudad] = c[ciudad])}

ii. {< p > | st, c, co, sa (< p,st,c > � empleado� < p,co,sa > � trabaja � < co,c > � compañía)}

e. Averiguar el nombre de todos los empleados que viven en la misma ciudad y en la misma calle quesus jefes:

i. { t | l � empleado m � jefe r � empleado(l[nombre-persona] = m[nombre-persona] � m[nombre-jefe] =

r[nombre-persona]� l[calle] = r[calle] � l[ciudad] = r[ciudad] � t[nombre-persona] =

l[nombre-persona])}ii. {< t > | s, c, m (< t, s, c > � empleado � < t,m > � jefe � <m, s, c > � empleado)}

f. Averiguar el nombre de todos los empleados de esta base de datos que no trabajan para el Banco

Page 36: Manual de Apoyo Al Profesor

Importante:Si se permite que aparezcan personas en la base de datos (por ejemplo en empleado) pero que no

aparezcan en trabaja, el problema se complica. Más adelante se dan soluciones para este caso más realista.i. { t | w � trabajas ( w[nombre-compañía] � “Banco Importante”

� t[nombre-persona] = w[nombre-persona])}ii. { < p > | c, s (< p, c, s > � trabaja � c � “Banco Importante”)} Si las personas no pueden trabajar para cualquier compañía:i. { t | e � empleado ( t[nombre-persona] = e[nombre-persona] � ¬ w � trabaja

(w[nombre-compañía] = “Banco Importante”��w[nombre-persona] = t[nombre-persona]))}

ii. { < p > | s, c (< p, s, c > � empleado) � ¬ x, y(y = “Banco Importante”� < p, y, x > � trabaja)}

g. Averiguar el nombre de todos los empleados que ganan más que cualquier empleado del BancoPequeño:

i. { t | w � trabaja ( t[nombre-persona] = w[nombre-persona] � � s � trabajas[nombre-compañía] = “Banco Pequeño” � w[sueldo] >

s[sueldo]))}ii. {< p > | c, s (< p, c, s > � trabaja � ��p2, c2, s2

(< p2, c2, s2 > � trabaja � c2 � “Banco Pequeño” � s >s2))}

h. Supóngase que las compañías pueden estar ubicadas en varias ciudades. Buscar todas las empresascon sede en todas las ciudades en las que tiene sede el Banco Pequeño.

Nota: El Banco Pequeño se incluirá en cada respuesta.i. {t | � s � compañía (s[nombre-compañía] = “Banco Pequeño” �

r � compañía (t[nombre-compañía] = r[nombre-compañía] � r[ciudad] =s[ciudad]))}ii. {< co > | � co2, ci2 (< co2, ci2 > � compañía

� co2 � “Banco Pequeño” � < co,ci2 > � compañía)}

3.16 Sean R = (A,B) y S = (A,C), y sean las relaciones r(R) y s(S). Escribir expresiones del álgebrarelacional equivalentes a las siguientes expresiones del cálculo relacional de dominios:a. {<a> | b (<a, b> � r � b = 17)}b. {<a, b, c> | <a, b> � r � <a, c> � s}c. {<a> | b (<a, b> � r) � � c ( d (<d, c> � s) � <a, c> � s)}d. {<a> | c (<a, c> � s) � b1, b2 (<a, b1> � r � < c, b2> � r � b1 > b2))}

Respuesta:a. �A (�B = 17 (r))

b. r |x| s

c. �A(r) � (r � �B(�C(s)))

d. �r.A ((r |x| 1 s) |x|1c=r2.A?� r.B >r2.B (�r2(r)))

Es interesante notar que (d) es una abstracción de la célebre consulta “Averiguar los empleados que gananmás que su propio jefe.” Para observar esto, sea R = (emp, sal), S = (emp, jef).

3.17 Sean R = (A, B) y S = (A ,C), y sean las relaciones r(R) y s(S). Utilizando la constante especial nulo,escríbanse expresiones del cálculo relacional de tuplas equivalentes a cada una de las siguientes:a. r |x[ s

Page 37: Manual de Apoyo Al Profesor

b. r ]x[ sc. r ]x| s

Respuesta:a. {t | r � R s � S (r[A] = s[A] � t[A] = r[A] � t[B] = r[B] � t[C] = s[C]) �

s � S(¬r � R(r[A] = s[A]) � t[A] = s[A] � t[C] = s[C] � t[B] = nulo)}

b. {t | r � R s � S (r[A] = s[A] � t[A] = r[A] � t[B] = r[B] � t[C] = s[C]) �r � R(¬s � S(r[A] = s[A]) � t[A] = r[A] � t[B] = r[B] � t[C] = nulo) �s � S(¬r � R(r[A] = s[A]) � t[A] = s[A] � t[C] = s[C] � t[B] = nulo)}

c. {t | r � R s � S (r[A] = s[A] � t[A] = r[A] � t[B] = r[B] � t[C] = s[C]) �r � R(¬s � S(r[A] = s[A]) � t[A] = r[A] � t[B] = r[B] � t[C] = nulo)}

3.18 Dense dos motivos por los que se puedan introducir valores nulos en la base de datos.

Respuesta: Se pueden introducir nulos en la base de datos porque el valor actual es desconocido o no existe.Por ejemplo, un empleado cuya dirección ha cambiado y cuya nueva dirección todavía no se conoce, deberíaconservarse con una dirección nula. Si las tuplas de empleados tienen un atributo compuesto dependencias yun empleado en concreto no tiene dependencias, entonces el atributo de ese empleado deberían tener un valornulo.

3.19 Algunos sistemas permiten los valores nulos marcados. Un valor nulo marcado �i es igual a símismo, pero si i � j, entonces �i � �j. Una aplicación de valores nulos marcados debe permitir ciertasactualizaciones mediante el uso de vistas. Considérese la vista información-préstamo (Apartado 3.5).Muéstrese la manera en que se puedan utilizar valores nulos marcados para permitir la inserción de la tupla(“González”, 1900) mediante información-préstamo.

Respuesta: Para insertar la tupla (“González”, 1900) en la vista información-préstamo, se puede hacer lo siguiente:prestatario � (“González”,�k) � prestatariopréstamo � (�k �, 1900) � préstamode tal manera que �k es un nuevo nulo marcado, que todavía no existe en la base de datos.

Page 38: Manual de Apoyo Al Profesor

CAPITULO 4

SQL

El capítulo 4 abarca el lenguaje relacional SQL. la discusión está basada en el SQL-92, dado que el SQL másreciente:1999 aún no está ampliamente soportado. Las aplicaciones aportadas por SQL:1999 están cubiertasen los Capítulos 9 y 22. Las restricciones de integridad y las características de autorización del SQL-92 sedescriben en el Capítulo 6. Al ser SQL un lenguaje muy amplio, muchas de sus características no se abarcanaquí, al no ser apropiadas para un curso de introducción de bases de datos. Libros estándar sobre SQL, talescomo Date y Darwen [1993] y Melton y Simon [1993], o manuales de sistemas de bases de datos, se puedenemplear como suplemento por aquellos estudiantes que quieran ahondar más profundamente en laproblemática del SQL.

Aunque es posible cubrir este capítulo haciendo sólo los ejercicios escritos, se recomiendaenormemente el acceso a un sistema de bases de datos actual, que soporte SQL. El modelo de ejerciciosempleado tiene por objeto crear una base de datos moderadamente extensa y dar a los estudiantes una lista deconsultas en Inglés, para escribirlas y ejecutarlas mediante SQL. Publicamos las respuestas apropiadas (estoes, el resultado de las relaciones que deberían tener lugar, Este enfoque permite que los estudiantescomprueben sus propias respuestas para corregirlas inmediatamente, sin tener que esperar a su evaluación y,por lo tanto, hace que el proceso de aprendizaje sea más rápido. Unos pocos de tales ejemplos estándisponibles en la página Web de este libro.

Los ejercicios correspondientes al diseño de la base de datos se han pospuesto mejor hasta despuésdel Capítulo7.Dando por hecho que los protocolos ODBC y JDBC se han convertido rápidamente en el medio principal deacceso a bases de datos, se ha extendido significativamente la cobertura de estos dos protocolos, incluyendoalgunos ejemplos. Sin embargo, nuestro alcance es sólo una introducción y omite muchos detalles que sonútiles en la práctica. Los manuales / tutorías online o los libros de texto que tratan estos protocolos, sedeberían emplear como suplementos para ayudar a que los estudiantes hagan un uso completo de estosprotocolos.

Cambios a la tercera edición:

La cobertura del SQL se ha extendido para incluir la cláusula with, ODBC, JDBC y esquemas, catálogos yentornos (Apartado 4.14).

Page 39: Manual de Apoyo Al Profesor

Ejercicios

4.1 Considérese la base de datos de seguros de la Figura 4.12, donde las claves primarias estánsubrayadas.Formúlense las siguientes consultas SQL para esta base de datos relacional.a. Buscar el número total de las personas cuyos coches se han visto involucrados en un accidente en1989.b. Buscar el número de accidentes en los cuales se ha visto involucrado un coche perteneciente a“Santos”.c. Añadir un nuevo accidente a la base de datos; supóngase cualquier valor para los atributosnecesarios.d. Borrar el Mazda de “Santos”.e. Actualizar el importe de daños del coche de matrícula "2002BCD" en el accidente con número deinforme "AR2197" a 3.000 €.

Respuesta: Nota: La relación participado relaciona conductores, coches y accidentes.a. Buscar el número total de las personas cuyos coches se han visto involucrados en un accidente en1989.Nota: esto no es lo mismo que el número total de accidentes en 1989. Las personas con varios accidentes sólose deben contar una vez.

select count (distinct nombre)from accidente, participado, personawhere accidente.número-informe = participado.número-informeand participado.id-conductor = persona.id-conductorand fecha between date ’1989-00-00’ and date ’1989-12-31’

b. Buscar el número de accidentes en los que se ha visto involucrado un coche perteneciente a“Santos”.

select count (distinct *)from accidentewhere exists

(select *from participado, personawhere participado.id-conductor = persona.id-conductor

and persona.nombre = ’Santos’and accidente.número-informe = participado.número-informe)

c. Añadir un nuevo accidente a la base de datos; supóngase cualquier valor para los atributosnecesarios.

Se supone que el conductor era “Santos”, aunque podría haber sido cualquier otro. También sesupone que “Santos” tiene un Toyota. En primer lugar se debe encontrar la matrícula del coche en cuestión.Entonces, las relaciones participado y accidente se deben actualizar con el fin de registrar el accidente yasociarlo al coche dado. Se asumen los valores “Berkeley” para lugar, ’2001-09-01’ para fecha, 4007 paranúmero-informe y 3.000 para el importe de los daños.

persona (id-conductor, nombre, dirección)coche (matrícula, modelo, año)

accidente (número-informe, fecha, lugar)posee (id-conductor, matrícula)

participado (id-conductor, coche, número-informe, importe-daños)

Figura 4.12. Base de datos de seguros.

Page 40: Manual de Apoyo Al Profesor

insert into accidentevalues (4007, ’2001-09-01’, ’Berkeley’)

insert into participadoselect o.id-conductor, c.matrícula, 4007, 3.000from persona p, posee o, coche cwhere p.nombre = ’Santos’ and p.id-conductor = o.id-conductor and

o.matrícula = c.matrícula and c.modelo = ’Toyota’

d. Borrar el Mazda de “Santos”.Dado que modelo no es una clave de la relación coche, se puede asumir que sólo uno de los coches de Santoses un Mazda, o borrar todos los Mazda de Santos (la consulta es la misma). De nuevo se supone que nombrees una clave de persona.

delete cochewhere modelo = ’Mazda’ and matrícula in

(select matrículafrom persona p, posee owhere p.nombre = ’Santos’ and p.id-conductor = o.id-conductor)

Nota: Los registros accidente y participado asociados con el Mazda todavía existen.

e. Actualizar el importe de daños del coche de matrícula "2002BCD" en el accidente con número deinforme "AR2197" a 3.000 €.

update participadoset importe-daños = 3.000where número-informe = “AR2197” and id-conductor in

(select id-conductorfrom poseewhere matrícula = “2002BCD”)

4.2 Considérese la base de datos de empleados de la Figura 4.13, donde las claves primarias estánsubrayadas.Proporciónese una expresión SQL para cada una de las consultas siguientes:a. Buscar los nombres de todos los empleados que trabajan para el Banco Importante.b. Buscar los nombres y ciudades de residencia de todos los empleados que trabajan en el BancoImportante.c. Buscar los nombres, direcciones y ciudades de residencia de todos los empleados que trabajan en elBanco Importante y que ganan más de 10.000 €.d. Buscar todos los empleados que viven en la ciudad de la empresa para la que trabajan.e. Buscar todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes.f. Buscar todos los empleados que no trabajan en el Banco Importante.g. Buscar todos los empleados que ganan más que cualquier empleado del Banco Pequeño.h. Supóngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas consede en todas las ciudades en las que tiene sede el Banco Pequeño.i. Buscar todos los empleados que ganan más que el sueldo medio de los empleados de su empresa.j. Buscar la empresa que tiene el mayor número de empleados.k. Buscar la empresa que tiene el menor sueldo medio.l. Averiguar las compañías cuyos empleados ganan un sueldo más alto, en media, que el sueldo mediodel Banco Importante.

Page 41: Manual de Apoyo Al Profesor

Respuesta:a. Averiguar los nombres de todos los empleados que trabajan para el Banco Importante.

select nombre-empleadofrom trabajawhere nombre-compañía = ’Banco Importante’

b. Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el BancoImportante.

select e.nombre-empleado, ciudadfrom empleado e, trabaja wwhere w.nombre-compañía = ’Banco Importante’ and

w.nombre-empleado = e.nombre-empleado

c. Averiguar los nombres, direcciones y ciudades de residencia de todos los empleados que trabajanpara el Banco Importante y ganan más de 10.000 € anuales.Si las personas pueden trabajar para varias compañías la solución siguiente sólo listará aquellas que ganenmás de 10.000 € anuales sólo del “Banco importante”.

select *from empleadowhere nombre-empleado in

(select nombre-empleadofrom trabajawhere nombre-compañía = ’Banco Importante’ and sueldo ¿ 10.000)

Al igual que en la solución de la consulta anterior, también se puede emplear una reunión para resolver esto.d. Buscar todos los empleados que viven en la ciudad de la empresa para la que trabajan.

select e.nombre-empleadofrom empleado e, trabaja w, compañía cwhere e.nombre-empleado = w.nombre-empleado and e.ciudad = c.ciudad and

w.nombre-compañía = c.nombre-compañía

e. Buscar todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes.select P.nombre-empleadofrom empleado P, empleado R, jefe Mwhere P.nombre-empleado = M.nombre-empleado and

M.nombre-jefe = R.nombre-empleado andP.calle = R.calle and P.ciudad = R.ciudad

f. Buscar todos los empleados que no trabajan en el Banco Importante.Las soluciones siguientes asumen que todas las personas trabajan sólo para una compañía.

select nombre-empleadofrom trabajawhere nombre-compañía �� ’Banco Importante’

Si se permite que aparezcan personas en la base de datos (por ejemplo en empleado) pero que no aparezcan entrabaja, o si las personas pueden trabajar para más de una compañía, la solución es un poco más complicada.

select nombre-empleadofrom empleadowhere nombre-empleado not in

(select nombre-empleadofrom trabajawhere nombre-compañía = ’Banco Importante’)

g. Buscar todos los empleados que ganan más que cualquier empleado del Banco Pequeño.Las soluciones siguientes asumen que todas las personas trabajan sólo para una compañía.

Page 42: Manual de Apoyo Al Profesor

select nombre-empleadofrom trabajawhere sueldo > all

(select sueldofrom trabajawhere nombre-compañía = ’Banco Pequeño’)

Si las personas pueden trabajar para varias compañías y se desea considerar el sueldo total de cada persona, elproblema es más complejo. Aunque puede resolverse empleando una subconsulta anidada, seguidamente sepresenta la manera de hacerlo con la cláusula with.

with sueldo-total-empleado as(select nombre-empleado, sum(sueldo) as sueldo-totalfrom trabajagroup by nombre-empleado

)select nombre-empleadofrom sueldo-total-empleadowhere sueldo-total > all

(select sueldo-totalfrom sueldo-total-empleado, trabajawhere trabaja.mombre-compañía = ’Banco Pequeño’ and

sueldo-total-empleado.nombre-empleado = trabaja.nombre-empleado)

h. Supóngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas consede en todas las ciudades en las que tiene sede el Banco Pequeño.La solución más simple emplea la comparación contains que fue incluida en Sistem R original, lenguajeSequel, pero que no está presente en las posteriores versiones SQL.

select T.nombre-compañíafrom compañía Twhere (select R.ciudad

from compañía Rwhere R.nombre-compañía = T.nombre-compañía)

contains(select S.ciudadfrom compañía Swhere S.nombre-compañía = ’Banco Pequeño’)

Lo que sigue es una solución en SQL estándar.select S.nombre-compañíafrom compañía Swhere not exists ((select ciudad

from compañíawhere nombre-compañía = ’Banco Pequeño’)

except(select ciudadfrom compañía Twhere S.nombre-compañía = T.nombre-compañía))

Page 43: Manual de Apoyo Al Profesor

i. Buscar todos los empleados que ganan más que el sueldo medio de los empleados de su empresa.La solución siguiente supone que todas las personas trabajan, a lo sumo, para una compañía.

empleado (nombre-empleado, calle, ciudad)trabaja (nombre-empleado, nombre-compañía, sueldo)

compañía (nombre-compañía, ciudad)jefe (nombre-empleado, nombre-jefe)

Figura 4.13. Base de datos de empleados.

select nombre-empleadofrom trabaja Twhere sueldo > (select avg (sueldo)

from trabaja Swhere T.nombre-compañía = S.nombre-compañía)

j. Buscar la empresa que tiene el mayor número de empleados.select nombre-compañíafrom trabajagroup by nombre-compañíahaving count (distinct nombre-empleado) >= all

(select count (distinct nombre-empleado)from trabajagroup by nombre-compañía)

k. Buscar la empresa que tiene el menor sueldo medio.select nombre-compañíafrom trabajagroup by nombre-compañíahaving sum (sueldo) <= all (select sum (sueldo)

from trabajagroup by nombre-compañía)

l. Encontrar las compañías cuyos empleados ganan un salario mayor, en promedio, que el salariomedio del Banco Importante.

select nombre-compañíafrom trabajagroup by nombre-compañíahaving avg (sueldo) > (select avg (sueldo)

from trabajawhere nombre-compañía = ’Banco Importante’)

4.3 Considérese la base de datos relacional de la Figura 4.13. Formúlese una expresión SQL para cadauna de las consultas siguientes.a. Modificar la base de datos de forma que Santos viva en Ávilab. Incrementar en un 10% el sueldo de todos los empleados del Banco Importante.c. Incrementar en un 10% el sueldo de todos los jefes del Banco Importante.d. Incrementar en un 10% el sueldo de todos los jefes del Banco Importante, a menos que su sueldopase a ser mayor que 100.000 €,en cuyo caso, se incrementará su sueldo sólo en un 3%.e. Borrar todas las tuplas de la relación trabaja correspondientes a los empleados del Banco Pequeño.

Respuesta: La solución para la parte a supone que cada persona sólo tiene una tupla en la relaciónempleado. Las soluciones para las partes c y d suponen que cada persona trabaja, cómo máximo, para una

Page 44: Manual de Apoyo Al Profesor

compañía.a. Modificar la base de datos de forma que Santos viva en Tres Cantos.

update empleadoset ciudad = ’Tres Cantos’where nombre-persona = ’Santos’

b. Incrementar en un 10% el sueldo de todos los empleados del Banco Importante.update trabajaset sueldo = sueldo * 1.1where nombre-compañía = ’Banco Importante’

c. Incrementar en un 10% el sueldo de todos los jefes del Banco Importante.update trabajaset sueldo = sueldo * 1.1where nombre-empleado in (select nombre-jefe

from jefe)and nombre-compañía = ’Banco Importante’

d. Incrementar en un 10% el sueldo de todos los jefes del Banco Importante, a menos que su sueldopase a ser mayor que 100.000 €, en tal caso, incrementarlo sólo en un 3%.

update trabaja Tset T.sueldo = T.sueldo * 1.03where T.nombre-empleado in (select nombre-jefe

from jefe)and T.sueldo * 1.1 > 100.000and T.nombre-compañía = ’Banco Importante’

update trabaja Tset T.sueldo = T.sueldo * 1.1where T.nombre-empleado in (select nombre-jefe

from jefe)and T.sueldo * 1.1 <= 100.000and T.nombre-compañía = ’Banco Importante’

SQL-92 aporta una operación case (consultar el Ejercicio 4.11), usando la cuál se presenta una solución másconcisa:

update trabaja Tset T.sueldo = T.sueldo

(casewhen (T.sueldo . 1.1 > 100.000) then 1.03else 1.1

)where T.nombre-empleado in (select nombre-jefe

from jefe) andT.nombre-compañía = ’Banco Importante’

e. Borrar todas las tuplas de la relación trabaja para los empleados del Banco Pequeño.delete trabajawhere nombre-compañía = ’Banco Pequeño’

Page 45: Manual de Apoyo Al Profesor

4.4 Sean los siguientes esquemas de relaciones:

R = (A, B, C)S = (D, E, F)

Además, considérense las relaciones r(R) y s(S). Obténgase la expresión SQL equivalente a las consultassiguientes:a.���A(r)b. ��B = 17 (r)c. r x sd. �A,F (��C = D (r x s))

Respuesta:a. �A(r)

select distinct Afrom r

b. �B = 17 (r)select *from rwhere B = 17

c. r × sselect distinct *from r, s

d. �A,F (�C =D(r × s))select distinct A, Ffrom r, swhere C = D

4.5 Sea R = (A, B, C) y sean r1 y r2 relaciones sobre el esquema R. Proporciónese una expresión SQLequivalente a cada una de las siguientes consultas:a. r1 U r2

b. r1 r2c. r1 - r2

d. �AB (r1) |x| �BC (r2)

Respuesta:a. r1 �� r2

(select *from r1)union(select *from r2)

b. r1 r2Se puede escribir esto empleando la operación intersect, que es el enfoque preferido pero, por variar, sepresenta una solución empleando una subconsulta anidada.

select *from r1where (A, B, C) in (select *

from r2)

Page 46: Manual de Apoyo Al Profesor

c. r1 - r2

select . from r1where (A, B, C) not in (select

. from r2)

Esto también se puede resolver empleando la cláusula except.

d. ��AB(r1) |x| �BC(r2)select r1.A, r2.B, r3.Cfrom r1, r2where r1.B = r2.B

4.6 Sean R = (A, B) y S = (A ,C) y sean las relaciones r(R) y s(S). Formúlese una expresión SQLequivalente a cada una de las consultas siguientes.a. {<a> | b (<a, b> � r � b = 17)}b. {<a, b, c> | <a, b> � r � <a, c> � s}c. {<a> | c (<a, c> � s � b1 , b2 (<a, b1> � r � <c, b2> � r � b1 >b2 ))}

Respuesta:a. {<a> | b (<a, b> � r � b = 17)}

select distinct Afrom rwhere B = 17

b. {<a, b, c> | <a, b> � r � <a, c> � s}select distinct r.A, r.B, s.Cfrom r, swhere r.A = s.A

c. {<a> | c (<a, c> � s � b1 , b2 (<a, b1> � r � <c, b2> � r � b1 >b2))}

select distinct s.Afrom s, r e, r mwhere s.A = e.A and s.C = m.A and e.B > m.B

4.7 Demuéstrese que en SQL <> all es equivalente a not in.

Respuesta: Sea S el conjunto que denota el resultado de una subconsulta SQL. Se compara (x <> all S) con(x not in S). Si un valor concreto x1 cumple (x1 <> all S) entonces para todos los elementos y de S x1 � y. Así,x1 no es un miembro de S y debe cumplir (x1 not in S). Análogamente, supóngase que hay un determinadovalor x2 que cumple (x2 not in S). No puede ser igual a ningún elemento w que pertenezca a S y, por tanto, secumplirá (x2 <> all S). Por lo tanto las dos expresiones son equivalentes.

4.8 Considérese la base de datos relacional de la Figura 4.13. Utilizando SQL, defínase una vista quecontenga nombre-jefe y el sueldo medio de todos los empleados que trabajan para ese jefe. Explicar por quéel sistema de base de datos no debería permitir que las actualizaciones se expresaran en términos de esta vista.

Page 47: Manual de Apoyo Al Profesor

Respuesta:create view salinfo as

select nombre-jefe, avg(sueldo)from jefe m, trabaja wwhere m.nombre-empleado = w.nombre-empleadogroup by nombre-jefe

No se debería permitir actualizar en esta vista, porque no hay manera de determinar como cambiar los datossubyacentes. Por ejemplo, supóngase que el requerimiento es “cambiar el sueldo medio de los empleados quetrabajan para Santos a 200€”. ¿Se debería modificar el sueldo, de cualquiera que trabajara para Santos, a200€? ¿O debería ,el primer (o más, si es necesario) empleado encontrado que trabaja para Santos, tener susalario ajustado para que la media sea de 200€? Ninguno de estos enfoques tiene realmente sentido.

4.9 Considérese la consulta SQLselect p.a1from p, r1, r2where p.a1 = r1.a1 or p.a1 = r2.a1

¿Bajo qué condiciones la consulta anterior devuelve los valores de p.a1 que están tanto en r1 como en r2 ?Examínense cuidadosamente los casos en que r1 o r2 pueden estar vacíos.

Respuesta: La consulta selecciona aquellos valores de p.a1 que son iguales a algunos valores de r1.a1 o r2.a1si y sólo si ambos, r1 y r2, no están vacíos. Si están vacíos uno o ambos, r1 y r2 , el producto cartesiano de p, r1y r2 está vacío, por lo que el resultado de la consulta también lo es. Naturalmente, si el propio p está vacío, elresultado es el esperado, es decir, vacío.

4.10 Escríbase una consulta SQL, sin emplear la cláusula with, para encontrar todas las sucursales dondela cantidad total de depósitos sea menor que la cantidad total media depositada en todas las sucursales usando:a. Una consulta anidada en la cláusula from.b. Una consulta anidada en una cláusula having.

Respuesta: Se obtienen los nombres de las sucursales además de la cantidad total de depósitos de lasucursal.a. Empleando una consulta anidada en la cláusula from.

select nombre-sucursal, saldo-totalfrom (select nombre-sucursal, sum (saldo)

from cuentagroup by nombre-sucursal) as total-sucursal (nombre-sucursal, saldo-total)

where saldo-total ¡( select avg (saldo-total)from (select nombre-sucursal, sum (saldo)

from cuentagroup by nombre-sucursal) as total-sucursal (nombre-sucursal, saldo-

total))

Page 48: Manual de Apoyo Al Profesor

b. Empleando una consulta anidada en una cláusula having.

select nombre-sucursal, sum (saldo)from cuentagroup by nombre-sucursalhaving sum (saldo) ¡

( select avg (saldo-total)from (select nombre-sucursal, sum (saldo)

from cuentagroup by nombre-sucursal) as total-sucursal (nombre-sucursal, saldo-

total))

4.11 Supóngase que se tiene una relación notas(id-estudiante, puntuación) y que se quiere clasificar a losestudiantes en función de la puntuación del modo siguiente: SS: si la puntuación es menor que 5 AP: si lapuntuación es mayor o igual que 5 y menor que 7, NT: si la puntuación es mayor o igual que 7 y menor que8,5 SB: si la puntuación es mayor o igual que 8,5. Escríbanse consultas para hacer lo siguiente:a. Mostrar la clasificación de cada estudiante, en términos de la relación notas.b. Encontrar el número de estudiantes por clasificación.

Respuesta: Se emplea la operación case aportada por SQL-92:a. Para mostrar la clasificación de cada estudiante:

select id-estudiante,(case

when puntuación < 5 then ’SS’,when (puntuación � 5 and puntuación < 7) then ’AP’,when (puntuación � 7 and puntuación < 8,5) then ’NT’,else ’SB’

end) as clasificaciónfrom notas

b. Para encontrar el número de estudiantes por clasificación se usa la siguiente consulta, dondeclasificación es el resultado de la consulta dada como solución de la parte a.

select clasificación, count(id-estudiante)from clasificacióngroup by clasificación

4.12 SQL-92 proporciona una operación n-aria denominada coalesce que se define como sigue:coalesce(A1,A2, . . . , An) devuelve el primer Ai no nulo en la lista A1,A2, . . .,An, y devuelve nulo si todos losA1,A2, . . .,An son nulos. Muéstrese cómo expresar la operación coalesce usando la operación case.

Respuesta:case

when A1 is not nulo then A1when A2 is not nulo then A2

. . .when An is not nulo then An

else nuloend

Page 49: Manual de Apoyo Al Profesor

4.13 Sean a y b relaciones con los esquemas A(nombre, dirección, puesto) y B(nombre, dirección,sueldo), respectivamente. Indíquese como expresar a natural full outer join b, utilizando la operación fullouter join con una condición on y la operación coalesce. Compruébese que la relación resultado no contienedos copias de los atributos nombre y dirección y que la solución es válida, incluso si dichos atributos dealguna tupla en a o b toman valor nulo para los atributos nombre o dirección.

Respuesta:select coalesce(a.nombre, b.nombre) as nombre,

coalesce(a.dirección, b.dirección) as dirección,a.puesto,b.sueldo

from a full outer join b on a.nombre = b.nombre anda.dirección = b.dirección

4.14 Dada una definición de esquema SQL para la base de datos de empleados de la Figura 4.13, elíjaseun dominio apropiado para cada atributo y una clave primaria para cada esquema de relación.

Respuesta:create domain nombres-compañía char(20)create domain nombres-ciudad char(30)create domain nombres-persona char(20)

create table empleado(nombre-empleado nombres-persona,calle char(30),ciudad nombres-ciudad,primary key (nombre-empleado))

create table trabaja(nombre-empleado nombres-persona,nombre-compañía nombres-compañía,sueldo numeric(8, 2),primary key (nombre-empleado))

create table compañía(nombre-compañía nombres-compañía,ciudad nombres-ciudad,primary key (nombre-compañía))

create table jefe(nombre-empleado nombres-persona,nombre-jefe nombres-persona,primary key (nombre-empleado))

4.15 Escríbanse condiciones check para el esquema del ejercicio anterior para asegurar que:a. Cada empleado trabaja para una empresa con sede en la ciudad de residencia del empleado.b. Ningún empleado gana un sueldo mayor que el de su jefe.

Page 50: Manual de Apoyo Al Profesor

Respuesta:a. condición check para la tabla trabaja:

check((nombre-empleado, nombre-compañía) in(select e.nombre-empleado, c.nombre-compañíafrom empleado e, compañía cwhere e.ciudad = c.ciudad)

)

b. condición check para la tabla trabaja:check(

sueldo < all(select sueldo-jefefrom (select nombre-jefe, jefe.nombre-empleado as nombre-emp,

sueldo as sueldo-jefefrom trabaja, jefewhere trabaja.nombre-empleado = jefe.nombre-jefe)

where nombre-empleado = nombre-emp)

)

La solución es ligeramente complicada por el hecho de que dentro del ámbito de la expresión select, larelación externa trabaja, dentro de la cuál se realiza la inserción, es inaccesible. De ahí, el cambio de nombredel atributo nombre-empleado a nombre-emp. Bajo estas circunstancias es más natural emplear declaraciones,las cuales se introducen en el Capítulo 6.

4.16 Descríbanse las circunstancias en que se debería utilizar SQL incorporado, en lugar de SQL o de unlenguaje de programación de propósito general.

Respuesta: Escribir consultas en SQL es generalmente más fácil que codificar las mismas consultas en unlenguaje de programación de propósito general. No obstante, no todos los tipos de consultas se puedenescribir en SQL. Además, acciones no declarativas tales como la impresión de un informe, interactuando conun usuario o enviando los resultados de una consulta a un interface de usuario gráfico, no puede hacerse desdedentro de SQL. Bajo circunstancias en las que se desea el mejor de ambos mundos, se puede elegir SQLincorporado o SQL dinámico, en vez de emplear sólo SQL o un lenguaje de programación de propósitogeneral.

El SQL incorporado tiene la ventaja de que los programas son menos complicados, dado que evita elagrupamiento de las llamadas de las funciones ODBC o JDBC, pero requiere un procesador especial.

Page 51: Manual de Apoyo Al Profesor

CAPITULO 5

OTROS LENGUAJES RELACIONALES

En este capítulo se estudian dos lenguajes relacionales adicionales, QBE y Datalog. QBE, basado en el cálculorelacional de dominios, constituye la base para los lenguajes de consultas, soportado por un gran número desistemas de bases de datos y diseñado para ordenadores personales, tales como Microsoft Access, FoxPro, etc.Desafortunadamente no hay ningún estándar para QBE; nuestro alcance está basado en la descripción originaldel QBE. La descripción tendrá que ser completada mediante el material de las guías de usuario de lossistemas de bases de datos específicos que están siendo empleados. Uno de los puntos a tener en cuenta es lasemántica precisa de las operaciones de agregación, la cual es particularmente no estándar.

El lenguaje Datalog tiene varias similitudes con Prolog, que algunos estudiantes pueden haberestudiado en otros cursos. Datalog se diferencia de Prolog en que su semántica es puramente declarativa, enoposición a la semántica operacional de Prolog. Es importante enfatizar la diferencias, dado que la semánticadeclarativa es capaz de utilizar estrategias de evaluación de consultas eficientes. Hay varias implantaciones deDatalog disponibles en el dominio publico, tales como el sistema Coral de la Universidad de Wisconsin –Madison, y XSB del State University de New York, Stony Brook, los cuales se pueden emplear para ejerciciosde programación. El sistema Coral también soporta objetos complejos tales como relaciones anidadas(tratadas posteriormente en el Capítulo 9). Consultar la sección Herramientas, al final del Capítulo 5, para lasURLs de estos sistemas.

Cambios a la tercera edición:

La sintaxis y semántica, de agregaciones y actualizaciones QBE, se han modificado para simplificar lasemántica y eliminar algunas ambigüedades en las semánticas anteriores. La versión de QBE soportada porMicrosoft Access se ha tratado brevemente. Se ha eliminado Quel.

Page 52: Manual de Apoyo Al Profesor

Ejercicios

5.1 Considérese la base de datos de seguros de la Figura 5.14, donde las claves primarias estánsubrayadas. Formúlense las siguientes consultas en QBE:a. Buscar el número total de las personas cuyos coches se han visto involucrados en un accidente en1989.b. Buscar el número de accidentes en los que se ha visto involucrado un coche perteneciente a“Santos”.c. Añadir un nuevo accidente a la base de datos; supóngase cualquier valor para los atributosnecesarios.d. Borrar el Mazda de “Santos”.e. Actualizar a 3.000 € el importe de daños del coche de matrícula "2002BCD", en el accidente connúmero de informe "AR2197".

Respuesta: La relación participado relaciona coches y accidentes. Supóngase que el atributo fecha tieneel formato “YYYY-MM-DD”.a. Buscar el número total de las personas cuyos coches se han visto involucrados en un accidente en1989.

accidente número-informe fecha lugarinforme fecha

participado id-conductor coche número-informe importe-dañosP.CNT.UNQ.ALL informe

condicionesfecha =( � 1989-00-00 and�� 1989-12-31 )

b. Buscar el número de accidentes en los que se ha visto involucrado un coche perteneciente a“Santos”.

persona id-conductor nombre direcciónconductor Santos

participado id-conductor coche número-informe importe-dañosconductor P.CNT.ALL

c. Añadir un nuevo accidente a la base de datos; supóngase cualquier valor para los atributosnecesarios.Se supone que el conductor era “Santos”, aunque podría haber sido cualquier otro. También se supone que“Santos” sólo tiene un Toyota.

acidente número-informe fecha lugarI. 4007 1997-01-01 Berkeley

persona (id-conductor, nombre, dirección)coche (matrícula, modelo, año)accidente (número-informe, fecha, lugar)posee (id-conductor, matrícula)participado (id-conductor, coche, número-informe, importe-daños)

Figura 5.14. Base de datos de seguros.

Page 53: Manual de Apoyo Al Profesor

participado id-conductor coche número-informe importe-dañosI. conductor matrícula 4007 3000

posee id-conductor matrículaconductor matrícula

coche matrícula año modelomatrícula año Toyota

persona id-conductor nombre direcciónconductor Santos

d. Borrar el Mazda de “Santos”.

persona id-conductor nombre direcciónconductor Santos

posee id-conductor matrículaconductor matrícula

coche matrícula año modeloD. matrícula Mazda

e. Actualizar a 3.000 € el importe de daños del coche de matrícula "2002BCD", en el accidente connúmero de informe "AR2197".

posee id-conductor matrículaconductor "2002BCD"

participado id-conductor coche número-informe importe-dañosconductor “AR2197” U.3000

5.2 Considérese la base de datos de empleados de la Figura 5.15. Proporcionar expresiones en QBE yDatalog para cada una de las siguientes consultas:a. Averiguar los nombres de todos los empleados que trabajan para el Banco Importante.b. Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el BancoImportante.c. Averiguar el nombre, dirección y ciudad de residencia, de todos los empleados que trabajan para elBanco Importante y ganan mas de 10.000€ anuales.d. Buscar todos los empleados que viven en la ciudad de la empresa para la que trabajan.e. Buscar todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes.f. Buscar todos los empleados que no trabajan en el Banco Importante.g. Buscar todos los empleados que ganan más que cualquier empleado del Banco Pequeño.h. Supóngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas consede en todas las ciudades en las que tiene sede el Banco Pequeño.

Page 54: Manual de Apoyo Al Profesor

Respuesta:

a. Averiguar los nombres de todos los empleados que trabajan para el Banco Importante.i.

trabaja nombre-persona nombre-compañía sueldoP._x Banco Importante

ii. consulta(X) :- trabaja(X, “Banco Importante”, Y)

b. Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el BancoImportante.i.

trabaja nombre-persona nombre-compañía sueldo_x Banco Importante

empleado nombre-persona calle ciudadP._x P._y

ii. consulta (X, Y ) :- empleado (X, Z, Y ), trabaja(X, “Banco Importante”, W)

c. Averiguar los nombres, direcciones y ciudades de residencia de todos los empleados que trabajanpara el Banco Importante y ganan más de 10.000 € anuales. Si las personas pueden trabajar para variascompañías las soluciones siguientes únicamente listarán aquellas que ganen más de 10.000 € anuales, sólo del“Banco Importante”.i.

empleado nombre-persona calle ciudadP._x P._y P._z

trabaja nombre-persona nombre-compañía sueldo_x Banco Importante > 10.000

ii.consulta (X, Y, Z ) :- vive (X, Z, Y ), trabaja(X, “Banco Importante”, W)

W > 10.000

d. Encontrar todos los empleados que viven en la misma ciudad en que está localizada la compañíapara la que trabajan.i.

empleado nombre-persona calle ciudadP._x _y

trabaja nombre-persona nombre-compañía sueldo_x _c

compañía nombre-compañía ciudad_ c _y

ii. consulta (X) :- empleado (X, Y, Z), trabaja(X, V, W), compañía(V, Z)

Page 55: Manual de Apoyo Al Profesor

e. Buscar todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes.i.

empleado nombre-persona calle ciudadP._x _s _c_y _s _c

jefe nombre-persona nombre-jefex y

ii. consulta (X) :- vive (X, Y, Z), jefe (X, V ), vive (V, Y, Z)

f. Buscar todos los empleados que no trabajan en el Banco Importante. Las soluciones siguientesasumen que todas las personas trabajan para una compañía.i.

trabaja nombre-persona nombre-compañía sueldoP._x ¬ Banco Importante

ii. consulta (X) :- trabaja (X, Y, Z), Y � “Banco Importante”

Si se permite que aparezcan personas en la base de datos (por ejemplo en empleado) pero que no aparezcan entrabaja, o si las personas pueden trabajar para más de una compañía, la soluciones se complican ligeramente.Se presentan a continuación:i.

empleado nombre-persona calle ciudadP._x

trabaja nombre-persona nombre-compañía sueldo¬ _x Banco Importante

ii.consulta (X) :- empleado (X, Y, Z), ¬p1 (X)p1 (X) :- trabaja(X, “Banco Importante”, W)

g. Averiguar el nombre de todos los empleados que ganan más que cualquier empleado del BancoPequeño. Las soluciones siguientes asumen que todas las personas trabajan, como máximo, para unacompañía.i.

trabaja nombre-persona nombre-compañía sueldoBanco Pequeño _y

P._x > MAX.ALL._y

o

trabaja nombre-persona nombre-compañía sueldoP._x _y

¬ Banco Pequeño > _y

Page 56: Manual de Apoyo Al Profesor

ii.consulta (X) :- trabaja (X, Y, Z), ¬p (X)p (X) :- trabaja(X, C, Y 1), trabaja(V, “Banco Pequeño”, Y ), Y >Y1

h. Supóngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas consede en todas las ciudades en las que tiene sede el Banco Pequeño.

Nota: El Banco Pequeño se incluirá en cada respuesta.i.

ubicado-en nombre-compañía ciudadBanco Pequeño _xP._c _yBanco Pequeño _y

condicionesCNT.ALL._y =CNT.ALL._x

ii.consulta (X) :- compañía(X, C), not p(X)p(X) :- compañía(X, C1), compañía(“Banco Pequeño”, C2), not compañía(X, C2)

5.3 Considérese la base de datos relacional de la Figura 5.15, donde las claves primarias estánsubrayadas. Formúlense expresiones en QBE para cada una de las consultas siguientes:a. Buscar todos los empleados que ganan más que el sueldo medio de los empleados de su empresa.b. Buscar la empresa que tiene el mayor número de empleados.c. Buscar la empresa que tiene el menor sueldo medio.d. Averiguar las compañías cuyos empleados ganan un sueldo más alto, en media, que el sueldo mediodel Banco Importante.

Respuesta:a. Buscar todos los empleados que ganan más que el sueldo medio de los empleados de su empresa.Las soluciones siguientes asumen que todas las personas trabajan sólo para una compañía.

trabaja nombre-persona nombre-compañía sueldoP. _y _x

_Y _z

condiciones_x > AVG.ALL._z

b. Buscar la empresa que tiene el mayor número de empleados.

trabaja nombre-persona nombre-compañía sueldo_x P.G._y G.

condicionesCNT.UNQ._x � MAX.CNT.UNQ.ALL._y

Page 57: Manual de Apoyo Al Profesor

c. Buscar la empresa que tiene el menor sueldo medio.

empleado (nombre-persona, calle, ciudad)trabaja (nombre-persona, nombre-compañía, sueldo)compañía (nombre-compañía, ciudad)jefe (nombre-persona, nombre-jefe)

Figura 5.15. Base de datos de empleados.

trabaja nombre-persona nombre-compañía sueldoP.G. _xG. _y

condicionesSUM.ALL._x � MIN.SUM.ALL._y

d. Encontrar las compañías cuyos empleados ganan un salario mayor, en promedio, que el salariomedio del Banco Importante.

trabaja nombre-persona nombre-compañía sueldoP.G. _xBanco Importante _y

condicionesAVG.ALL._x> AVG.ALL._y

5.4 Considérese la base de datos relacional de la Figura 5.15. Formúlense expresiones en QBE para cadauna de las consultas siguientes:a. Modificar la base de datos de forma que Santos viva en Tres Cantos.b. Dar un 10% de aumento de sueldo a todos los empleados del Banco Importante.c. Dar un 10% de aumento de sueldo a todos los jefes de la base de datos.d. Dar un 10% de aumento de sueldo a todos los jefes de la base de datos, a menos que su sueldo estépor encima de 100.000 € anuales. En tal caso, darles sólo un 3%.e. Borrar todas las tuplas de la relación trabaja para los empleados del Banco Pequeño.

Respuesta: Las soluciones suponen que cada persona sólo tiene una tupla en la relación empleado. Lassoluciones para las partes c y d suponen que cada persona trabaja, cómo máximo, para una compañía.a. Modificar la base de datos de forma que Santos viva en Tres Cantos.

empleado nombre-persona calle ciudadSantos Ávila

b. Incrementar en un 10% el sueldo de todos los empleados del Banco Importante.

trabaja nombre-persona nombre-compañía sueldoBanco Importante _x

U. _x * 1.1

Page 58: Manual de Apoyo Al Profesor

c. Proporciónese a todos los jefes de la base de datos un aumento salarial del 10%.

jefe nombre-persona nombre-jefe_x

trabaja nombre-persona nombre-compañía sueldo_x _y

U. _y * 1.1

d. Increméntese en un 10% el sueldo de todos los jefes del Banco Importante, a menos que su sueldopase a ser mayor de 100.000 €. En tales casos, incrementarlo sólo en un 3%. Se deben realizar dosoperaciones de actualización independientes. Cada operación de actualización tiene su propio conjunto detablas de estructura.Primera actualización:

jefe nombre-persona nombre-jefe_x

trabaja nombre-persona nombre-compañía sueldo_x _y

U. _y * 1.03

condiciones_y > 100000/1.1

Segunda actualización:

jefe nombre-persona nombre-jefe_x

trabaja nombre-persona nombre-compañía sueldo_x _y

U. _y * 1.1

condiciones_y � 100000/1.1

e. Borrar todas las tuplas de la relación trabaja para los empleados del Banco Pequeño.

trabaja nombre-persona nombre-compañía sueldoD. Banco Pequeño

5.5 Sean los siguientes esquemas de relación:

R = (A, B, C)S = (D, E, F)

Page 59: Manual de Apoyo Al Profesor

Considérense las relaciones r(R) y s(S). Proporciónense expresiones en QBE y Datalog equivalentes a cadauna de las siguientes consultas:

a. �A(r)b. ��B = 17 (r)c. r x sd. �A,F (��C = D (r x s))

Respuesta:a. �A(r)i.

r A B CP.

ii. consulta (X) :- r (X, Y, Z)

b. ��B = 17 (r)i.

r A B CP. 17

ii. consulta (X, Y, Z) :- r (X, Y, Z), Y = 17

c. r x si.

resultado A B C D E FP _a _b _c _d _e _f

r A B C_a _b _c

s D E F_d _e _f

ii. consulta (X, Y, Z, U, V, W) :- r (X, Y, Z), s(U, V, W)

d. �A,F (��C = D (r x s))i.

resultado A FP. _a _f

r A B C_a _c

s D E F_c _f

ii. consulta (X, Y ) :- r (X, V, W), s(W, Z, Y )

5.6 Sea R = (A, B, C) y sean r1 y r2 relaciones del esquema R. Proporcionar expresiones en QBE y

Page 60: Manual de Apoyo Al Profesor

Datalog equivalentes a cada una de las siguientes consultas:

a. r1 U r2

b. r1 r2c. r1 - r2

d. �AB (r1) |x| �BC (r2)

Respuesta:a. r1 U r2i.

resultado A B CP. _a _b _cP. _d _e _f

r1 A B C_a _b _c

r2 A B C_d _e _f

ii.consulta(X, Y, Z) :- r1 (X, Y, Z)consulta(X, Y, Z) :- r2 (X, Y, Z)

b. r1 r2i.

r1 A B CP. _a _b _c

r2 A B C_a _b _c

ii. consulta(X, Y, Z) :- r1 (X, Y, Z), r2 (X, Y, Z)

c. r1 - r2i.

r1 A B CP. _a _b _c

r2 A B C¬ _a _b _c

ii. consulta(X, Y, Z) :- r1 (X, Y, Z), no r2 (X, Y, Z)

Page 61: Manual de Apoyo Al Profesor

d. �AB (r1) |x| �BC (r2)i.

resultado A B CP. _a _b _c

r1 A B C_a _b

r2 A B C_b _c

ii. consulta(X, Y, Z) :- r1 (X, Y, V), r2 (W, Y, Z)

5.7 Sean R = (A, B) y S = (A ,C) y sean las relaciones r(R) y s(S). Escríbanse expresiones en QBE yDatalog para cada una de las consultas siguientes:

a. {<a> | b (<a, b> � r � b = 17)}b. {<a, b, c> | <a, b> � r � <a, c> � s}c. {<a> | c (<a, c> � s � b1 , b2 (<a, b1> � r � <c, b2> � r � b1 >b2 ))}

Respuesta:a. {<a> | b (<a, b> � r � b = 17)}i.

r A BP. 17

ii. consulta (X) :- r (X, 17)

b. {<a, b, c> | <a, b> � r � <a, c> � s}i.

r A B_a _b

s A C_a _c

result A B CP. _a _b _c

ii. consulta(X, Y, Z) :- r(X, Y), s(X, Z)

c. {<a> | c (<a, c> � s � b1 , b2 (<a, b1> � r � <c, b2> � r � b1 >b2 ))}i.

r A B_a >_s_c _s

s A CP._a _c

ii. consulta (X) :- s (X, Y ), r (X, Z), r (Y, W), Z > W

Page 62: Manual de Apoyo Al Profesor

5.8 Considérese la base de datos relacional de la Figura 5.12. Escríbase un programa Datalog para cadauna de las siguientes consultas:a. Buscar todos los empleados que trabajan (directa o indirectamente) bajo la dirección de “Santos”.b. Buscar las ciudades de residencia de todos los empleados que trabajan (directa o indirectamente)bajo la dirección de “Santos”.c. Buscar todas las parejas de empleados que tienen (directa o indirectamente) un jefe en común.d. Buscar todas las parejas de empleados que tienen (directa o indirectamente) un jefe en común y queestan al mismo número de niveles bajo el jefe.

Respuesta:a. Buscar todos los empleados que trabajan (directa o indirectamente) bajo la dirección de “Santos”.

consulta (X) :- p (X)p (X) :- jefe (X, “Santos”)p (X) :- jefe (X, Y ), p(Y )

b. Buscar todas las ciudades de residencia de todos los empleados que trabajan (directa oindirectamente) bajo la dirección de “Santos”.

consulta(X, C) :- p(X), empleado(X, S, C)p(X) :- jefe(X, “Santos”)p(X) :- jefe(X, Y), p(Y)

c. Buscar todas las parejas de empleados que tengan (directa o indirectamente) un jefe en común.consulta(X, Y) :- p(X, W), p(Y, W)p(X, Y) :- jefe(X, Y)p(X, Y) :-jefe(X, Z), p(Z, Y)

d. Buscar todas las parejas de empleados que tengan (directa o indirectamente) un jefe en común y queesten al mismo número de niveles de supervisión bajo el jefe en común.

consulta(X, Y) :- p(X, Y)p(X, Y) :- jefe(X, Z), jefe(Y, Z)p(X, Y) :- jefe(X, V), jefe(Y, W), p(V, W)

5.9 Escríbase una vista del álgebra relacional extendida equivalente a la regla Datalogp(A,C,D) :– q1 (A,B), q2 (B,C), q3 (4,B), D = B + 1 .

Respuesta: Asúmase que q1, q2 y q3 son are ejemplares del esquema (A1, A2).La vista del álgebra relacionales

create view P as� �q1.A1,q2.A2,q1.A2+1(�q3.A1=4 � q1.A2=q2.A1 � q1.A2=q3.A2(q1 × q2 × q3))

5.10 Descríbase cómo una regla de Datalog arbitraria puede expresarse como una vista del álgebrarelacional extendida.

Respuesta: Una regla de Datalog tiene dos partes, la cabeza y el cuerpo. El cuerpo es una lista deliterales separados por comas. Un literal positivo tiene la forma p(t1, t2, . . . , tn ), done p es el nombre de unarelación con n atributos y t1, t2, . . . , tn son constantes o variables. Un literal negativo tiene la forma ¬p(t1, t2, .. . , tn), donde p tiene n atributos. En el caso de literales aritméticos, p será un operador aritmético como >, =etc.

Se consideran sólo reglas seguras; consultar el Apartado 5.2.4 para las definiciones de seguridad delas reglas de Datalog. Además, se asume que cada variable que aparece en un literal aritmético también lohace en un literal no aritmético positivo.

Page 63: Manual de Apoyo Al Profesor

Considérese primero una regla sin ningún literal negativo. Para expresar la regla como una vista delálgebra relacional extendida, se escribe como una reunión de todas las relaciones referidas en los literales noaritméticos (positivos) del cuerpo, seguidos por una selección. La condición de selección es una conjunciónque se obtiene como sigue. Si p1 (X, Y ), p2 (Y, Z) tienen lugar en el cuerpo, donde p1 es del esquema (A, B) yp2 del (C, D), entonces p1.B = p2.C debería pertenecer a la conjunción. Los literales aritméticos puedenentonces añadirse a la condición.

A modo de ejemplo, la consulta Datalog

consulta(X, Y) :- trabaja(X, C, S1), trabaja(Y, C, S2), S1 > S2, jefe(X, Y)

se convierte en la siguiente expresión de álgebra relacional:

E1 = �(w1.nombre-compañía = w2.nombre-compañía � w1.sueldo > w2.sueldo �jefe.nombre-persona = w1.nombre-persona � jefe.nombre-jefe=w2.nombre-persona)

(��w1(trabaja) × �w2(trabaja) × jefe)

Supóngase que la regla dada ahora tiene literales negativos. Primero supóngase que no hay constantes en losliterales negativos; recuérdese que todas las variables de un literal negativo deben, también, aparecer en unliteral positivo. Sea ¬q(X, Y ) el primer literal negativo del esquema (E, F). Sea Ei la expresión del álgebrarelacional obtenida después de que se hayan tratado todos los literales, positivos y negativos. Para tratar esteliteral negativo se genera la expresión

Ej = Ei |x| (�A1,A2(Ei) - q)

donde A1 y A2 son los nombres de atributo de dos columnas en Ei que se corresponden, respectivamente, a X eY.

Considérense ahora que aparecen constantes en un literal negativo. Supóngase un literal negativo dela forma ¬q(a, b, Y ), donde a y b son constantes. Entonces, en la expresión anterior que define Ej ,sereemplaza q por �A1=a � A2=b(q).

Procediendo de una misma manera, se procesan los literales negativos restantes, resultandofinalmente en una expresión Ew.

Finalmente, los atributos deseados se proyectan de la expresión. Los atributos en Ew,correspondientes a las variables en la cabeza de la regla, se convierten en los atributos de la proyección.

Así, finalmente, la regla de ejemplo se convierte en la vista:

create view consulta as�w1.nombre-persona,w2.nombre-persona (E2)

Si hay reglas múltiples para el mismo predicado, la expresión del álgebra relacional que define la vista es launión de las correspondientes expresiones a las reglas individuales.

La conversión anterior se puede ampliar para manejar reglas que cumplan algunas formas másdébiles de las condiciones de seguridad y, en algunos casos limitados, donde la variables en predicadosaritméticos no aparezcan en un literal no aritmético positivo.

Page 64: Manual de Apoyo Al Profesor

CAPITULO 6

INTEGRIDAD Y SEGURIDAD

Este capítulo presenta varios tipos de restricciones de integridad, incluyendo restricciones de los dominios,restricciones de integridad referencial, asertos y disparadores, así como seguridad y autorización. Lasrestricciones de integridad referencial y las restricciones de los dominios, son un importante aspecto de lasespecificaciones del diseño de una base de datos relacional. Los asertos están viendo incrementar su empleo.Los disparadores se usan ampliamente, aunque cada base de datos soporta su propia sintaxis y semántica paradisparadores; los disparadores estaban estandarizados como parte de SQL:1999 y es de esperar que las basesde datos faciliten soporte para disparadores SQL:1999.

Las dependencias funcionales ahora se muestran como parte de la normalización, en vez de comoparte del capítulo de las restricciones de integridad, tal y como se hacía en la tercera edición. La razón delcambio es que se emplean casi exclusivamente en el diseño de bases de datos y ningún sistema de base dedatos, que se sepa, soporta dependencias funcionales como las restricciones de integridad. Tratándolos en elcontexto de la normalización, se ayuda a motivar a los estudiantes a dedicar esfuerzo para comprender laproblemática del razonamiento con dependencias funcionales.

La seguridad es el principal asunto por sí mismo. Dado que cualquier sistema es solamente tanseguro como lo es su componente más débil, un diseñador de sistemas debe considerar todos los aspectos deseguridad. Este capítulo se centra sólo en los aspectos de seguridad que son específicos de las bases de datos.En un curso posterior, esta materia se puede completar con la discusión de cuestiones de seguridad en lossistemas operativos y en los sistemas distribuidos.

Cambios a la tercera edición:

El tratamiento de los disparadores está ahora basado en el estándar SQL:1999. En el momento de lapublicación de la tercera edición los disparadores no estaban estandarizados. La noción de funciones para laautorización se ha introducido en esta edición, ahora que es parte del estándar SQL:1999. El tratamiento de laencriptación ha sido actualizado para cubrir los desarrollos recientes.

Page 65: Manual de Apoyo Al Profesor

Ejercicios

6.1 Complétese la definición del LDD de SQL de la base de datos de la Figura 6.2, para incluir lasrelaciones préstamo y prestatario.

Respuesta:create table préstamo

(número-préstamo char(10),nombre-sucursal char(15),importe integer,primary key (número-préstamo),foreign key (nombre-sucursal) references sucursal)

create table prestatario(nombre-cliente char(20),número-préstamo char(10),primary key (nombre-cliente, número-préstamo),foreign key (nombre-cliente) references cliente,foreign key (número-préstamo) references préstamo)

Declarar como clave primaria de la relación prestatario a la pareja nombre-cliente, número-préstamo, aseguraque la relación no contenga duplicados.

6.2 Considérese la siguiente base de datos relacional:

empleado (nombre-empleado, calle, ciudad)trabaja (nombre-empleado, nombre-compañía, sueldo)compañía (nombre-compañía, ciudad)jefe (nombre-empleado, nombre-jefe)

Se da una definición en el LDD de SQL de esta base de datos. Identifíquense las restricciones de integridadreferencial que deben cumplirse, e inclúyanse en la definición del LDD.

Respuesta:create table empleado

(nombre-persona char(20),calle char(30),ciudad char(30),primary key (nombre-persona))

create table trabaja(nombre-persona char(20),nombre-compañía char(15),sueldo integer,primary key (nombre-persona),foreign key (nombre-persona) references empleado,foreign key (nombre-compañía) references compañía)

create table compañía(nombre-compañía char(15),ciudad char(30),primary key (nombre-compañía))

create table jefe

Page 66: Manual de Apoyo Al Profesor

(nombre-persona char(20),nombre-jefe char(20),primary key (nombre-persona),foreign key (nombre-persona) references empleado,foreign key (nombre-jefe) references empleado)

Nótese que son posibles tipos de datos alternativos. Se pueden aceptar otras elecciones para los atributos notnull.

6.3 Las restricciones de integridad referencial, tal y como se han definido en este capítulo, implicanexactamente dos relaciones. Considérese una base de datos que incluya las siguientes relaciones:

trabajador-fijo (nombre, despacho, teléfono, sueldo)trabajador-tiempo-parcial (nombre, sueldo-por-hora)dirección (nombre, calle, ciudad)

Supóngase que se desea exigir que cada nombre que aparece en dirección, aparezca en trabajador-fijo o entrabajador-tiempo-parcial, pero no necesariamente en ambos.a. Propóngase una sintaxis para expresar esta restricción.b. Discútanse las acciones que el sistema debe realizar para aplicar una restricción de este tipo.

Respuesta:a. Por sencillez, se presenta una variante de la sintaxis del SQL. Como parte de la expresión createtable para dirección, se incluye

foreign key (nombre) references trabajador-fijo o trabajador-tiempo-parcial

b. Para reforzar esta ligadura, siempre que una tupla se inserte en la relación dirección, se debe haceruna búsqueda sobre el valor nombre en la relación trabajador-fijo y (si falla la búsqueda) en la relacióntrabajador-tiempo-parcial (o viceversa).

6.4 SQL permite la dependencia de una clave externa para referirse a la misma relación, como en elejemplo siguiente:

create table jefe(nombre-empleado char(20) not null,nombre-jefe char(20),primary key nonbre-empleado,foreign key (nombre-jefe) references jefe

on delete cascade )

Aquí, nombre-empleado es una clave para la tabla jefe, lo que significa que cada empleado tiene comomáximo un jefe. La orden de clave externa requiere que cada jefe también sea un empleado. Explíquese quésucede exactamente cuando se borra una tupla de la relación jefe.

Respuesta: Las tuplas de todos los empleados del jefe, a todos los niveles, también se borran. Esto sucede enuna serie de pasos. El borrado inicial disparará el de todas las tuplas correspondientes a los empleadosdirectos del jefe. Estos borrados originarán los borrados de las tuplas de los empleados del segundo nivel, yasí sucesivamente, hasta sean borradas, directa o indirectamente, todas las tuplas de empleados.

6.5 Supóngase que hay dos relaciones r y s, tales que la clave externa B de r hace referencia a la claveprimaria A de s. Descríbase la manera en que puede utilizarse el mecanismo de los disparadores paraimplementar la opción on delete cascade, cuando se borra una tupla de s.

Page 67: Manual de Apoyo Al Profesor

Respuesta: Se definen disparadores para cada relación cuya clave primaria está referida por la clave externade alguna otra relación. El disparador se activaría siempre que una tupla se borre de la relación referenciada.La acción realizada por el disparador consistiría en recorrerse todas las relaciones referenciadas y borrar todaslas tuplas en aquellas cuyo valor del atributo clave externa sea el mismo que el del atributo clave primaria, dela tupla borrada en la relación de referencia. Estos conjuntos de disparadores se ocuparán de la operación ondelete cascade.

6.6 Escríbase un aserto para la base de datos bancaria, que asegure que el valor del activo de la sucursalde Navacerrada sea igual a la suma de todos los importes prestados por esa sucursal.

Respuesta: El nombre del aserto es arbitrario. Se ha elegido el nombre Navacerrada. Nótese que al aplicar elaserto sólo a la sucursal de Navacerrada, se debe restringir la atención sólo a las tuplas de Navacerrada en larelación sucursal, en vez de escribir una restricción sobre la relación entera.

create assertion Navacerrada check(not exists (select *

from sucursalwhere nombre-sucursal = ’Navacerrada’ and

activo � (select sum (importe)from préstamowhere nombre-sucursal = ’Navacerrada’)))

6.7 Escríbase una disparador SQL que lleve a cabo la siguiente acción: Al borrar una cuenta, para cadapropietario de la cuenta, compruébese si tiene algunas otras cuentas y, si no es así, bórresele de la relaciónimpositor.

Respuesta:create trigger disparador-comprobación-borrado after delete on cuentareferencing old row as fila-antiguafor each rowdelete from impositorwhere impositor.nombre-cliente not in

( select nombre-cliente from impositorwhere número-cuenta<> fila-antigua.número-cuenta )

end

6.8 Considérese la vista sucursal-cliente definida como sigue:

create view sucursal-cliente asselect nombre-sucursal, nombre-clientefrom impositor, cuentawhere impositor.número-cuenta = cuenta.número-cuenta

Supóngase que la vista esta materializada, es decir, la vista se calcula y se almacena.Escríbanse reglas activas para el mantenimiento de la vista, es decir, para mantenerla actualizada según lasinserciones y borrados de impositor o cuenta. No preocuparse de las actualizaciones.

Respuesta: Para insertar en la vista materializada sucursal-cliente, se debe definir un disparador de base dedatos sobre las inserciones en impositor y cuenta. Se asume que el sistema de base de datos hace uso de unavinculación inmediata para la ejecución de las reglas. Además, se supone que la versión actual de una relaciónse denota por el propio nombre de la relación, mientras que el conjunto de tuplas recién insertadas se denotacalificando el nombre de la relación con el prefijo – insertado.Las reglas activas para esta inserción se dan a continuación

Page 68: Manual de Apoyo Al Profesor

define trigger insertar en sucursal-cliente vía impositorafter insert on impositorreferencing new table as insertado for each statementinsert into sucursal-cliente

select nombre-sucursal, nombre-clientefrom insertado,cuentawhere insertado.número-cuenta = cuenta.número-cuenta

define trigger insertar en sucursal-cliente vía cuentaafter insert on cuentareferencing new table as insertado for each statementinsert into sucursal-cliente

select nombre-sucursal, nombre-clientefrom impositor, insertedwhere impositor.número-cuenta = insertado.número-cuenta

Nótese que si la vinculación de la ejecución fuese diferida (en vez de inmediata), entonces elresultado de la reunión del conjunto de las nuevas tuplas de cuenta con el de las nuevas tuplas de impositor,habría sido insertado por ambas reglas activas, duplicando las correspondientes tuplas en sucursal-cliente.

El borrado de una tupla desde sucursal-cliente es similar a la inserción, excepto en que un borradodesde impositor o cuenta implicará la unión natural de estas relaciones para tener un menor número de tuplas.Se denota el conjunto de tuplas recién borradas calificando el nombre de la relación con la palabra claveborrado.

define trigger borrar desde sucursal-cliente vía impositorafter delete on impositorreferencing old table as borrado for each statementdelete from sucursal-cliente

select nombre-sucursal, nombre-clientefrom borrado,cuentawhere borrado.número-cuenta = cuenta.número-cuenta

define trigger borrar desde sucursal-cliente vía cuentaafter delete on cuentareferencing old table as borrado for each statementdelete from sucursal-cliente

select nombre-sucursal, nombre-clientefrom impositor, borradowhere impositor.número-cuenta = borrado.número-cuenta

6.9 Confecciónese una lista de los problemas de seguridad de un banco. De cada elemento de la lista,especifíquese si afecta a la seguridad física, a la personal, a la del sistema operativo o a la de las bases dedatos.

Respuesta: Considérese el problema de proteger la base de datos del banco.Algunas medidas de seguridad, a cada uno de los cuatro niveles, se mencionan seguidamentea. Nivel físico – El sistema desde el que se puede acceder y modificar a las relaciones, debería situarseen una habitación cerrada, bien guardada e inexpugnable.b. Nivel humano – Una apropiada política de transferencia de llaves debería reforzarse, para restringirel acceso a las “dependencias del sistema” anteriormente mencionadas. Las contraseñas para poder acceder ala base de datos deberían ser conocidas sólo por los usuarios de confianza.c. Nivel de sistema operativo – Las contraseñas deberían ser difíciles de imaginar y modificarseregularmente. Ningún usuario debería ser capaz de obtener accesos no autorizados al sistema, debido un fallodel software en el sistema operativo.d. Nivel de sistema de base de datos . Los usuarios deberían estar autorizados a acceder sólo a las

Page 69: Manual de Apoyo Al Profesor

partes pertinentes de la base de datos. Por ejemplo, debería permitirse al cajero de un banco modificar losvalores del saldo de los clientes, pero no el de su propio sueldo.

6.10 Utilizando las relaciones de la base de datos bancaria de ejemplo, escríbase una expresión SQL paradefinir las siguientes vistas:a. Una vista que contenga los números de cuenta y los nombres de los clientes (pero no los saldos) detodas las cuentas de la sucursal de El Escorial.b. Una vista que contenga el nombre y la dirección de todos los clientes que tengan cuenta en el banco,pero no tengan ningún préstamo.c. Una vista que contenga el nombre y el saldo medio de la cuenta de cada cliente de la sucursal deCollado Villalba.

Respuesta:a.

create view El-Escorial asselect número-cuenta, nombre-clientefrom impositor, cuentawhere nombre-sucursal = ’El Escorial’ and

impositor.número-cuenta = cuenta.número-cuentab.

create view sin-deudas asselect * from clientewhere nombre-cliente in

(select nombre-clientefrom impositor)minus(select nombre-clientefrom prestatario)

c.create view saldo-medio asselect nombre-cliente, avg(saldo)from impositor, cuentawhere impositor.número-cuenta = cuenta.número-cuenta

y nombre-sucursal = ’Collado Villalba’group by nombre-cliente

6.11 Para cada una de las vistas definidas en el Ejercicio 6.10, explíquese la manera en que debenrealizarse las actualizaciones (si es que se deben permitir). Sugerencia: Consultar la discusión de las vistas delCapítulo 3.

Respuesta: Para insertar (número-cuenta, nombre) en la vista El-Escorial , se inserta la tupla ( El Escorial,número-cuenta, nulo) en la relación cuenta y la tupla (nombre, número-cuenta) en la relación impositor.Actualizar las vistas sin-deudas y saldo-medio presenta serios problemas. Si se inserta en la vista sin-deudas,el sistema debe reflejar la inserción si el cliente tiene un préstamo. El coste de la actualización a través de estavista es tan alto, que la mayoría de los sistemas lo rechazarían. La vista saldo-medio no puede actualizarse,dado que el resultado de una operación de agregación depende de varias tuplas, no sólo de una.

6.12 En el Capítulo 3 se describió el uso de las vistas para facilitar el acceso a la base de datos de losusuarios que sólo necesiten ver una parte de la misma. En este capítulo se ha descrito el uso de las vistascomo mecanismo de seguridad. ¿Pueden entrar en conflicto estas dos finalidades de las vistas? Explíquese larespuesta.

Respuesta: Generalmente un mecanismo de seguridad y vistas bien diseñado, puede evitar conflictos entre la

Page 70: Manual de Apoyo Al Profesor

facilidad de los accesos y la seguridad. Sin embargo, como se muestra en los ejemplos siguientes, los dospropósitos entran en conflicto si los mecanismos no se han diseñado cuidadosamente.

Supóngase que se tiene una base de datos de empleados y un usuario cuya vista implica los datos deempleados que ganan menos de 10.000€. Si este usuario inserta al empleado Santos, cuyo sueldo es 9.000 €,pero accidentalmente teclea 90.000€, diversos sistemas de bases de datos existentes aceptarán estaactualización como válida, a través de una vista. Sin embargo, el mecanismo de seguridad impedirá que elusuario acceda a borrar esta tupla errónea.

6.13 ¿Cuál es la finalidad de tener categorías diferentes para la autorización de índices y para la derecursos?

Respuesta: Las autorizaciones de índices y recursos deberían ser categorías especiales que permitan adeterminados usuarios crear relaciones (y los índices para operar sobre ellas), al impedir que estasoperaciones, lentas y que modifican el esquema, estén disponibles para muchos usuarios. Separar lasautorizaciones de índices y recursos permite a un usuario construir un índice sobre relaciones existentes, porejemplo por razones de optimización, pero denegarle el derecho a crear nuevas relaciones.

6.14 Los sistemas de bases de datos que guardan cada relación en un archivo diferente del sistemaoperativo pueden utilizar los esquemas de seguridad y de autorización del sistema operativo, en lugar dedefinir un esquema especial propio. Discútanse las ventajas e inconvenientes de ese enfoque.

Respuesta: Los sistemas de bases de datos tienen requerimientos especiales que son típicamente másrefinados que la mayoría de los sistemas operativos. Por ejemplo, un usuario sencillo puede tener diferentesprivilegios sobre diferentes ficheros en todo el sistema, incluyendo modificaciones de índices y atributos que,generalmente, los sistemas de ficheros no controlan. La ventaja de emplear los mecanismos de seguridad delos sistemas operativos es que simplifican los sistemas de bases de datos, y se pueden usar para simples(leer/escribir) medidas de seguridad.

6.15 ¿Cuáles son las dos ventajas de cifrar los datos guardados en una base de datos?

Respuesta:a. Los datos cifrados permiten que usuarios autorizados accedan a los datos, sin preocuparse que otrosusuarios o el administrador del sistema consigan cualquier información.b. La encriptación de los datos puede simplificar o incluso fortalecer otros mecanismos deautorización. Por ejemplo, la distribución de las claves criptográficas sólo entre usuarios de confianza es,tanto una manera sencilla de controlar los accesos de lectura, como una capa adicional de seguridad sobre laque ofrecen las vistas.

6.16 Quizás los elementos de datos más importantes de cualquier sistema de bases de datos sean lascontraseñas que controlan el acceso a la base de datos. Propóngase un esquema para guardar de manerasegura las contraseñas. Asegúrese de que el esquema permita al sistema comprobar las contraseñasproporcionadas por los usuarios que intenten iniciar una sesión en el mismo.

Respuesta: Una manera de almacenar contraseñas sería cifrarlas y, posteriormente, usar un índice asociativosobre el identificativo de usuario. El identificativo de usuario se puede emplear para acceder fácilmente a lacontraseña cifrada. La contraseña empleada en un intento de conexión se cifra y compara con la encriptaciónde la contraseña correcta almacenada. Una ventaja de este plan es que las contraseñas no se almacenan entexto transparente y que, incluso, no es necesario que exista código para el descifrado.

Page 71: Manual de Apoyo Al Profesor

CAPITULO 7

DISEÑO DE BASES DE DATOS RELACIONALES

Este capítulo presenta los principios del diseño de bases de datos relacionales. Los estudiantes universitariosfrecuentemente encuentran difícil este capítulo. Es aceptable cubrir solamente los Apartados 7.1, 7.2 y 7.4,para aquellas clases que encuentren la materia particularmente difícil. Sin embargo, un cuidadoso estudio delas dependencias y normalizaciones de los datos, es una buena manera de introducir a los estudiantes a losaspectos formales de la teoría de bases de datos relacionales.

Hay muchas maneras de hacer constar las definiciones de las formas normales. Se ha elegido unestilo que, pensamos, es el más fácil de presentar y el que más claramente transmite la intuición de las formasnormales.

Cambios a la tercera edición:

Hay muchos cambios a este capítulo desde la tercera edición. La 1FN se define ahora formalmente. Lasdependencias funcionales se tratan en este capítulo, en lugar de hacerlo en el Capítulo 6. La razón es que lanormalización aporta la motivación real para las dependencias funcionales, dado que se emplean sobre todopara la normalización.Se ha descrito un procedimiento simplificado para la inferencia de la dependencia funcional, basado en elcierre de atributos y se aportan procedimientos simplificados para la comprobación de las formas normales.La cobertura de la teoría de las dependencias multi valoradas y las formas normales más allá de la 4FN (esdecir, PJNF y DKNF) ha sido trasladada al Apéndice C (el cuál está disponible en la Web, no en el libroimpreso).El proceso de diseño de esquemas relacionales se ha descrito significativamente con mayor detalle, además dealgunos problemas de diseño que no se perciben mediante los procesos de normalización usuales.

Page 72: Manual de Apoyo Al Profesor

Ejercicios

7.1 Explíquese qué se entiende por repetición de la información e imposibilidad de representación de lainformación. Explíquese el motivo por el que estas propiedades pueden indicar un mal diseño de bases dedatos relacionales.

Respuesta:• Repetición de información es una condición en una base de datos relacional, donde los valores de unatributo se determinan por los valores de otro en la misma relación y, ambos valores, se repiten a través de larelación.Esto es un mal diseño de base de datos relacional, porque incrementa el almacenamiento necesario para larelación y hace más difícil la actualización de la relación.

• Incapacidad para representar información es una condición donde una relación entre sólo un subconjuntopropio de los atributos en una relación. Esto es mal diseño de base de datos relacional porque todos losatributos sin relación deben rellenarse con valores nulos, de lo contrario una tupla sin información de relaciónno se puede insertar en la relación.

• Pérdida de información es una condición de una base de datos relacional, que resulta de la descomposiciónde una relación en dos, que no se pueden combinar para recrear la relación original. Es un mal diseño de basede datos relacional porque ciertas consultas que no se pueden responder empleando la relación reconstruida,podrían haber sido contestadas empleando la relación original.

7.2 Supóngase que se descompone el esquema R = (A, B, C, D, E) en

(A, B, C)(A, D, E).

Demuéstrese que esta descomposición es una descomposición de reunión sin pérdida, si se cumple elsiguiente conjunto F de dependencias funcionales:

A � BCCD � EB � DE � A

Respuesta: Una descomposición {R1, R2} es una descomposición de reunión sin pérdida si R1 R2 � R1 o R1

R2 � R2. Sea R1 = (A, B, C), R2 = (A, D, E) y R1 R2 = A. Dado que A es una clave candidata (véase elEjercicio 7.11), por lo tanto R1 R2 � R1.

7.3 Indíquese el motivo de que ciertas dependencias funcionales se denominen dependencias funcionalestriviales.

Respuesta: Ciertas dependencias funcionales se denominan triviales porque son cumplidas por todas lasrelaciones.

7.4 Indíquense todas las dependencias funcionales que satisface la relación de la Figura 7.21.

Respuesta: Las dependencias funcionales no triviales son: A � B y C � B y una dependencia lógicaimplícita: AC � B . Hay 19 dependencias funcionales triviales de la forma � � �, donde � � �. C nodetermina funcionalmente a A, porque las tuplas primera y tercera tienen valores iguales de C pero diferentesde A. La mismas tuplas también muestran que B no determina funcionalmente a A. Igualmente, A no

Page 73: Manual de Apoyo Al Profesor

determina funcionalmente a C, porque las primeras dos tuplas tienen valores iguales de A pero diferentes deC. La mismas tuplas también muestran que B no determina funcionalmente a C.

7.5 Utilícese la definición de dependencia funcional para argumentar que cada uno de los axiomas deArmstrong (reflexividad, aumentatividad y transitividad) es válido.

Respuesta: La definición de dependencia funcional es: � � � contiene sobre R si en cualquier relación legalr(R), para todos los pares de tuplas t1 y t2 en r tales que t1[�] = t2[�], es también el caso que t1[�] = t2[�].

Regla de la reflexividad: si � es un conjunto de atributos y � � �, entonces � � �.Asúmase que t1 y t2 tales que t1[�] = t2[�]

t1[�] = t2[�] dado que � � �� � � definición de FD

Regla de la aumentatividad: si � � � y � es un conjunto de atributos, entonces �� � ��.Asúmase que t1 y t2 tales que t1[��] = t2[��]

t1[�] = t2[�] � � ��t1[�] = t2[�] � � ��t1[�] = t2[�] definición de � � �t1[��] = t2[��] �� = ������� � ��definición de FD

Regla de la transitividad: si � � � y � � �, entonces � � �.Asúmase que t1 y t2 tales que t1[�] = t2[�]

t1[�] = t2[�] definición de � � �t1[�] = t2[�] definición de � � �� � � definición de FD

7.6 Explíquese el modo en que las dependencias funcionales pueden utilizarse para indicar lo siguiente:• Existe un conjunto de relaciones de uno a uno entre los conjuntos de entidades cuenta y cliente.• Existe un conjunto de relaciones varios a uno entre los conjuntos de entidades cuenta y cliente.

Figura 7.21. Relación del Ejercicio 7.4.

Respuesta: Supongamos que Pk(r) denota el atributo clave primaria de la relación r.• Las dependencias funcionales Pk(cuenta)�Pk (cliente) y Pk(cliente) � Pk(cuenta) indican una relación deuno a uno porque dos tuplas cualesquiera con el mismo valor de cuenta, deben tener el mismo valor de clientey dos tuplas cualesquiera de acuerdo en cliente, deben tener el mismo valor de cuenta.

• La dependencia funcional Pk(cuenta)�Pk (cliente) indica una relación de muchos a uno, dado que cualquiervalor de cuenta que se repita tendrá el mismo valor de cliente, pero muchos valores de cuenta pueden tener elmismo valor de cliente.

Page 74: Manual de Apoyo Al Profesor

7.7 Considérese la siguiente regla propuesta para las dependencias funcionales: Si � � � y � � �entonces � � �. Pruébese que esta regla no es segura mostrando una relación r que satisfaga � � � y � � �,pero no cumpla � � �.

Respuesta: Considérese la siguiente regla: si A � B y C � B, entonces A � C. Así, � = A, � = B, � = C. Lasiguiente relación r es un contra ejemplo para la regla.

r: A B Ca1 b1 c1

a1 b1 c2

Nota: A � B y C � B, (dado que ninguna de las 2 tuplas tiene el mismo valor de C, C � B es unatrivialidad). Sin embargo, no es el caso que A � C dado que el mismo valor de A está en dos tuplas, pero elvalor de C en esas tuplas difiere.

7.8 Utilícense los axiomas de Armstrong para probar la seguridad de la regla de la unión. (Sugerencia:utilícese la regla de la aumentatividad para probar que, si � � �, entonces � � ��.Aplíquese nuevamente laregla de la aumentatividad, empleando � � �, y luego aplíquese la regla de la transitividad).

Respuesta: Para probar que:

i � � � y � � �, entonces � � ��.

Siguiendo la sugerencia, se deduce:� � � dado�� � �� regla de la aumentatividad:� � �� unión de conjuntos idénticos� � � dado�� � � � regla de la aumentatividad:� � �� regla de la transitividad y conmutatividad de la unión de conjuntos

7.9 Utilícense los axiomas de Armstrong para probar que la regla de la descomposición es correcta.

Respuesta: La regla de la descomposición y sus derivaciones desde los axiomas de Armstrong se presentan acontinuación:

si � � ��, entonces � � � y � � �

� � �� dado�� � � regla de la reflexividad� � � regla de la transitividad�� � � regla reflexiva� � � regla transitiva

7.10 Utilícense los axiomas de Armstrong para probar que la regla de la pseudotransitividad es correcta.

Page 75: Manual de Apoyo Al Profesor

Respuesta: Prueba utilizando los axiomas de Armstrong de la regla de la pseudotransitividad:

si � � � y �� � �, entonces �� � �.

� � � dado�� � � � regla de la aumentatividad y conmutatividad de la unión de conjuntos� � � � dado�� � � regla de la transitividad

7.11 Calcúlese el cierre del siguiente conjunto de dependencias funcionales F, para el esquema de larelación R=(A, B, C, D, E).

A � BCCD � EB � DE � A

Indíquese las claves candidatas de R.

Respuesta: Cálculo del cierre del siguiente conjunto de dependencias funcionales F para el esquema de larelación R = (A, B, C, D, E).

A � BCCD � EB � DE � A

Listado de las claves candidatas de R.

Nota: No es razonable esperar que los estudiantes enumeren todo de F+. Alguna representación abreviada delresultado sería aceptable, mientras que se encuentran los miembros no triviales de F+.

Comenzando con A � BC, se concluye: A � B y A � C.

Dado que A � B y B � D, A � D (descomposición, transitiva)Dado que A � CD y CD � E, A � E (unión, descomposición, transitiva)Dado que A � A, se tiene (reflexiva)A � ABCDE desde los pasos anteriores (unión)Dado que E � A, E � ABCDE (transitiva)Dado que CD � E, CD � ABCDE (transitiva)Dado que B � D y BC � CD, BC � ABCDE (aumentativa, transitiva)También, C � C, D � D, BD � D, etc.

Por lo tanto, cualquier dependencia funcional con A, E, BC, o CD en el lado izquierdo de la flecha está en F+,no importa qué otros atributos aparecen en el FD.Permítase * para representar cualquier conjunto de atributos en R, entonces F+ es BD � B, BD � D, C � C,D � D, BD � BD, B � D, B � B, B � BD, y todos los FDs de la forma A� � �, BC � � �, CD � � �, E�� � donde � es cualquier subconjunto de {A, B, C, D, E}. Las claves candidatas son A, BC, CD y E.

7.12 Utilizando las dependencias funcionales del Ejercicio 7.11, calcúlese B+.

Respuesta: Calculando B+ por medio del algoritmo de la Figura 7.7, se empieza con resultado = {B}.

Page 76: Manual de Apoyo Al Profesor

Considerando FDs de la forma � � � en F, se encuentra que solamente dependencias que satisfacen � �resultado son B � B y B � D. Por lo tanto resultado = {B, D}. Ninguna dependencia más en F aplica ahora.Por eso B+ = {B, D}

7.13 Utilizando las dependencias funcionales del Ejercicio 7.11, calcúlese el recubrimiento canónico Fc.

Respuesta: El conjunto dado de FDs F es:

A � BCCD � EB �DE �A

El lado izquierdo de cada FD en F es único. Ninguno de los atributos en el lado izquierdo o derecho decualquiera de los FDs es ajeno. Por lo tanto, el recubrimiento canónico Fc es igual a F.

7.14 Considérese el algoritmo de la Figura 7.22 para calcular �+. Pruébese que este algoritmo es máseficiente que el mostrado en la Figura 7.7 (Apartado 7.3.3) y que calcula �+ correctamente.

Respuesta: El algoritmo es correcto porque:• Si se añade A a resultado hay una prueba que � � A. Para ver esto obsérvese que trivialmente � � �, porlo que � es parte correcta de resultado. If A � � se añade a resultado, debe haber algún FD � � � tal que A �� y � sea todavía un subconjunto de resultado. (De lo contrario fdcount sería distinto de cero y la condición ifsería falsa.) Una prueba completa puede venir dada mediante la inducción sobre la profundidad de larecursividad, para una ejecución de addin, pero tal prueba sólo se puede esperar de estudiantes con buenosconocimientos de matemáticas.

• Si A � �+, entonces se añade eventualmente A a resultado. Esto se verifica por inducción sobre la longitudde la prueba de � � A empleando los axiomas de Armstrong. Primero obsérvese que si el procedimientoaddin es llamado con algún argumento �, todos los atributos en � se añadirán a resultado. También si undeterminado fdcount de FD está a 0, todos los atributos en su cola se añadirán definitivamente a resultado. Elcaso de la base de la prueba, A � � � A � �+, es obviamente cierto porque la primera llamada a addin tieneel argumento �. La hipótesis inductiva es que, si � � A se puede probar en n pasos o menos, entonces A �resultado. Si hay una prueba en n + 1 pasos que � � A, entonces el último paso era una aplicación dereflexividad, aumentatividad o transitividad sobre un hecho � � � probado en n o menos pasos.

Page 77: Manual de Apoyo Al Profesor

resultado := Ø;/* fdcount es un array cuyo i enésimo elemento contiene el número de atributos en la parte izquierda del ienésimo FD, que no se conocen aún para estar en �+ */for i := 1 a |F| do

beginsupóngase que � � � denota el i enésimo FD;fdcount [i] :=|�|;

end/* aparece es un array con una entrada por cada atributo. La entrada por atributo A es una lista de enteros.Cada entero i de la lista indica que A aparece en el lado izquierdo del i enésimo FD */for each atributo A do

beginaparece [A] := NIL;for i := 1 a |F| do

beginsupóngase que � � � denota el i enésimo FD;if A � � then sumar i a aparece [A];

endend

addin (�);return (resultado);

procedure addin (�);for each atributo A en � dobegin

if A � resultado thenbegin

resultado := resultado � {A};for each elemento i de aparece[A] do

beginfdcount [i] :=fdcount [i] - 1;if fdcount [i] := 0then

beginsupóngase que � � � denota el i enésimo FD;addin (�);

endend

endend

Figura 7.22. Un algoritmo para calcular �+

Si se empleó reflexividad o aumentatividad en el paso (n + 1)st, A debe haber estado en resultado al final delnth paso. De lo contrario, por la hipótesis inductiva ���� resultado. Por lo tanto, la dependencia empleada enprobar � � �, A � � tendrá fdcount definido a 0 por el final del paso enésimo. Por tanto, A se añadirá aresultado.

Para ver que este algoritmo es más eficiente que el presentado en el capítulo, nótese que se buscacada FD una vez en el programa principal. El array resultante parece tiene un tamaño proporcional al de losFDs dados. Las llamadas de recursividad a addin resultan en procesamiento lineal en el tamaño de parece.Por tanto el algoritmo tiene complejidad temporal, que es lineal en el tamaño de los FDs dados. Por otro lado,el algoritmo dado en el texto tiene complejidad temporal cuadrática, por ello puede realizar el bucle tantasveces como el número de FDs, rastreando todos ellos una vez en cada bucle.

Page 78: Manual de Apoyo Al Profesor

7.15 Dado el esquema de la base de datos R(a, b, c), y una relación r del esquema R, escríbase unaconsulta SQL para comprobar si se cumple la dependencia funcional b � c sobre la relación r; Escríbasetambién una declaración SQL que haga cumplir la dependencia funcional. Supóngase que no hay ningún valornulo.

Respuesta:a. La consulta se presenta a continuación. Su resultado es no vacío si y sólo si b � c no se mantiene enr.

select bfrom rgroup by bhaving count(distinct c) > 1

b.create assertion b-hasta-c check

(not exists(select bfrom rgroup by bhaving count(distinct c) > 1)

)

7.16 Demuéstrese que la siguiente descomposición del esquema R, del Ejercicio 7.2, no es unadescomposición de reunión sin pérdida.

(A, B, C)(C, D, E).

Sugerencia: Se da un ejemplo de la relación r en el esquema R, de tal manera que� A, B, C (r) |x| � C, D, E (r) �� r

Respuesta: Siguiendo la sugerencia, se emplea el siguiente ejemplo de r:

A B C D Ea1 b1 c1 d1 e1

a2 b2 c2 d2 e2

Con R1 = (A, B, C), R2 = (C, D, E) :a. �R1 (r) sería:

A B Ca1 b1 c1

a2 b2 c1

b. �R2 (r) sería:

C D Ec1 d1 e1

Page 79: Manual de Apoyo Al Profesor

c. �R1 (r) |x| �R2 (r) sería:A B C D Ea1 b1 c1 d1 e1

a1 b1 c1 d2 e2

a2 b2 c1 d1 e1

a2 b2 c1 d2 e2

Claramente, �R1 (r) |x| �R2 (r) � r. Por lo tanto, esto es una reunión con pérdida.

7.17 Sea R1, R2, . . . , Rn una descomposición del esquema U. Sea u(U) una relación y sea ri = �RI (u);Demuéstrese que

u � r1 |x| r2 |x| ... |x| rn

Respuesta: Considérese alguna tupla t en u.Nótese que ri = �Ri (u) implica que t[Ri] � ri, 1 � i � n. Así,

t[R1] |x| 1 t[R2] |x| 1 . . . |x| 1 t[Rn] � r1 |x| 1 r2 |x| . . . |x| 1 rn

Mediante la definición de reunión natural,

t[R1] |x| t[R2] |x| 1 . . . |x| 1 t[Rn] = �� (�� (t[R1] × t[R2] × . . . × t[Rn]))

donde la condición � se cumple si los valores de los atributos con el mismo nombre en una tupla son iguales ydonde ��� U. El producto cartesiano de tuplas sencillas genera una tupla. El proceso de selección se cumpleporque todos los atributos con el mismo nombre deben tener igual valor, dado que son proyecciones desde lamisma tupla. Finalmente, la cláusula de proyección elimina nombres de atributos duplicados.

Mediante la definición de descomposición, U = R1 � R2 � ... . � Rn, que significa que todos losatributos de t están en t[R1] |x| 1 t[R2] |x| ... . . 1 |x| 1 t[Rn]. Es decir, t es igual al resultado de esta reunión.

Dado que t es una tupla cualquiera de u,

u � r1 |x| 1 r2 |x| 1 . . . |x| 1 rn

7.18 Demuéstrese que la descomposición del Ejercicio 7.2 no es una descomposición que preserve lasdependencias.

Respuesta: La dependencia B � D no está preservada. F1, la restricción de F a (A, B, C) es A � ABC, A �AB, A � AC, A � BC, A � B, A � C, A � A, B � B, C � C, AB � AC, AB � ABC, AB � BC, AB � AB,AB � A, AB � B, AB � C, AC (igual que AB), BC (igual que AB), ABC (igual que AB). F2, la restricción de Fa (C, D, E) es A � ADE, A � AD, A � AE, A � DE, A � A, A � D, A � E, D � D, E (igual que A), AD,AE, DE, ADE (igual que A). Se ve fácilmente que (F1 � F2)+ no contiene B � D, dado que el único FD en F1

� F2 con B como el lado izquierdo es B � B, un FD trivial. Se verá en el Ejercicio 7.22 que B � D estáefectivamente en F+. Así, B � D no está preservado. Nótese que CD � ABCDE tampoco está preservado.

Un argumento sencillo es el siguiente: F1 no contiene dependencias con D en el lado derecho de laflecha. F2 no contiene dependencias con B en el lado izquierdo de la flecha. Por lo tanto, para B � D al estarpreservado debe haber un FD, B � � en F+1 y � � D en F+2 (así B � D se deduciría por transitividad). Dadoque la intersección de dos esquemas es A, � = A. Obsérvese que B � A no está en F+1, pues B+ = BD.

7.19 Demuéstrese que es posible asegurar que una descomposición que preserve dependencias en 3FN esuna descomposición de reunión sin pérdida garantizando que, al menos, un esquema contiene una clavecandidata para el esquema que se está descomponiendo. (Sugerencia: Demuéstrese que la reunión de todas lasproyecciones en los esquemas de la descomposición no pueden tener más tuplas que la relación original).

Page 80: Manual de Apoyo Al Profesor

Respuesta: Sea F un conjunto de dependencias funcionales que se cumplen en un esquema R. Sea � = {R1,R2,. . . , Rn} una descomposición que preserva dependencias en 3FN de R. Sea X una clave candidata de R.

Considérese una instancia legal r de R. Sea j = �X (r) |x| �R1 (r) |x| �R2 (r) . . . �Rn(r). Se deseaprobar que r = j.

Se parte de que si t1 y t2 son dos tuplas en j tales que t1[X] = t2[X], entonces t1 = t2. Para probar estaafirmación se emplea el siguiente método inductivo;Sea F´ = F1 � F2 � . . . � Fn, donde cada Fi es la restricción de F al esquema Ri en �. Considérese elempleo del algoritmo dado en la Figura 7.7 para calcular el cierre de X bajo F´. Se emplea la inducción sobreel número de veces que el bucle for se ejecuta este algoritmo.

• Base : En el primer paso del algoritmo, resultado se asigna a X y, por tanto, dado que t1[X] = t2[X], se sabeque t1[resultado] = t2[resultado] es cierto.• Paso de inducción : Supongamos que se cumple t1[resultado] = t2[resultado] al final de la k ejecución delbucle for.

Supóngase que la dependencia funcional considerada en la k + 1 ejecución del bucle for es � � � y que � �resultado. � � resultado implica que t1[�] = t2[�] es cierto. El hecho de que se cumpla � � � para algúnconjunto de atributos Ri en � y que t1[Ri] y t2[Ri] estén en �Ri (r), implica que t1[�] = t2[�] es también cierto.Dado que ahora � se ha añadido a resultado por medio del algoritmo, se sabe que t1[resultado] = t2[resultado]es cierto al final de la k + 1 ejecución del bucle for.

Dado que � está preservando las dependencias y X es una clave de R, todos los atributos de R están enresultado cuando finaliza el algoritmo. Así, t1[R] = t2[R] es cierto, es decir, t1 = t2 tal y como se afirmóanteriormente.

Esta afirmación implica que el tamaño de �X (j) es igual al de j. Nótese también que �X (j) = �X (r)= r (dado que X es una clave de R). De esta manera se ha probado que el tamaño de j es igual al de r.Empleando el resultado del Ejercicio 7.17, se sabe que r � j. Por lo que se concluye que r = j.

Nótese que como X está trivialmente en 3FN, � � {X} es una descomposición de reunión sin pérdidaque preserva las dependencias en 3FN.

7.20 Indíquense los tres objetivos de diseño de las bases de datos relacionales y explíquese el motivo deque cada uno de ellos sea deseable.

Respuesta: Los tres objetivos del diseño son descomposición de reunión sin pérdida, descomposición quepreserva las dependencias y minimización de la repetición de información. Son convenientes para podermantener una base de datos veraz, comprobar rápidamente la exactitud de las actualizaciones y la menorcantidad de espacio posible.

7.21 Se da una descomposición de reunión sin pérdida en FNBC del esquema R del ejercicio 7.2.

Respuesta: A partir del Ejercicio 7.11, se sabe que B � D no es trivial y el lado izquierdo no es unasuperclave. Mediante el algoritmo de la Figura 7.13 se deducen las relaciones {(A, B, C, E), (B, D)}. Esto es,en FNBC.

7.22 Se da un ejemplo de un esquema de relación R’ y un conjunto de dependencias funcionales F’ talesque, al menos, haya tres descomposiciones de reunión sin pérdida distintas de R’ en FNBC.

Page 81: Manual de Apoyo Al Profesor

Respuesta: Dada la relación R’ = (A, B, C, D), el conjunto de dependencias funcionales F’ = A � B, C � D,B � C permite tres descomposiciones FNBC distintas.

R1 = {(A, B), (C, D), (B, C)}

está en FNBC como lo están

R2 = {(A, B), (C, D), (A, C)}R3 = {(B, C), (A, D), (A, B)}

7.23 Al diseñar una base de datos relacional, indíquese el motivo de que se pueda escoger un diseño queno sea FNBC.

Respuesta: FNBC no siempre preserva las dependencias. Por lo tanto, se pude querer elegir otra formanormal (específicamente 3FN) con el fin de hacer, durante las actualizaciones, más fácil la verificación de lasdependencias. Esto evitaría reuniones para verificar las dependencias e incrementaría el rendimiento delsistema.

7.24 Se da una descomposición en 3FN de reunión sin pérdida que conserve las dependencias del esquemaR del Ejercicio 7.2.

Respuesta: Primero se nota que las dependencias dadas en el Ejercicio 7.2 forman un recubrimientocanónico. Generando el esquema a partir del algoritmo de la Figura 7.14, se obtiene

R’ = {(A, B, C), (C, D, E), (B, D), (E, A)}.

El esquema (A, B, C) contiene una clave candidata. Por lo tanto, R’ está en tercera forma normal desde unadescomposición de reunión sin pérdida que preserva las dependencias.

Nótese que el esquema original R = (A, B, C, D, E) ya está en 3FN. Así, no era necesario aplicar elalgoritmo, tal y como se hizo anteriormente. El esquema original simple es trivialmente una reunión sinpérdida, descomposición que preserva las dependencias.

7.25 Sea un atributo primo que aparece como mínimo en una clave candidata. Sean α y β conjuntos deatributos tales que � � β,pero no se cumple que β � �. Sea A un atributo que no está en α ni en βy quecumple β � �. Se dice que A es dependiente de manera transitiva de α. Se puede reformular la definición de3FN de la manera siguiente:un esquema de relación R está en la 3FN, respecto a un conjunto F de dependencias funcionales, si no hayatributos no primos A en R, para los cuales A sea dependiente de manera transitiva de una clave de R.

Demuéstrese que esta nueva definición es equivalente a la original.

Respuesta: Supóngase que R está en 3FN de acuerdo a la definición del libro de texto. Se ve que está en 3FNde acuerdo a la definición en el ejercicio. Sea A un atributo no primo en R, que es transitivamente dependientesobre una clave � para R. Entonces ahí existe � � R, de tal manera que β � A, � � β, A � �, A � β y no secumple que β � �.Pero entonces β � A viola la definición del libro de texto de 3FN, dado que• A � β implica β � A no es trivial• Dado que β � � no se cumple, β no es una superclave.• Como A no es primo, no es ninguna clave candidata

Ahora se muestra que, si R está en 3FN de acuerdo a la definición del ejercicio, está en 3FN de acuerdo a ladefinición del libro de texto. Supóngase que R no está en 3FN de acuerdo a la definición del libro de texto.

Page 82: Manual de Apoyo Al Profesor

Entonces hay un FD, � � β que incumple las tres condiciones.Así• � � β no es trivial.• � no es una superclave para R.• Algún A en β � � no está en ninguna clave candidata.

Esto implica que A no es primo y � � A. Sea � una clave candidata para R. Entonces � � �, � � � no secumple (dado que � no es una superclave), A � � y A � � (dado A no es primo). Así, A es transitivamentedependiente de �, violando la definición del ejercicio.

7.26 Una dependencia funcional � � β se denomina una dependencia parcial, si hay un subconjuntoadecuado � de �, tal que � � β. Se dice que β es parcialmente dependiente de �. Un esquema de relación Restá en la segunda forma normal (2FN), si cada atributo A en R cumple uno de los siguientes criterios:• Aparece en una clave candidata.• No es parcialmente dependiente de una clave candidata.

Demuéstrese que cada esquema en 3FN está en 2FN. (Sugerencia: demuéstrese que cada dependencia parciales una dependencia transitiva).

Respuesta: En referencia a las definiciones del Ejercicio 7.25, se dice que un esquema de relación R está en3FN si no hay ningún atributo primo A en R, para el que A sea transitivamente dependiente sobre una clavepara R.También se puede rescribir la definición de 2FN dada aquí como :

“Un esquema de relación R está en 2FN, si ningún atributo no primo A es parcialmente dependientesobre cualquier clave candidata para R”.

Para probar que todo esquema en 3FN está en 2FN, es suficiente mostrar que si un atributo no primoA es parcialmente dependiente sobre una clave candidata �, entonces A es también transitivamentedependiente sobre la clave �.

Sea A un atributo no primo en R. Sea � una clave candidata para R. Supóngase que A es parcialmentedependiente sobre �.• Desde la definición de una dependencia parcial, se sabe que para algunos subconjuntos propios � de �, � �A.• Dado que � � �, � � �. Además, � � � no se cumple, dado que � es una clave candidata.• Finalmente, dado que A no es primo, no puede estar ni en � ni en �.

De esto se concluye que � � A es una dependencia transitiva. Por lo tanto, se ha probado que cada esquemaen 3FN, lo está también en 2FN.

7.27 Dados los tres objetivos del diseño de bases de datos relacionales, indíquese si hay alguna razón paradiseñar un esquema de base de datos que se halle en 2FN, pero que no se halle en una forma normal de ordensuperior. (Véase el Ejercicio 7.26 para obtener la definición de 2FN).

Respuesta: Los tres objetivos del diseño de bases de datos relacionales están para evitar• Repetición de información• Incapacidad para representar información• Pérdida de información

2NF no prohíbe tanta repetición de información debido a que el esquema (A, B, C) con dependencias A � B yB � C está permitido bajo 2FN, aunque el mismo par (B, C) pudiera estar asociado con muchos valores de A,duplicando innecesariamente valores de C. Apara evitar esto se debe ir a la 3FN. La repetición de informaciónse permite en 3FN en algunos, pero no todos, casos donde lo esté en 2FN. Así, en general, 3FN reduce larepetición de información. Dado que siempre se puede realizar una descomposición en 3FN de reunión sinpérdida, no hay pérdida de información al pasar de 2FN a 3FN.

Page 83: Manual de Apoyo Al Profesor

Nótese que la descomposición {(A, B), (B, C)} es una descomposición en 3FN de reunión sin pérdiday que preserva dependencias, del esquema (A, B, C). Sin embargo, en el caso de que se elija estadescomposición, la recuperación de la información sobre la relación entre A, B y C requiere una reunión delas dos relaciones que, en la correspondiente descomposición en 2FN, se evita.

De este modo, la decisión sobre la forma normal a elegir depende del resultado de comparar el costede la verificación de la dependencia con el de las reuniones. Generalmente se prefiere la 3FN. La verificaciónde las dependencias necesita hacerse con cada inserción o actualización de las instancias de un esquema en2FN, mientras que sólo algunas consultas requerirán la reunión de instancias de un esquema en 3FN.

7.28 Se da un ejemplo de un esquema de relación R y un conjunto de dependencias tales que R esté enFNBC, pero no en 4FN.

Respuesta: El esquema de relación R = (A, B, C, D, E) y el conjunto de dependencias

A �� BCB �� CDE �� AD

constituyen una descomposición FNBC, sin embargo es claro que no está en 4FN. (Es BCNF porque todos losFDs son triviales).

7.29 Explíquese el motivo de que 4FN sea una forma normal más deseable que FNBC.

Respuesta: 4FN es más conveniente que FNBC porque reduce la repetición de información. Si se consideraun esquema FNBC que no está en 4FN (véase el Ejercicio 7.28), se observa que la descomposición en 4FN nopierde información con tal que se use una descomposición de reunión sin pérdida, todavía se reduce laredundancia.

7.30 Explíquese como pueden surgir las tuplas colgantes. Explíquense los problemas que pueden causar.

Respuesta: Las tuplas colgantes pueden aparecer cuando se inserta una tupla en una relación descompensada,pero ninguna tupla se inserta en las otras relaciones de la composición. Pueden originar que las consultas queformen la reunión de una relación descompuesta devuelvan valores incorrectos, dado que podrían no estarincluidas las tuplas colgantes. Como se ve en el Capítulo 5, las tuplas colgantes se pueden evitar, mediante laespecificación de ligaduras de integridad referencial.

Page 84: Manual de Apoyo Al Profesor

CAPITULO 8

BASES DE DATOS ORIENTADAS A OBJETOS

Este capítulo aporta una introducción a las bases de datos orientadas a objetos. Este capítulo y el siguienteforman una unidad lógica y deberían enseñarse consecutivamente. Es posible enseñar estos capítulos antes decubrir las normalizaciones (Capítulo 7).

Los apartados del capítulo anteriores al apartado sobre C++ y ODMG persistentes (Apartado 8.5), nopresuponen familiaridad alguna con un lenguaje de programación orientada a objetos. Sin embargo, esbastante posible que los estudiantes ya estén familiarizados con los conceptos básicos y los lenguajes de laprogramación orientada a objetos. Para tales estudiantes el Apartado 8.2 se puede cubrir con relativa rapidez.Sin embargo, es importante señalar la motivación de las características de la orientación a objetos en elcontexto de una base de datos y como los requerimientos varían en función del lenguaje de programación.

Hay una tendencia a confundir lenguajes orientados a objetos “persistentes” con bases de datosorientadas a objetos. Un lenguaje orientado a objetos persistentes debería ser simplemente un interface parauna base de datos. Es importante recordar a los estudiantes todas las características que un sistema de bases dedatos debe tener, de tal modo que puedan distinguir, con toas las de la ley, sistemas de bases de datosorientados a objetos de sistemas que aportan interfaces orientados a objetos, pero aportan poco en el sentidode las posibilidades de las bases de datos, tales como las facilidades en las consultas, catálogos en línea,control de concurrencias y recuperaciones.

Hay varios sistemas comerciales de bases de datos orientadas a objetos en el mercado, así como unospocos sistemas de uso público. Algunos de los sistemas comerciales también ofrecen precios reducidos ocopias gratuitas para usos académicos. Los sistemas comerciales de bases de datos orientadas a objetosincluyen Objectivity (www.objectivity.com), ObjectStore (www.odi.com) y Versant (www.versant.com).

Cambios a la tercera edición:

Se han actualizado algunos ejemplos para hacerlos más intuitivos. El tratamiento de ODMG se ha actualizadohasta ODMG-2, incluyendo la nueva sintaxis (con un prefijo d_ para las palabras clave) y la nuevacaracterística d_rel_ref para declarar relaciones.

Page 85: Manual de Apoyo Al Profesor

Ejercicios

8.1 Para cada una de las siguientes áreas de aplicación, explíquese por qué un sistema de bases de datosrelacional resultaría inadecuado. Indíquense todos los componentes específicos del sistema que habría quemodificar.a. Diseño asistido por computadora.b. Bases de datos multimedia.

Respuesta: Cada una de las grandes aplicaciones contiene elementos de datos especializados (por ejemplo, unmódulo de programa, una imagen gráfica, voces digitalizadas, un documento). Estos elementos de datostienen operaciones específicas para ellos (por ejemplo, compilar, rotar, escuchar, formatear) que no se puedenexpresar mediante lenguajes de consultas relacionales. Son elementos de datos de longitud variable que haceimpracticable almacenarlos en los campos cortos que están permitidos en los registros, para tales sistemas debases de datos. Por consiguiente es necesario cambiar tanto el modelo, como los lenguajes de manipulación ydefinición de los datos.

Además, las transacciones anidadas y las de larga duración son típicas de estas aplicaciones. Esprobable que sean necesarios cambios en los sistemas de concurrencia y recuperación.

8.2 ¿En qué se diferencia el concepto de objeto en el modelo orientado a objetos, del concepto deentidad en el modelo entidad - relación?

Respuesta: Una entidad es simplemente una colección de variables o elementos de datos. Un objeto es unaencapsulación de datos así como los métodos (código) para operar sobre los datos. Los datos miembros de unobjeto son visibles directamente sólo para sus métodos. El mundo exterior puede acceder a los datos de losobjetos, sólo pasando mensajes predefinidos para ello y estos mensajes se implementan por medio de losmétodos.

8.3 Una compañía de alquiler de coches tiene una base de datos de los vehículos de su flota actual. Paratodos los vehículos incluye el número de identificación del vehículo, el número de matrícula, fabricante,modelo, fecha de adquisición y el color. Se incluyen datos específicos para algunos tipos de vehículos:• Camiones: capacidad de carga.• Coches deportivos: potencia, edad mínima del conductor.• Mono volúmenes: número de plazas.• Vehículos todo terreno: altura de los bajos, eje motor (tracción a dos o cuatro ruedas).

Constrúyase, para esta base de datos, la definición del esquema de una base de datos orientada a objetos.Utilícese la herencia donde sea conveniente.

Respuesta:

Page 86: Manual de Apoyo Al Profesor

class vehículo { int id-vehículo;string número-matrícula;string fabricante;string modelo;date fecha-compra;color-type color;

};

class camión isa vehículo { int capacidad-carga;

};

class coches-deportivos isa vehículo { int potencia;int edad-mínima-conductor;

};

class monovolumen isa vehículo { int número-plazas;

};

class vehículos-todo-terreno isa vehículo { real altura-bajos;drivetrain-type ejemotor;

};Se supone que color-type y drivetrain-type son tipos definidos previamente.

8.4 Explíquese el motivo de que pueda haber ambigüedad en caso de herencia múltiple. Ilústrese laexplicación con un ejemplo.

Respuesta: Una clase hereda las variables y métodos de todas sus superclases inmediatas. Así, podría heredaruna variable o método del mismo nombre desde más de una superclase. Cuando se referencia esa variableparticular o método de un objeto de la subclase, hay una ambigüedad con respecto a cuál de las superclasesproporciona la herencia.

Por ejemplo, sean las clase profesor y estudiante, ambas con una variable departamento. Si una claseprofesor asistente hereda desde ambas clases, cualquier referencia a la variable departamento de un objetoprofesor asistente es ambiguo.

8.5 Explíquese la diferencia entre el concepto de identidad de los objetos del modelo orientado a objetosy el concepto de igualdad de las tuplas del modelo relacional.

Respuesta: La tupla igualdad está determinada por los valores de los datos. La identidad de los objetos esindependiente de los valores de los datos, dado que los sistemas orientados a objetos emplean identidadincorporada.

8.6 Explíquese la diferencia de significado entre los arcos de un grafo dirigido acíclico, que represente laherencia y uno que represente los continentes de objetos.

Respuesta: Un arco desde una clase A hasta otra B, en un GAD representando herencias, significa que unobjeto de la clase B lo es también de la clase A. Tiene todas las propiedades de los objetos de la clase A, máslas de los objetos propios. En particular, hereda todas las variables y métodos de la clase A. Puede, por

Page 87: Manual de Apoyo Al Profesor

supuesto, aportar sus propias implementaciones para los métodos heredados.Un arco desde una clase A hasta otra B, en un GAD de continentes de objetos, significa que un objeto

de la clase A contiene a uno de clase B. No tiene por qué haber ningún parecido en las propiedades de A y B.Ni A ni B heredan nada el uno del otro. Funcionan como tipos independientes, en la medida en que un objetode clase A puede acceder a la variables del objeto B contenido en él, sólo por medio de los métodos del objetoB.

8.7 ¿Por qué permiten los lenguajes de programación persistentes los objetos transitorios? ¿Sería mássencillo utilizar sólo objetos persistentes y borrar los objetos innecesarios al terminar la ejecución? Explíquesela respuesta.

Respuesta: La creación, la eliminación y los accesos, serán generalmente más lentos y caros para objetospersistentes almacenados en la base de datos, que para objetos transitorios en la memoria local de latransacción. Esto se debe a los gastos generales de conservar la semántica de las transacciones, seguridad eintegridad. Dado que un objeto transitorio es puramente local a la transacción que lo crea y no se incorpora ala base de datos, todos estos gastos generales se pueden evitar. Así, con el objeto de aportar accesos eficientesa los datos puramente locales y temporales, los lenguajes de programación persistentes soportan objetostransitorios.

8.8 Empleando C++ de ODMGa. Dense definiciones de esquemas correspondientes al esquema relacional de la Figura 3.39,empleando referencias para expresar las relaciones de clave externa.b. Escríbanse programas para resolver cada una de las cuestiones del Ejercicio 3.10.

Respuesta:a La definiciones del esquema se pueden escribir de dos maneras distintas, una es una traduccióndirecta del esquema relacional, mientras que la otra emplea, más directamente, las características de laorientación a objetos.

• El primer esquema es el siguiente:class empleado : public d Object {

public:d String nombre-persona;d String calle;d String ciudad;

};

class compañía : public d Object { public:

d String nombre-compañía;d String ciudad;

};

class trabaja : public d Object {public:

d Ref<empleado> persona;d Ref<compañía> comp;d Long sueldo;

};

Page 88: Manual de Apoyo Al Profesor

class jefe : public d Object { public:

d Ref<empleado> persona;d Ref<empleado> jefe;

};

• El segundo esquema es el siguiente:class empleado : public d Object { public:

d String nombre-persona;d String calle;d String ciudad;d Rel Ref<compañía, empleados> comp;d Ref<empleado> jefe;d Long sueldo;

};

class compañía : public d Object { public:

d String nombre-compañía;d String ciudad;d Rel Set<empleado, comp> empleados;

};

const char empleados[] = ”empleados”;const char comp[] = ”comp”;

b. Se presentan consultas para el segundo esquema.• Averiguar la compañía con mayor número de empleados.d Ref<compañía> mayoríaempleados(){ d Database emp db obj;

d Database * emp db = ”” emp db obj;emp db- >open(”Emp-DB”);d Transaction Trans;Trans.begin();d Extent<compañía> all comps(emp db);d Iterator<d Ref<compañía>> iter=all comps.create iterator();d Iterator<d Ref<empleado>> iter2;d Ref<compañía> c, maxc;d Ref<empleado> e;int count;int maxcount=0;while(iter.next(c)) {

iter2=(c- >empleados).create iterator();count=0;while(iter2.next(e)) {

count++;}if(maxcount < count) {

maxcount=count;maxc=c;

}}Trans.commit();return maxc;

}

Page 89: Manual de Apoyo Al Profesor

• Averiguar la compañía con la nómina más reducida.d Ref<compañía> menorpago(){ d Database emp db obj;

d Database * emp db = ”” emp db obj;emp db- >open(”Emp-DB”);d Transaction Trans;Trans.begin();d Extent<compañía> all comps(emp db);d Iterator<d Ref<compañía>> iter=all comps.create iterator();d Iterator<d Ref<empleado>> iter2;d Ref<compañía> c, minc;d Ref<empleado> e;d Long sal;d Long minsal=0;while(iter.next(c)) {

iter2=(c- >empleados).create iterator();sal=0;while(iter2.next(e)) {

sal+=e- >sueldo;}if(minsal > sal) {

minsal=sal;minc=c;

}}Trans.commit();return minc;

}

• Encontrar las compañías cuyos empleados ganan un salario mayor, en promedio, que el salario medio delBanco Importante.d Ref<compañía> mayorsueldo(){ d Database emp db obj;

d Database * emp db = ”” emp db obj;emp db- >open(”Emp-DB”);d Transaction Trans;Trans.begin();d Extent<compañía> all comps(emp db);d Iterator<d Ref<compañía>> iter=all comps.create iterator();d Iterator<d Ref<empleado>> iter2;d Ref<compañía> c, FBC=all comps.select(nombre-compañía=”Banco Importante”);d Set<d Ref<compañía>> result;d Ref<empleado> e;int count;d Long avsal=0, avFBCsal=0, sal=0;iter2=(FBC- >empleados).create iterator();while(iter2.next(e)) {

count++;sal+=e- >sueldo;

}avFBCsal=sal/count;while(iter.next(c)) {

iter2=(c- >empleados).create iterator();sal=0; count=0;while(iter2.next(e)) {

sal+=e- >sueldo;count++;

}

Page 90: Manual de Apoyo Al Profesor

avsal=sal/count;if(avsal > avFBCsal) {

result.insert element(c);}

}Trans.commit();return result;

}

8.9 Utilizando C++ de ODMG, dense definiciones de esquema correspondientes al diagrama E-R de laFigura 2.29. Utilícense referencias para implementar relaciones.

Respuesta:

class persona : public d Object {public:

d String nombre;d String dirección;d String teléfono;

};

class autor : public person {public:

d String URL;d Rel Set<libro, autores> libros;

};

class editor : public person { public:

d String URL;d Rel Set<libro, libro.editor> libros;

};

class cliente : public person { public:

d String email;d Rel Set<cestacompra, propietario> cestas;

};

class libro : public d Object { public:

int año;d String título;float precio;d String ISBN;d Rel Set<autor, libros> autores;d Rel Ref<editor, libros> libro.editor;

};

Page 91: Manual de Apoyo Al Profesor

class cestacompra : public d Object { public:

d String ID-cesta;d Rel Ref<cliente, cestas> propietario;d Set<d Ref<libro qty>> contiene;

};

class almacén : public d Object { public:

d String dirección;d String teléfono;d String código;d Set<d Ref<libro qty>> stocks;

};

class libro qty : public d Object { public:

d Ref<libro> libro;int número;

};

const char libros[] = ”libros”;const char autores[] = ”autores”;const char libro editor[] = ”libro editor”;const char cestas[] = ”cestas”;const char propietario[] = ”propietario”;

8.10 Explíquese, por medio de un ejemplo, cómo representar una relación ternaria en un modelo de datosorientado a objeto, como C++ de ODMG.

Respuesta: Para representar relaciones ternarias, crear una clase correspondiente a la relación y referirse a lasentidades en esta clase. Por ejemplo, para representar la relación ternaria de la Figura 2.13 se hace losiguiente:

class trabajaen : public d Object { public:

d Ref<empleado> emp;d Ref<sucursal> sucursal;d Ref<trabajo> trabajo;

};

8.11 Explíquese la manera en que se implementa un puntero persistente. Compárese esta implementacióncon la de los punteros de los lenguajes de propósito general, tales como C o Pascal.

Respuesta: Los punteros persistentes se pueden implantar como Tipos de Datos Abstractos (TDAs). EstosTDAs deben aportar las operaciones de punteros típicas, como incrementando y desreferenciando, así suempleo y el de los punteros regulares es uniforme. Por otro lado, los punteros regulares generalmenteincorporan tipos, implementados como parte del lenguaje.

Page 92: Manual de Apoyo Al Profesor

8.12 Si se crea un objeto sin que haya referencias al mismo, ¿cómo se puede borrar?

Respuesta: Si se crea un objeto sin ninguna referencia sobre él, no puede ser accedido ni borrado por mediode un programa. La única manera para el sistema de la base de datos es, por sí mismo, localizar y borrar talesobjetos. Esto se denomina recogida de basura. Una forma de hacer la recogida de basura es por el método demarcar y barrer. Primero se marcan los objetos referidos directamente por programas. Después se siguen lasreferencias desde estos objetos a otros que, asu vez, se marcan. El procedimiento continua repetidas veces,hasta que no hay más objetos sin marcar que puedan alcanzarse, mediante cadenas de referencia desde objetosmarcados. En este punto, se borran todos los objetos restantes sin marcar. Este método es correcto; se puedeprobar que si no se marca ningún nuevo objeto después de una ronda de marcar y barres, los restantes objetossin marcar están de hecho sin referenciar.

8.13 Considérese un sistema que proporcione objetos persistentes. ¿Se trata necesariamente de un sistemade bases de datos?. Explíquese la respuesta.

Respuesta: Un sistema de base de datos debe proporcionar prestaciones como transacciones, consultas(recuperación asociativa de objetos), seguridad e integridad. Un sistema de objetos persistentes puede noofrecer tales prestaciones.

Page 93: Manual de Apoyo Al Profesor

CAPITULO 9

BASES DE DATOS RELACIONALES ORIENTADAS A OBJETOS

Este capítulo describe extensiones a los sistemas de bases de datos relacionales, para soportar tipos de datoscomplejos y características orientadas a objetos. Tales sistemas extendidos se denominan sistemasrelacionales orientados a objetos. Desde que el capítulo se incorporó a la tercera edición, la mayoría de lossistemas de bases de datos comerciales han incorporado algunos complementos a las características de lasrelaciones orientadas a objetos y estas características se han estandarizado como parte del SQL:1999.

Sería instructivo asignar ejercicios a los estudiantes con el objeto de encontrar aplicaciones en lasque el modelo relacional objeto, en particular los objetos complejos, fuera más idóneo que el modelorelacional tradicional.

Cambios a la tercera edición:

Las características del lenguaje de consultas se basan ahora en el estándar SQL:1999, el cual no estaba listocuando se publicó la tercera edición; esa edición estaba basada en las características de diferentes propuestasde ampliación del SQL.

Page 94: Manual de Apoyo Al Profesor

Ejercicios

9.1 Considérese el esquema de la base de datos

Emp = (enombre, setof(Hijos), setof(Conocimientos))Hijos = (nombre, Cunpleaños)Cumpleaños = (día, mes, año)Conocimientos = (escribir-a-máquina,setof(Exámenes))Exámenes = (año, ciudad)

Supóngase que los atributos de tipo setof (Hijos), setof(Conocimientos), y setof(Exámenes), tienen nombresde atributos ConjuntoHijos, ConjuntoConocimientos y ConjuntoExámenes, respectivamente. Supóngase quela base de datos contiene una relación emp (Emp). Escríbanse las siguientes consultas en SQL:1999 (con lasextensiones descritas en este capítulo).a. Encuéntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo.b. Encuéntrense los empleados que hicieron un examen del tipo de conocimiento “escribir-a-máquina”en la ciudad de “San Rafael”.c. Indicar todos los tipos de conocimiento de la relación emp.

Respuesta:a. Encuéntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo.

select nombreefrom emp as e, e.ConjuntoHijos as cwhere ’Marzo’ in

(select cumpleaños.mesfrom c)

b Encuéntrense los empleados que hicieron un examen del tipo de conocimiento “escribir-a-máquina”en la ciudad de “San Rafael”.

select e.nombreefrom emp as e, e.ConjuntoConocimientos as s, s.ConjuntoExámenes as xwhere s.tipo = ’escribir a máquina’ and x.ciudad = ’San Rafael’

c. Indicar todos los tipos de conocimiento de la relación emp.select distinct s.tipofrom emp as e, e.ConjuntoExámenes as s

9.2 Rediséñese la base de datos del Ejercicio 9.1 en la primera y cuarta forma normal. Indíquense lasdependencias funcionales o multivaloradas que se den por supuestas. Indíquense también todas lasrestricciones de integridad referencial que deban incluirse en los esquemas de la primera y cuarta formasnormales.

Respuesta: Para poner el esquema en primera forma normal se aplanan todos los atributos en un esquema derelación sencilla.

Empleado-detalles = ( nombree, nombrec, díab, mesb, añob, tipos, añox, ciudadx)

Se renombran los atributos por motivos de claridad; nombrec es Hijos.nombre y díab, mesb, añob son losatributos de Cumpleaños; tipos es Conocimientos.tipo y añox y ciudadx son los atributos de Exámenes. LosFDs y las dependencias multivaloradas supuestas son:

nombree, nombrec � díab, mesb, añob

Page 95: Manual de Apoyo Al Profesor

nombree �� nombrec, díab, mebs, añobnombree, tipos �� añox, ciudadx

El FD captura el hecho de que un hijo tenga un único cumpleaños, bajo la suposición de que un empleado nopuede tener dos hijos del mismo nombre. Los MVDs capturan el hecho de que no hay relación entre los hijosde un empleado y su formación.El esquema rediseñado en cuarta forma normal es:

Empleado = ( nombree)Hijo = ( nombree, nombrec, díab, mesb, añob)Conocimientos = (nombree, tipos, añox, ciudadx)

nombree será la clave primaria de Empleado y ( nombree, nombrec) será la clave primaria de Hijo. El atributonombree es una clave externa en Hijo y en Conocimientos, refiriéndose a la relación Empleado.

9.3 Considérense los esquemas de la tabla personas y las tablas estudiantes y profesores, que se crearonbajo persona en el Apartado 9.3. Se da un esquema relacional en tercera forma normal que represente lamisma información. Recupérense las restricciones sobre subtablas y dense todas las restricciones que debanimponerse en el esquema relacional para que cada ejemplar de la base de datos del esquema relacional puedarepresentarse también mediante un ejemplar del esquema con herencia.

Respuesta: Un esquema relacional correspondiente, en tercera forma normal, es el siguiente:

Personas = (nombre, dirección)Estudiantes = (nombre, titulación, departamento-estudiante)Profesores = (nombre, sueldo, departamento-profesor)

nombre es la clave primaria de las tres relaciones y es también una clave externa referida a Personas, paraEstudiantes y Profesores.

En lugar de situar sólo el atributo nombre de Personas, en Estudiantes y Profesores, se puedenincluir sus dos atributos. En ese caso, habrá un leve cambio, a saber – (nombre, dirección) se convertirá en laclave externa de Estudiantes y Profesores. La claves primarias permanecerán igual en todas las tablas.

9.4 Una compañía de alquiler de coches tiene una base de datos de los vehículos de su flota actual. Paratodos los vehículos incluye su número de bastidor, el número de matrícula, fabricante, modelo, la fecha decompra y su color. Se incluyen datos específicos para algunos tipos de vehículos:• Camiones: capacidad de carga.• Coches deportivos: potencia, edad mínima del arrendatario.• Mono volúmenes: número de plazas.• Vehículos todo terreno: altura de los bajos, eje motor (tracción a dos o cuatro ruedas).

Constrúyase una definición de esquema para esta base de datos en SQL:1999. Utilícese la herencia donde seaconveniente.

Respuesta: Para este problema se emplea la herencia de tablas. Se supone que MiFecha, Color y Tipo EjeMotor son tipos definidos previamente.

Page 96: Manual de Apoyo Al Profesor

create type Vehículo(id-vehículo integer,número matrícula char(15),fabricante char(30),modelo char(30),fecha-compra MiFecha,color Color)

create table vehículo of type Vehículo

create table camión(capacidad-carga integer)under vehículo

create table cochedeportivo(potencia integeredad-mínima-conductor integer)under vehículo

create table monovolumen(número-plazas integer)under vehículo

create table vehículotodoterreno(altura-bajos realejemotor Tipo Eje Motor)under vehículo

9.5 Explicar la diferencia entre un tipo x y un tipo de referencia ref(x). ¿En qué circunstancias seescogería un tipo de referencia?

Respuesta: Si el tipo de un atributo es x, entonces en cada tupla de la tabla , correspondiente a ese atributo,hay un objeto actual de tipo x . Si su tipo es ref(x), entonces en cada tupla, correspondiente a ese atributo, hayuna referencia a algún objeto de tipo x. Se elige un tipo de referencia para un atributo, si la finalidad previstade ese atributo es referirse a un objeto independiente.9.6 Considérese el diagrama E-R de la Figura 2.11, que contiene atributos compuestos, multi valorados yderivados.a. Se da una definición de esquema en SQL:1999 correspondiente al diagrama E-R. Utilícese un arraypara representar el atributo multivalorado y constructoras apropiadas de SQL:1999 para representar los otrostipos de atributos.b. Dense constructores para cada uno de los tipos estructurados definidos.

Respuesta:a. A continuación se presenta la correspondiente definición del esquema en SQL extendido: Nóteseque el atributo edad ha sido convertido en un método.

create type Nombre(primer-nombre varchar(15),inicial-segundo-nombre char,apellido varchar(15))

Page 97: Manual de Apoyo Al Profesor

create type Calle(nombre-calle varchar(15),número-calle varchar(4),número-apartamento varchar(7))

create type Dirección(calle Calle,ciudad varchar(15),provincia varchar(15),código-postal char(6))

create table cliente(nombre Nombre,id-cliente varchar(10),dirección Dirección,teléfonos char(7) array[10],dob fecha)

method integer edad()

b create function Nombre (f varchar(15), m char, l varchar(15))returns Nombrebegin

set primer-nombre = f;set inicial-segundo-nombre = m;set apellido = l;

endcreate function Calle (snombre varchar(15), sno varchar(4), ano varchar(7))returns Callebegin

set nombre-calle = snombre;set número-calle = sno;set número-apartamento =ano;

endcreate function Dirección (s Calle, c varchar(15), sta varchar(15), postal varchar(6))returns Direcciónbegin

set calle = s;set ciudad = c;set provincia =sta;set código-postal = postal;

end

9.7 Se da una definición del esquema en SQL:1999 del diagrama E-R de la Figura 2.17, que contieneespecializaciones.

Respuesta:

create type Persona(nombre varchar(30),calle varchar(15),ciudad varchar(15))

create type Empleadounder Persona

Page 98: Manual de Apoyo Al Profesor

(sueldo integer)

create type Clienteunder Persona(valoración-crédito integer)

create type Responsableunder Empleado(número-oficina integer)

create type Cajerounder Empleado(número-estación integer,horas-trabajadas integer)

create type Secretariaunder Empleado(horas-trabajadas integer)

create table persona of Persona

create table empleado of Empleadounder persona

create table cliente of Clienteunder persona

create table responsable of Responsableunder empleado

create table cajero of Cajerounder empleado

create table secretaria of Secretariaunder empleado

9.8 Considérese el esquema relacional de la Figura 3.39.a. Se da una definición de esquema en SQL:1999 correspondiente al esquema relacional, pero usandoreferencias para expresar las relaciones de claves externas.b. Escríbanse cada una de las consultas del Ejercicio 3.10 del esquema anterior, usando SQL:1999.

Respuesta:a. La definición del esquema se presenta a continuación. Nótese que se pueden añadir referenciasatrasadas, pero no son tan importantes como en OODBS, porque las consultas se pueden escribir en SQL y lasreuniones pueden cuidar las restricciones de integridad.

create type Empleado(nombre-persona varchar(30),calle varchar(15),ciudad varchar(15))

create type Compañía(nombre-compañía varchar(15),(ciudad varchar(15))

Page 99: Manual de Apoyo Al Profesor

create table empleado of Empleado

create table compañía of Compañía

create type Trabaja(persona ref(Empleado) scope empleado,comp ref(Compañía) scope compañía,sueldo int)

create table trabaja of Trabaja

create type Jefe(persona ref(Empleado) scope empleado,(jefe ref(Empleado) scope empleado)

create table jefe of Jefe

b i. select comp � nombrefrom trabajagroup by comp having count(persona) � all(select count(persona)

from trabajagroup by comp)

ii. select comp � nombrefrom trabajagroup by comp having count(sueldo) � all(select count(sueldo)

from trabajagroup by comp)

iii select comp � nombrefrom trabajagroup by comp having avg(sueldo) > (select avg(sueldo)

from trabajawhere comp � nombre-compañía=”Banco Importante”)

9.9 Considérese una base de datos de empleados con las relaciones

empleado (nombre-empleado, calle, ciudad)trabaja (nombre-empleado, nombre-compañía, sueldo)

donde las claves primarias están subrayadas. Escríbase una consulta para encontrar las compañías cuyosempleados ganan un salario superior, en media, que el sueldo medio del Banco Importante.a. Empleando las funciones SQL:1999 donde sea apropiado.b. Sin emplear funciones SQL:1999.

Page 100: Manual de Apoyo Al Profesor

Respuesta:a. create function sueldo-medio(cnombre varchar(15))

returns integerdeclare resultado integer;

select avg(sueldo) into resultadofrom trabajawhere trabaja.compañía-nombre = cnombre

return resultado;endselect nombre-compañíafrom trabajawhere sueldo-medio(nombre-compañía) > sueldo-medio (”Banco Importante”)

b select nombre-compañíafrom trabajagroup by nombre-compañíahaving avg (sueldo) > (select avg (sueldo)

from trabajawhere nombre-compañía = ”Banco Importante”)

9.10 Rescríbase la consulta del Apartado 9.6.1 que devuelve los títulos de todos los libros que tienen másde un autor, empleando la cláusula with en lugar de la función.

Respuesta:

with autoresmúltiples(título, contar) asselect título, count(autor)from autoresgroup by título

select libros4.títulofrom libros4, autoresmúltipleswhere libros4.título = autoresmúltiples.títuloand autoresmúltiples.contar > 1

9.11 Compárese el uso de SQL incorporado con el empleo en SQL de las funciones definidas utilizandoun lenguaje de programación de propósito general. ¿En qué circunstancias se debe utilizar cada una de estascaracterísticas?

Respuesta: Las funciones SQL son principalmente un mecanismo para extender la potencia del SQL, paragestionar atributos de tipos de datos complejos (como imágenes) o para realizar operaciones complejas y noestándar. El SQL incorporado es útil cuando son necesarias acciones imperativas, como la visualización deresultados y la interacción con el usuario. Esto no se puede hacer convenientemente en un entorno de sóloSQL. El SQL incorporado se puede emplear, en lugar de funciones SQL, para la recuperación de datos y,entonces, realizar operaciones de las funciones sobre el resultado del SQL. Sin embargo, un inconveniente esque muchas evaluaciones de las consultas funcionalmente pueden terminar por buclear en el código dellenguaje anfitrión.

9.12 Supóngase que ha sido contratado como consultor para seleccionar un sistema de base de datos parala aplicación de su cliente. Para cada una de las aplicaciones siguientes, indíquese el tipo de sistema de basede datos (relacional, base de datos orientada a objetos basada en un lenguaje de programación persistente,relacional orientada a objetos; no se debe especificar ningún producto comercial) que recomendaría.Justifíquese la recomendación.

Page 101: Manual de Apoyo Al Profesor

a. Sistema de diseño asistido por computadora para un fabricante de aviones.b. Sistema para realizar el seguimiento de los donativos hechos a los candidatos a un cargo público.c. Sistema de información de ayuda para la realización de películas.

Respuesta:a. Un sistema de diseño asistido por computadora para un fabricante de aviones:Una base de datos orientada a objetos sería adecuada para esto. La razón es que CAD requiere tipos de datoscomplejos y, al estar orientadas al cálculo, las herramientas CAD son generalmente usadas en un entorno delenguajes de programación que necesita acceder a la base de datos.b Un sistema para realizar el seguimiento de los donativos hechos a los candidatos a un cargo público:Un sistema relacional sería adecuado para esto, al ser de esperar que los tipos de datos resulten sencillos y unmecanismo potente de consultas sea esencial.c. Un sistema de información de ayuda a la realización de películas:Aquí habrá un uso intensivo de tipos de datos multimedia y otros tipos de datos complejos. Pero las consultasson probablemente sencillas, por lo que es adecuado un sistema relacional objeto.

Page 102: Manual de Apoyo Al Profesor

CAPITULO 10

XML

En los cuatro años y medio desde que se publicó la edición anterior, XML ha pasado de ser una propuestapoco conocida para el Consorcio World Wide Web, a un extenso conjunto de estándares que están siendoempleados ampliamente y cuyo uso crece rápidamente. En este período los objetivos del XML han pasado deser una mejora al SGML o HTML, hasta convertirse en el modelo de datos básico para el intercambio dedatos.

Nuestra visión de XML está decididamente centrada en las bases de datos: es importante serconsciente que muchos de los usos de XML son centros de documentos, pero creemos que la gran mayoría delas aplicaciones XML serán la representación y el intercambio de datos, entre aplicaciones de bases de datos.En este sentido, XML es un modelo de datos que aporta un número de prestaciones más allá de las del modelorelacional, en particular la capacidad para representar información afín en una unidad sencilla, mediante elempleo de estructuras anidadas. Los dominios de aplicaciones específicas, para la representación eintercambio de datos, necesitan sus propios estándares que definan el esquema de datos.

Dada la amplia naturaleza del XML y los estándares relacionados, este capítulo sólo intenta aportaruna introducción y no una descripción completa. Para un curso que pretenda explorar XML en detalle sepuede necesitar material suplementario. Podría incluir tanto información en línea como libros sobre XML.

Page 103: Manual de Apoyo Al Profesor

Ejercicios

10.1 Se da una representación alternativa de la información bancaria que contenga los mismos datos queen la Figura 10.1,pero empleando atributos en vez de sub elementos. Se da también el DTD para estarepresentación.

Respuesta:a. Representación XML de datos, empleando atributos.

<banco><cuenta número-cuenta=“A-101” nombre-sucursal=“Centro”

saldo=“500”></cuenta><cuenta número-cuenta=“A-102” nombre-sucursal=“Navacerrada”

saldo=“400”></cuenta>

<cuenta número-cuenta=“A-201” nombre-sucursal=“Galapagar”saldo=“900”>

</cuenta><cliente nombre-cliente=“González” calle-cliente=“Alma”

ciudad-cliente=“Palo Alto”></cliente><cliente nombre-cliente=“Hayes” calle-cliente=“Main”

ciudad-cliente=“Harrison”></cliente><impositor número-cuenta=“A-101” nombre-cliente=“González”></impositor><impositor número-cuenta=“A-201” nombre-cliente=“González”></impositor><impositor número-cuenta=“A-102” nombre-cliente=“Hayes”></impositor></banco>

b DTD para el banco:<!DOCTYPE banco [

<!ELEMENT cuenta ><!ATTLIST cuenta

número-cuenta ID #REQUIREDnombre-sucursal CDATA #REQUIREDsaldo CDATA #REQUIRED >

<!ELEMENT cliente ><!ATTLIST cliente

nombre-cliente ID #REQUIREDcalle-cliente CDATA #REQUIREDcalle-cliente CDATA #REQUIRED >

<!ELEMENT impositor ><!ATTLIST impositor

número-cuenta IDREF #REQUIREDnombre-cliente IDREF #REQUIRED >

] >

Page 104: Manual de Apoyo Al Profesor

10.2 Demuéstrese, mediante un DTD, cómo representar la relación anidada libros del Apartado 9.1,empleando XML.

Respuesta:<!DOCTYPE bib [

<!ELEMENT libro (título, autor+, editor, palabra clave+)><!ELEMENT editor (nombre-pub, sucursal-pub) ><!ELEMENT título (#PCDATA )><!ELEMENT título ( #PCDATA )><!ELEMENT palabra-clave (#PCDATA )><!ELEMENT nombre-pub (#PCDATA )><!ELEMENT sucursal-pub (#PCDATA )>

] >

10.3 Se da la DTD, para una representación XML, del siguiente esquema relacional anidado

Emp = (nombree,ConjuntoHijos setof(Hijos), ConjuntoMaterias setof(Materias))Hijos = (nombre, Cunpleaños)Cumpleaños = (día, mes, año)Materias = (tipo, ConjuntoExámenes setof(Exámenes))Exámenes = (año, ciudad)

Respuesta:<!DOCTYPE db [

<!ELEMENT emp ( nombree, hijos*, materias*)><!ELEMENT hijos (nombre, cumpleaños)><!ELEMENT cumpleaños (día, mes, año)><!ELEMENT materias (tipo, exámenes+)><!ELEMENT exámenes (año, ciudad)><!ELEMENT nombree (#PCDATA )><!ELEMENT nombre (#PCDATA )><!ELEMENT día (#PCDATA )><!ELEMENT mes (#PCDATA )><!ELEMENT año (#PCDATA )><!ELEMENT tipo (#PCDATA )><!ELEMENT ciudad (#PCDATA )>

] >

10.4 Escríbanse las siguientes consultas en XQuery, asumiendo la DTD del Ejercicio 10.3.a. Encuéntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo.b. Encuéntrense los empleados que hicieron un examen del tipo de materia “mecanografía” en la ciudadde “Madrid”.c. Lístense todos los tipos de materias en Emp.

Respuesta:a. Encuéntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo.

for $e in /db/emp,$m in distinct($e/hijos/cumpleaños/mes)

where $m = ’Marzo’return $e/ nombree

b. Encuéntrense los empleados que hicieron un examen del tipo de materia “mecanografía” en la

Page 105: Manual de Apoyo Al Profesor

ciudad de “Madrid”.

For $e in /db/emp$s in $e/materias[tipo=’mecanografía’]$examen in $s/exámenes

where $examen/ciudad= ’ Madrid’return $e/ nombree

c. Encuéntrense los empleados que hicieron un examen del tipo de materia “mecanografía” en laciudad de “Madrid”.

for $t in distinct (/db/emp/materias/tipo)return $e/enombre

10.5 Escríbanse las consultas en XSLT y XPath sobre la DTD del Ejercicio 10.3, para listar todos lostipos de materia en Emp.

Respuesta:a. XPath: /db/emp/materias/tipob. XSLT:

<xsl:template match=“/db/emp”><tiposmateria><xsl:apply-templates/><tiposmateria>

</xsl:template><xsl:template match=“/materias”>

<tiposmateria><xsl:value-of select=“tipo”/><tiposmateria>

</xsl:template><xsl:template match=“.”/>

10.6 Escríbase una consulta en XQuery en la representación XML de la Figura 10.1, para encontrar elsaldo total entre todas las cuentas en cada sucursal. (Sugerencia: Empléese una consulta anidada para obtenerel efecto de un SQL group by.)

Respuesta:

for $b in distinct (/banco/cuenta/nombre-sucursal)return

<nombre-sucursal>$b/text()let $s := sum (/banco/cuenta[nombre-sucursal=$b]/saldoreturn $s

</nombre-sucursal>

10.7 Escríbase una consulta en XQuery en la representación XML de la Figura 10.1, para calcular lareunión externa por la izquierda de los elementos cliente con elementos cuenta. (Sugerencia: se puede usarla cuantificación universal.)

Page 106: Manual de Apoyo Al Profesor

Respuesta:<lojoin>for $b in /banco/cuenta,

$c in /banco/cliente,$d in /banco/impositor

where $a/número-cuenta = $d/número-cuentaand $c/nombre-cliente = $d/nombre-cliente

return <cuenta-cliente> $c $a </cuenta-cliente>|for $c in /banco/cliente,where every $d in /banco/impositor satisfies(not ($c/nombre-cliente=$d/nombre-cliente))return <cuenta-cliente> $c </cuenta-cliente></lojoin>

10.8 Se da una consulta en XQuery para invertir el anidamiento de los datos del Ejercicio 10.2. Esto es, elnivel más externo del anidamiento la salida debe tener los elementos correspondientes a los autores y cadauno de estos elementos debe tener anidados con los correspondientes a todos los libros escritos por el autor.

Respuesta:For $a in distinct (/bib/libro/autor)return

<autor>$a/text()for $b in (/bib/libro/[autor=$a])return

<libro>$b/título$b/editor$b/palabra-clave

< \libro>< \autor>

10.9 Se da la DTD para una representación XML de la información de la Figura 2.29. Crear un tipo deelemento separado para representar cada relación, pero utilícense ID e IDREF para implantar claves primariasy externas.

Respuesta: La respuesta se presenta en la Figura 10.1.

10.10 Escríbanse consultas en XSLT y XQuery que devuelvan los elementos cliente con los elementoscuentas asociadas, anidados en los elementos cliente, dada la representación de la información bancariaempleando ID e IDREFS en la Figura 10.8.

<!DOCTYPE librería [<!ELEMENT cesta (contiene+, cesta-de)><!ATTLIST cesta

id-cesta ID #REQUIRED ><!ELEMENT cliente (nombre, dirección, teléfono)><!ATTLIST cliente

email ID #REQUIRED ><!ELEMENT libro (año, título, precio, escrito-por, publicado-por)><!ATTLIST libroISBN ID #REQUIRED >

Page 107: Manual de Apoyo Al Profesor

<!ELEMENT almacén (dirección, teléfono, existencias)><!ATTLIST almacén

código ID #REQUIRED ><!ELEMENT autor (nombre, dirección, URL)><!ATTLIST autor

idautor ID #REQUIRED ><!ELEMENT editor (dirección, teléfono)><!ATTLIST editor

nombre ID #REQUIRED ><!ELEMENT cesta-de ><!ATTLIST cesta-de

propietario IDREF #REQUIRED ><!ELEMENT contiene ><!ATTLIST contiene

libro IDREF #REQUIRED >número CDATA #REQUIRED >

<!ELEMENT existencias ><!ATTLIST existencias

libro IDREF #REQUIRED >número CDATA #REQUIRED >

<!ELEMENT escrito-por ><!ATTLIST escrito-por

autores IDREFS #REQUIRED ><!ELEMENT publicado-por ><!ATTLIST publicado-por

editor IDREF #REQUIRED ><!ELEMENT nombre (#PCDATA )><!ELEMENT dirección (#PCDATA )><!ELEMENT teléfono (#PCDATA )><!ELEMENT año (#PCDATA )><!ELEMENT título (#PCDATA )><!ELEMENT precio (#PCDATA )><!ELEMENT número (#PCDATA )><!ELEMENT URL (#PCDATA )>

] >Figura 10.1 DTD del XML para Librería

Respuesta:<banco-2>

for $c in /banco/clientereturn

<cliente>$c/*for $a in $c/id(@cuentas)return $a

</cliente></banco-2>

10.11 Se da un esquema relacional para representar la información bibliográfica como se detalla en elfragmento DTD de la Figura 10.13. El esquema relacional debe registrar el orden de los elementos autor. Sepuede asumir que sólo los libros y artículos aparecen como elementos de nivel superior en los documentosXML.

Page 108: Manual de Apoyo Al Profesor

Respuesta:libro (id-libro, título, año, editor, lugar)artículo (id-artículo, título, diario, año, número, volumen, páginas)libro-autor (id-libro, nombre, apellido, orden)artículo-autor (id-artículo, nombre, apellido, orden)

10.12 Considérese el Ejercicio 10.11 y supóngase que los autores también pueden aparecer comoelementos de nivel superior. ¿Qué cambio habría que realizar al esquema relacional?

Respuesta:libro (id-libro, título, año, editor, lugar)artículo (id-artículo, título, diario, año, número, volumen, páginas)autor (nombre, apellido)libro-autor (id-libro, nombre, apellido, orden)artículo-autor (id-artículo, nombre, apellido, orden)

10.13 Escríbanse las consultas en XQuery del fragmento DTD de bibliografía de la Figura 10.13, pararealizar lo siguiente.a. Encontrar todos los autores que hayan escrito un libro y un artículo en el mismo año.b. Visualizar libros y artículos ordenados por año.c. Visualizar libros con más de un autor.

Respuesta:a. Encontrar todos los autores que hayan escrito un libro y un artículo en el mismo año.

for $a in distinct (/bib/libro/autor)$y in /bib/libro[autor=$a]/año$art in /bib/artículo[autor=$a and año=$y]

return $a

<!DOCTYPE bibliografía [<!ELEMENT libro (título, autor+, año, editor, lugar?)><!ELEMENT artículo (título, autor+, diario, año, número, volumen, páginas?)><!ELEMENT autor ( apellido, nombre) ><!ELEMENT título (#PCDATA )>· · · similares declaraciones PCDATA por año, editor, lugar, diario, año,

número, volumen, páginas, apellido y nombre] >

Figura 10.13 DTD para datos bibliográficos.

b. Visualizar libros y artículos ordenados por año.

for $a in ((/bib/libro) | (/bib/artículo))return $a sortby(año)

c. Visualizar libros con más de un autor.

for $a in ((/bib/libro[autor/count()>1])return $a

Page 109: Manual de Apoyo Al Profesor

10.14 Muéstrese la representación en árbol de los datos XML de la Figura 10.1 y la representación delárbol empleando relaciones nodos e hijo descritas en el Apartado 10.6.1.

Respuesta: La respuesta se presenta en la Figura 10.2.

10.15 Considérese la siguiente DTD recursiva.

<!DOCTYPE partes [<!ELEMENT parte (nombre, informaciónsubpartes*)><!ELEMENT informaciónsubpartes (parte, cantidad)><!ELEMENT nombre (#PCDATA )><!ELEMENT cantidad (#PCDATA )>

] >

a. Se da un pequeño ejemplo de datos correspondientes a la DTD anterior.b. Muéstrese como asociar este DTD a un esquema relacional. Se puede asumir que los nombres deproducto son únicos, es decir, cada vez que aparezca un producto, su estructura de componente será la misma.

Respuesta:a. Se da un pequeño ejemplo de datos correspondientes a la DTD anterior.

La respuesta se presenta en la Figura 10.3.b. Muéstrese como asociar este DTD a un esquema relacional.

parte(id-parte,nombre)informaciónsubpartes(id-parte, id-subparte, cantidad)

Los atributos id-parte e id-subparte de informaciónsubpartes, son claves externas para parte.

nodos(1,elemento,banco,–)nodos(2,elemento,cuenta,–)nodos(3,elemento,cuenta,–)nodos(4,elemento,cuenta,–)nodos(5,elemento,cliente,–)nodos(6,elemento,cliente,–)nodos(7,elemento,impositor,–)nodos(8,elemento,impositor,–)nodos(9,elemento,impositor,–)hijo(2,1) hijo(3,1) hijo(4,1)hijo(5,1) hijo(6,1)hijo(7,1) hijo(8,1) hijo(9,1)nodos(10,elemento,número-cuenta,A-101)nodos(11,elemento,nombre-sucursal,Centro)nodos(12,elemento,saldo,500)hijo(10,2) hijo(11,2) hijo(12,2)nodos(13,elemento,número-cuenta,A-102)nodos(14,elemento,nombre-sucursal,Navacerrada)nodos(15,elemento,saldo,400)hijo(13,3) hijo(14,3) hijo(15,3)nodos(16,elemento,número-cuenta,A-201)nodos(17,elemento,nombre-sucursal,Brighton)nodos(18,elemento,saldo,900)hijo(16,4) hijo(17,4) hijo(18,4)nodos(19,elemento,nombre-cliente,González)

Page 110: Manual de Apoyo Al Profesor

nodos(20,elemento,calle-cliente,Alma)nodos(21,elemento,ciudad-cliente,Palo Alto)hijo(19,5) hijo(20,5) hijo(21,5)nodos(22,elemento,nombre-cliente,Hayes)nodos(23,elemento,calle-cliente,Main)nodos(24,elemento,ciudad-cliente,Harrison)hijo(22,6) hijo(23,6) hijo(24,6)nodos(25,elemento,número-cuenta,A-101)nodos(26,elemento,nombre-cliente,González)hijo(25,7) hijo(26,7)nodos(27,elemento,número-cuenta,A-201)nodos(28,elemento,nombre-cliente,González)hijo(27,8) hijo(28,8)nodos(29,elemento,número-cuenta,A-102)nodos(30,elemento,nombre-cliente,Hayes)hijo(29,9) hijo(30,9)

Figura 10.2 Representación relacional de datos XML como árboles<partes>

<parte><nombre> bicicleta </nombre><informaciónsubpartes>

<parte><nombre> rueda </nombre><informaciónsubpartes>

<parte><nombre> rim </nombre>

</parte><cantidad> 1 </cantidad>

</informaciónsubpartes><informaciónsubpartes>

<parte><nombre> radios </nombre>

</parte><cantidad> 40 </cantidad>

</informaciónsubpartes><informaciónsubpartes>

<parte><nombre> neumático </nombre>

</parte><cantidad> 1 </cantidad>

</informaciónsubpartes></parte><cantidad> 2 </cantidad>

</informaciónsubpartes><informaciónsubpartes>

<parte><nombre> freno </nombre>

</parte><cantidad> 2 </cantidad>

</informaciónsubpartes><informaciónsubpartes>

<parte><nombre> marcha </nombre>

</parte><cantidad> 3 </cantidad>

Page 111: Manual de Apoyo Al Profesor

</informaciónsubpartes><informaciónsubpartes>

<parte><nombre> bastidor </nombre>

</parte><cantidad> 1 </cantidad>

</informaciónsubpartes></parte>

</partes>

Figura 10.3 Ejemplo de datos de partes en XML

Page 112: Manual de Apoyo Al Profesor

CAPITULO 11

ALMACENAMIENTO Y ESTRUCTURA DE ARCHIVOS

Este capítulo presenta los conceptos básicos de las estructuras de ficheros. El capítulo consta realmente de dospartes –la primera se ocupa de las bases de datos relacionales y la segunda de las bases de datos orientadas aobjetos. La segunda parte se puede omitir, sin pérdida de continuidad para los capítulos siguientes.

Muchos diplomados en ciencias de la computación han cubierto algunas de las materias de estecapítulo en cursos anteriores, sobre estructuras de datos o de ficheros. Incluso si los conocimientos de losestudiantes son principalmente sobre estructuras de datos, este capítulo es aún de importancia, dado que tratacuestiones de las estructuras de datos como las referidas al almacenamiento en disco. Las cuestiones sobre lagestión de la memoria intermedia, tratadas en el Apartado11.5.1, deberían resultar familiares a los estudiantesque han realizado cursos de sistemas operativos. Sin embargo, hay aspectos de la gestión de la memoriaintermedia de determinadas bases de datos que hacen que esta sección valga la pena, incluso para losestudiantes con conocimientos de sistemas operativos.

Cambios a la tercera edición:

La discusión de los medios de almacenamiento, en particular los discos magnéticos (Apartado 11.2), se haactualizado para reflejar la tecnología actual. La sección de las estructuras RAID (Apartado 11.3) se hamejorado con ejemplos; la comparación de los niveles RAID se ha modificado, dado que las mejoras en lacapacidad de las unidades de discos han disminuido las ventajas del RAID 5; Se ha ampliado la cobertura delos diccionarios de datos.

Page 113: Manual de Apoyo Al Profesor

Ejercicios

11.1 Indíquense los medios de almacenamiento físico disponibles en las computadoras que se utilizanhabitualmente.Se da la velocidad con la que se puede tener acceso a los datos en cada medio.

Respuesta: La respuesta estará basada en las computadoras y medios de almacenamiento empleados.Ejemplos típicos serían las unidades de disco duro, disquetes y cd-rom.

11.2 ¿Cómo afecta la reasignación de los sectores dañados por los controladores de disco, a la velocidadde recuperación de los datos?

Respuesta: La reasignación de los sectores dañados por los controladores de disco reduce la velocidad derecuperación de los datos, debido a la la pérdida de secuencialidad entre los sectores. Pero eso es mejor que lapérdida de datos, en el caso de no reasignar.

11.3 Considérese la siguiente disposición de los bloques de datos y de paridad de cuatro discos:

Disco 1 Disco 2 Disco 3 Disco 4B 1 B 2 B 3 B 4P 1 B 5 B 6 B 7B 8 P 2 B 9 B 10

. . . .

. . . .

. . . .

Bi representa los bloques de datos; Pi los bloques de paridad. El bloque de paridad Pi, es el bloque de paridadpara los bloques de datos B4i-3 a B4i. ¿Qué, de haber alguno, problemas podría presentar esta disposición?

Respuesta: Esta disposición tiene el problema de que Pi y B4i-3 están en el mismo disco. Por lo que, si eldisco falla, la reconstrucción de B4i-3 es imposible, dado que se pierden tanto datos como paridad.

11.4 Un fallo en el suministro eléctrico que se produzca mientras se escribe un bloque del disco, puededar lugar a que el bloque sólo se escriba parcialmente. Supóngase que se pueden detectar los bloques escritosparcialmente. Un proceso atómico de escritura de bloque es aquél en el que se escribe el bloque entero o no seescribe nada (es decir, no hay procesos de escrituras parciales). Propónganse esquemas para conseguir elefecto de los procesos atómicos de escritura con los siguientes esquemas RAID.Los esquemas deben implicar procesos de recuperación de fallos.a. RAID de nivel 1 (creación de imágenes)b. RAID de nivel 5 (entrelazado de bloques, paridad distribuida)

Respuesta:a. Para asegurar la atomicidad, una operación de escritura de bloques se lleva a cabo como sigue:i. Escríbase la información sobre el primer bloque físico.ii. Cuando se complete con éxito la primera escritura, escríbase la misma información sobre el segundobloque físico.iii El resultado se da por finalizado sólo después que la segunda escritura se complete con éxito.

Durante la recuperación se examina cada par de bloques físicos. Si ambos son idénticos y no sedetectan escrituras parciales, no son necesarias acciones posteriores. Si uno de los bloque ha sido reescritoparcialmente, se reemplaza su contenido con el del otro bloque. Si no hay escrituras parciales, pero difieren en

Page 114: Manual de Apoyo Al Profesor

el contenido, se reemplaza el contenido del primer bloque con el del segundo, o viceversa. Este procedimientode recuperación asegura que un almacenamiento estable tiene un éxito completo (esto es, actualiza ambascopias), o no cambia nada.

El requerimiento de comparar cada correspondiente par de bloques durante la recuperación escostoso. Se puede reducir enormemente el coste siguiendo la pista de las escrituras de bloques que están encurso, empleando una pequeña cantidad de RAM no volátil. En la recuperación, sólo es necesario compararlos bloques para los que está teniendo lugar la escritura.

b. La idea es similar aquí. Para cualquier escritura de bloques, el bloque de información se escribeprimero, seguido del correspondiente bloque de paridad. En el momento de la recuperación, se considera cadaconjunto formado por el enésimo bloque de cada uno de los discos. Si ninguno de los bloques del conjunto hasido escrito parcialmente y el contenido del bloque de paridad es consistente con el de los bloques deinformación, entonces no es necesario tomar más acciones. Si cualquier bloque ha sido escrito parcialmente,se reconstruyen sus contenidos empleando los otros bloques. Si ningún bloque ha sido escrito parcialmente,pero el contenido del bloque de paridad no está de acuerdo con el del bloque de información, se reconstruye elcontenido del bloque de paridad.

11.5 Los sistemas RAID suelen permitir la sustitución de los discos averiados sin que se impida el accesoal sistema. Así, los datos del disco averiado deben reconstruirse y escribirse en el disco de repuesto, mientrasel sistema se halla en funcionamiento. ¿Con cuál de los niveles RAID es menor la interferencia entre losaccesos al disco reconstruido y los accesos al resto de los discos? Justifíquese la respuesta.

Respuesta: El RAID de nivel 1 (creación de imágenes) es el que facilita la reconstrucción de un discoaveriado con un mínimo de interferencias sobre los accesos al disco. Esto es así porque la reconstrucciónimplica la copia de datos desde la imagen del disco averiado. En los otros niveles RAID, la reconstrucciónimplica lecturas de todo el contenido de los otros discos.

11.6 Se da un ejemplo de una expresión de álgebra relacional y de una estrategia de procesamiento deconsultas en cada una de las situaciones siguientes:a. MRU es preferible a LRU.b. LRU es preferible a MRU.

Respuesta:a. MRU es preferible a LRU, donde R1 1 R2 se calcula empleando una estrategia de procesamiento debucles anidados, donde cada tupla en R2 debe compararse con cada bloque en R1. Después que se procesa laprimera tupla de R2, el siguiente bloque necesario es el primero en R1. Sin embargo, dado que es el últimorecientemente empleado, la estrategia de gestión de la memoria intermedia LRU reemplazaría ese bloque si elsistema necesitara uno nuevo.

b. LRU es preferible a MRU donde R1 1 R2 se calcula ordenando las relaciones por valores de reunión ycomparando, entonces, los valores mediante procedimientos a través de las relaciones. Debido a los valores dereuniones duplicadas, puede ser necesario hacer copia de seguridad en una de las relaciones. Esta copia deseguridad podría atravesar un límite de bloque, hacia el bloque más recientemente empleado, el cual se habríasido reemplazado por un sistema empleando gestión de memoria intermedia MRU, si fuera necesario unnuevo bloque.

Bajo MRU algunos bloque no usados pueden permanecer en memoria para siempre. En la prácticasólo se puede emplear MRU en situaciones especiales, como la de la estrategia de bucle anidado discutida enel ejemplo 0.a.

Page 115: Manual de Apoyo Al Profesor

11.7 Considérese el borrado del registro 5 del archivo de la Figura 11.8. Compárense las ventajas relativasde las siguientes técnicas para implementar el borrado:a. Trasladar el registro 6 al espacio ocupado por el registro 5 y desplazar el registro 7 al espacioocupado por el registro 6.b. Trasladar el registro 7 al espacio ocupado por el registro 5.c. Marcar el registro 5 como borrado y no desplazar ningún registro.

Respuesta:a. Aunque trasladar el registro 6 al espacio del 5 y el registro 7 al espacio del 6 es el enfoque massencillo, requiere trasladar casi todos los registros e implica casi todos los accesos.

b. Trasladar el registro 7 al espacio del 5 mueve menos registros, pero destruye cualquier orden en elfichero.

c. Marcando el espacio del registro 5 como borrado se conserva el orden y no se traslada ningúnregistro, pero se requieren costes adicionales para seguir la pista de todos los espacios libres del fichero. Estemétodo puede originar demasiados “agujeros” en el fichero el cual, si no se compacta periódicamente, puedeafectar al rendimiento debido a que se reduce la disponibilidad de registros libres contiguos.

11.8 Muéstrese la estructura del archivo de la Figura 11,9 después de cada uno de los pasos siguientes:a. Insertar (Galapagar, C-323, 1600).b. Borrar el registro 2.c. Insertar (Galapagar, C-626, 2000).

Respuesta: (Se emplea “� i” para denotar un puntero al registro “i”.)El fichero original de la Figura 11.9:

cabecera � 1registro 0 Navacerrada C-102 400registro 1 � 4registro 2 Becerril C-215 700registro 3 Centro C-101 500registro 4 � 6registro 5 Navacerrada C-201 900registro 6registro 7 Centro C-110 600registro 8 Navacerrada C-218 700

a. El fichero después de insertar (Galapagar, C-323, 1600).

cabecera � 4registro 0 Navacerrada C-102 400registro 1 Galapagar C-323 1600registro 2 Becerril C-215 700registro 3 Centro C-101 500registro 4 � 6registro 5 Navacerrada C-201 900registro 6registro 7 Centro C-110 600registro 8 Navacerrada C-218 700

b El fichero después de borrar el registro 2.

Page 116: Manual de Apoyo Al Profesor

cabecera � 2registro 0 Navacerrada C-102 400registro 1 Galapagar C-323 1600registro 2 � 4registro 3 Centro C-101 500registro 4 � 6registro 5 Navacerrada C-201 900registro 6registro 7 Centro C-110 600registro 8 Navacerrada C-218 700

La cadena de registro libre podría haber sido alternativamente desde la cabecera a 4, desde 4 a 2 y,finalmente, desde 2 a 6.c. El fichero después de insertar (Galapagar, C-626, 2000).

Cabecera � 4registro 0 Navacerrada C-102 400registro 1 Galapagar C-323 1600registro 2 Galapagar C-626 2000registro 3 Centro C-101 500registro 4 � 6registro 5 Navacerrada C-201 900registro 6registro 7 Centro C-110 600registro 8 Navacerrada C-218 700

11.9 Dándose un ejemplo de una aplicación de bases de datos en que sea preferible el método del espacioreservado para la representación de los registros de longitud variable, frente al método de los punteros.Justifíquese la respuesta.

Respuesta: En el método del espacio reservado una consulta, comparando el último campo existente en unregistro con algún valor, requiere sólo una lectura desde el disco. Esta simple lectura es preferible a las,potencialmente, numerosas lecturas que son necesarias para perseguir los punteros al último campo, si seemplea el método del puntero.

11.10 Se da un ejemplo de una aplicación de bases de datos en que sea preferible el método de los punterospara representar los registros de longitud variable, al método del espacio reservado.Justifíquese la respuesta.

Respuesta: Empleando el método de los punteros, una operación de reunión sobre atributos que estánsolamente en el bloque ancla, puede realizarse sólo sobre esta pequeña cantidad de datos, en vez de la relaciónentera, como sería el caso de emplear el método de reserva de espacio. Por eso, en este ejemplo, es preferibleel método del puntero.

11.11 Muéstrese la estructura del archivo de la Figura 11,12 después de cada uno de los pasos siguientes:a. Insertar (Becerril, C-101, 2800).b. Insertar (Galapagar, C-323, 1600).c. Borrar (Navacerrada, C-102, 400).

Page 117: Manual de Apoyo Al Profesor

Respuesta:a. insertar (Becerril, C-101, 2800) cambia el registro 2 a:Becerril C-215 700 C-101 2800 � �

b insertar (Galapagar, C-323, 1600) cambia el registro 5 a:Galapagar C-216 750 C-323 1600 � �

c. borrar (Navacerrada, C-102, 400) cambia ek registro 0 a:

Navacerrada C-102 900 C-218 700 � �

11.12 ¿Qué ocurre si se intenta insertar el registro

(Navacerrada, C-323, 3000)

en el fichero de la Figura 11.12?

Respuesta: Inserta (Navacerrada, C-323, 3000) en el fichero de la Figura 11.12 causa un error porque elregistro Navacerrada ha superado la longitud máxima reservada.

11.13 Muéstrese la estructura del archivo de la Figura 11.13 después de cada uno de los pasos siguientes:a. Insertar (Becerril, C-101, 560.000).b. Insertar (Galapagar, C-323, 320.000).c. Borrar (Navacerrada, C-102, 80.000).

Respuesta:a. La figura después de insertar (Becerril, C-101, 2800).

0 � 5 Navacerrada C-102 4001 Collado Mediano C-305 3502 � 9 Becerril C-215 7003 � 7 Centro C-101 5004 Moralzarzal C-222 7005 � 8 C-201 9006 Galapagar C-216 7507 C-110 6008 C-218 7009 C-101 2800

b La figura después de insertar (Galapagar, C-323, 1600).

0 � 5 Navacerrada C-102 4001 Collado Mediano C-305 3502 � 9 Becerril C-215 7003 � 7 Centro C-101 5004 Moralzarzal C-222 7005 � 8 C-201 9006 � 10 Galapagar C-216 7507 C-110 6008 C-218 7009 C-101 280010 C-323 1600

Page 118: Manual de Apoyo Al Profesor

c. La figura después de borrar (Navacerrada, C-102, 400).

1 Collado Mediano C-305 3502 � 9 Becerril C-215 7003 � 7 Centro C-101 5004 Moralzarzal C-222 7005 � 8 Navacerrada C-201 9006 � 10 Galapagar C-216 7507 C-110 6008 C-218 7009 C-101 280010 C-323 1600

11.14 Explíquese por qué la asignación de los registros a los bloques afecta de manera significativa alrendimiento de los sistemas de bases de datos.

Respuesta: Si se asignan registros relacionados a los bloques, a menudo se puede recuperar la mayoría, otodos, de los registros solicitados por una consulta con un acceso a disco. Los accesos a disco tienden a ser loscuellos de botella en las bases de datos; dado que esta estrategia de asignación reduce el número de accesos adisco para una operación dada, mejora significativamente el rendimiento.

11.15 Si es posible, determínese la estrategia de gestión de la memoria intermedia de su sistema operativoejecutándose en su computadora y los mecanismos que proporciona para controlar la sustitución de páginas.Discútase cómo el control sobre la sustitución que proporciona podría ser útil para la implementación desistemas de bases de datos.

Respuesta: El sistema operativo típico emplea LRU para la sustitución de la memoria intermedia. A menudoesta es una mala estrategia para las bases de datos. Como se ha explicado en el Apartado 11.5.2 del texto,MRU es la mejor estrategia para reuniones en bucle anidado. En general ninguna estrategia sencilla gestionabien todos los escenarios e, idealmente, el sistema de base de datos debería tener su propia caché de memoriaintermedia, para la que la política de sustitución tiene en cuenta todas las cuestiones relacionadas con elrendimiento.

11.16 En la organización secuencial de los archivos, ¿por qué se utiliza un bloque de desbordamientoaunque sólo haya en ese momento un registro de desbordamiento?

Respuesta: Un bloque de desbordamiento se utiliza en la organización secuencial de los archivos porque unbloque es el espacio más pequeño que se puede leer desde un disco. Por lo tanto, emplear cualquier regiónmás pequeña no sería útil desde un punto de vista del rendimiento. El espacio ahorrado al asignar elalmacenamiento en disco en unidades de registros, sería ensombrecido por el coste de rendimiento de permitirbloques que contengan registros de múltiples ficheros.

11.17 Indíquense dos ventajas y dos inconvenientes de cada una de las estrategias siguientes para elalmacenamiento de una base de datos relacional.a. Almacenar cada relación en un archivo.b. Almacenar varias relaciones (quizá incluso toda la base de datos) en un archivo.

Respuesta:a. Las ventajas de almacenar cada relación como un archivo incluyen emplear el sistema de ficherosque soporta el sistema operativo, simplificando el sistema gestor de la base de datos, pero incurre en ladesventaja de restringir la capacidad del sistema gestor de base de datos para incrementar el rendimiento, por

Page 119: Manual de Apoyo Al Profesor

usar estructuras de almacenamiento más sofisticadas.b. Utilizando un fichero para toda la base de datos se pueden implementar estas estructuras complejasa través del sistema gestor de las base de datos, pero se incrementa el tamaño y la complejidad de la base dedatos.

11.18 Considérese una base de datos relacional con dos relaciones:

curso (nombre-curso, aula, profesor)matrícula (nombre-curso, nombre-estudiante, calificación)

Defínanse ejemplos de estas relaciones para tres cursos, en cada uno de los cuales se matriculan cincoestudiantes. Se da una estructura de archivos de estas relaciones que utilice la agrupación.

Respuesta:

relación cursonombre-curso aula profesorPascal CS-101 Calvin, B c1C CS-102 Calvin, B c2LISP CS-102 Kess, J c3

relación matrículanombre-curso nombre-estudiante calificaciónPascal Carper, D A e1Pascal Merrick, L A e2Pascal Mitchell, N B e3Pascal Bliss, A C e4Pascal Hames, G C e5C Nile, M A e6C Mitchell, N B e7C Carper, D A e8C Hurly, I B e9C Hames, G A e10Lisp Bliss, A C e11Lisp Hurly, I B e12Lisp Nile, M D e13Lisp Stars, R A e14Lisp Carper, D A e15

el bloque 0 contiene: c1, e1, e2, e3, e4, y e5el bloque 1 contiene: c2, e6, e7, e8, e9 y e10

el bloque 2 contiene: c3, e11, e12, e13, e14, y e15

11.19 Considérese la siguiente técnica de mapa de bits para realizar el seguimiento del espacio libre en unfichero. Por cada bloque del fichero se mantienen dos bits en el mapa. Si el bloque está lleno entre el 0 y el30%, los bits son 00, entre 30% y 60% , 01, entre 60% y 90%, 10 y por encima del 90%, 11. Tales mapas debits pueden mantenerse en memoria, incluso para ficheros muy grandes.a. Descríbase como mantener actualizado el mapa de bits al insertar y eliminar registros.b. Descríbanse el beneficio de la técnica de los mapas de bits sobre las listas libres, al buscar espaciolibre y al actualizar su información.

Respuesta:a. Cada vez que se inserta o borra un registro, comprueba si el empleo el bloque ha cambiado los

Page 120: Manual de Apoyo Al Profesor

niveles. En tal caso, se actualizan los bits correspondientes.

b. Si se requiere espacio libre para n registros entonces, en la técnica de las listas libres, son necesariosn accesos de la lista de registros libres. Sin embargo, en la técnica del mapa de bits, un bloque con espaciolibre para n registros ( o más de un bloque si hace falta) se puede averiguar directamente. El espacio libre asíobtenido está también mas contiguo que el obtenido mediante la técnica de listas libres.

11.20 Se da una versión normalizada de la relación Metadatos-índices y explíquese por qué al usar laversión normalizada se incurriría en pérdida de rendimiento.

Respuesta: La relación metadatos-índices se puede normalizar como sigue

metadatos-índices (nombre-índice, nombre-relación, tipo-índice, conjunto-atributos)metadatos-conjunto-atributos (nombre-relación, conjunto-atributos, nombre-atributo)

Aunque la versión normalizada tendrá menos requerimientos de espacio, serán necesarios accesos extras aldisco para leer metadatos-conjunto de atributos, cada vez que tenga que accederse a un índice. Así, estoocasionará una pérdida de rendimiento.

11.21 Explíquese el motivo de que un IDO físico deba contener más información que un puntero queapunte a una ubicación física de almacenamiento.

Respuesta: Un IDO físico necesita tener un identificador único, además de un puntero, para una ubicaciónfísica de almacenamiento. Esto se requiere para prevenir desreferencias de los punteros colgantes.

11.22 Si se utilizan IDOs físicos, se puede reubicar un objeto guardando un puntero a su nueva ubicación.En el caso de que se guarden varios punteros para un objeto, ¿Cuál sería el efecto sobre la velocidad derecuperación? Respuesta: En caso de guardar varios punteros para un objeto, la velocidad de recuperacióndecrecerá porque el acceso requerirá acceder a las series de ubicaciones desde las que el objeto ha sidosucesivamente enviado a la ubicación actual.

Se pueden evitar accesos múltiples manteniendo siempre, en la ubicación más antigua, la últimadirección del objeto. Esto se puede hacer comprobando, al enviar, si este objeto ya ha sido enviado y ,en esecaso ,actualizando la dirección de envío a la ubicación más antigua. Así, a lo sumo se requerirán dos accesos.

11.23 Defínase el término puntero colgante. Descríbase la manera en que el esquema de identificadorúnico ayuda a detectar los punteros colgantes en las bases de datos orientadas a objetos.

Respuesta: Un puntero colgante es un puntero a un área que ya no contiene datos válidos.En el esquema de identificador único para detectar punteros colgantes, los IDOs físicos pueden

contener un identificador único, que es un entero que distingue el IDO de los identificadores de otros objetosque resultaron ser al almacenados en la misma ubicación anterior y fueron borrados o movidos a otra parte. Elidentificador único se almacena también con el objeto, debiendo concordar los identificadores en un IDO conlos correspondientes objetos. Si el identificador único en un IDO físico no concuerda con el identificadorúnico en el objeto al cual apunta el IDO, el sistema detecta que el puntero es un puntero colgante y señala unerror.

11.24 Considérese el ejemplo de la página 435, que muestra que no hace falta el rescate si se emplea elrescate hardware. Explíquese el motivo de que, en ese ejemplo, resulte seguro cambiar el identificador cortode la página 679.34278 desde 2395 a 5001. ¿Puede tener ya alguna otra página el identificador corto 5001?. Sifuera así, ¿cómo se resolvería esa situación?

Page 121: Manual de Apoyo Al Profesor

Respuesta: Al rescatar, si el identificador corto de la página 679.34278 cambia de 2395 a 5001, es porquea. el sistema descubre que 679.34278 ya ha sido asignado a la página de memoria virtual 5001 enalgún paso anterior, o si nob. 679.34278 no ha sido asignado en ninguna página de memoria virtual hasta ahora y la página dememoria virtual 5001 se asigna ahora a ella.

Así, en cualquier caso, no puede ser cierto que la página actual ya utilice el mismo identificador corto 5001,para referirse a alguna otra página de la base de datos diferente de 679.34278. Alguna otra página puede usar5001 para referirse a una página de base de datos diferente, pero entonces cada página tiene sus propiascorrespondencias independiente, desde identificadores de página cortos a completos, para que esto seacorrecto.

Nótese que si se rescata como se describe en el texto y diferentes procesos necesitan accedersimultáneamente a la página de la base de datos, habrán de asociar copias separadas de la página para susespacios individuales de dirección virtual. Esto puede evitarse mediante extensiones al esquema.

Page 122: Manual de Apoyo Al Profesor

CAPITULO 12

INDEXACION Y ASOCIACION

Este capítulo cubre las técnicas de indexación, desde la más básica a las altamente especializadas. Debido alempleo extensivo de índices en los sistemas de bases de datos, este capítulo constituye una parte importantedel curso de bases de datos.Una clase que ya haya tenido un curso sobre estructuras de datos estará familiarizada con asociaciones y,posiblemente, incluso con árboles B+. Sin embargo, este capítulo es de necesaria lectura, incluso para estosestudiantes, dado que los cursos de estructuras de datos generalmente cubren las indexaciones en memoriaprincipal. Aunque los conceptos afectan a los métodos de acceso a las bases de datos, los detalles (porejemplo, nodos de tamaño bloque), les resultarán nuevos a tales estudiantes.Los apartados sobre los árboles B (Apartados 12.4), ficheros en retícula (Apartado 12.9.3) e indexaciones demapas de bit (Apartado 12.9.4) se pueden omitir si así se desea.

Cambios a la tercera edición:

La descripción de consultas sobre árboles B+ se ha ampliado con seudocódigo. Se ha simplificado elseudocódigo para la inserción en árboles B+. La sección sobre la definición de índices en SQL (Apartado12.8) es nueva en esta edición, así como el tratamiento de índices de mapas de bits (Apartado 12.9.4).

Page 123: Manual de Apoyo Al Profesor

Ejercicios

12.1 ¿Cuándo es preferible utilizar un índice denso en vez de uno disperso? Razónese la respuesta.

Respuesta: Es preferible utilizar un índice denso en lugar de uno disperso cuando el fichero no está ordenadosobre el campo índice (como cuando el índice es un índice secundario), o cuando el fichero de índices espequeño, comparado con el tamaño de la memoria.

12.2 Dado que los índices agilizan el procesamiento de consultas, ¿por qué no deberían de mantenerse envarias claves de búsqueda? Enumérense tantas razones como sea posible.

Respuesta: Razones para no mantener varios índices de búsqueda:a. Durante las inserciones y los borrados, cada índice requiere tiempo adicional de CPU y sobrecargade E/S a disco.b. Los índices sobre claves que no son primarias podrían tener que ser cambiados o actualizados,aunque no así en los índices sobre la clave primaria (esto es porque las actualizaciones, generalmente, nomodifican los atributos de la clave primaria).c. Cada índice extra requiere espacio de almacenamiento adicional.d. Para las consultas que implican condiciones sobre varias claves de búsqueda la eficiencia podría noser mala, incluso si sólo algunas de las claves tienen índices sobre ellas.Por tanto, cuando ya existen muchos índices, el rendimiento de la base de datos mejora menos por la adiciónde índices.

12.3 ¿Cuál es la diferencia entre un índice primario y un índice secundario?

Respuesta: El índice primario está sobre el campo que especifica el orden secuencial del fichero. Sólo puedehaber un índice primario, mientras que puede haber muchos secundarios.

12.4 ¿Es posible, en general, tener dos índices primarios en la misma relación para dos claves debúsqueda diferentes? Razónese la respuesta.

Respuesta: En general, no es posible tener dos índices primarios en la misma relación para diferentes claves,porque las tuplas en una relación habrían de estar almacenadas en diferente orden, para tener los mismosvalores almacenados juntos. Se podría cumplir esto almacenando la relación dos veces y duplicando todos losvalores pero, para un sistema centralizado, no es eficiente.

12.5 Constrúyase un árbol B+ con el siguiente conjunto de valores de la clave:

(2, 3, 5, 7, 11, 17, 19, 23, 29, 31)

Supóngase que el árbol está inicialmente vacío y que se añaden los valores en orden ascendente. Constrúyanseárboles B+ para los casos en que el número de punteros que caben en un nodo son:a. Cuatrob. Seisc. Ocho

Page 124: Manual de Apoyo Al Profesor

Respuesta: Lo siguiente ha sido generado al insertar valores en el árbol B+ en orden ascendente. Un nodo(diferente del raíz) nunca fue permitido tener menos de !n/2" valores/punteros.a.

2 3 5 7 29 31 172911 19 23195 11

b.

19 31 29 23 17 11 7 5 3 219 7

c.

11 3 2115 7 17 19 23 29 31

12.6 Para cada árbol B+ del Ejercicio 12.5, muéstrense los pasos involucrados en las siguientes consultas:a. Encontrar los registros con un valor de la clave de búsqueda de 11.b. Encontrar registros con un valor de la clave de búsqueda entre 7 y 17, ambos inclusive.

Respuesta:

Con estructura 0.a:a. Encontrar registros con un valor de 11i. Buscar el índice de primer nivel; seguir el primer puntero.ii. Buscar el siguiente nivel; seguir el tercer puntero.iii Buscar el nodo hoja; seguir el primer puntero para registros con valor de clave 11.

b. Encontrar registros con valor entre 7 y 17 (inclusive)i. Buscar el índice superior; seguir el primer puntero.ii. Buscar el siguiente nivel; seguir el segundo puntero.iii Buscar el tercer nivel; seguir el segundo puntero para registros con valor de clave 7 y, después deacceder a ellos, volver al nodo hoja.iv Seguir el cuarto puntero para el siguiente bloque de hojas en la cadena.v Seguir el primer puntero para registros con valor de clave 11, después volver.vi Seguir el segundo puntero para registros con valor de clave 17.

Con estructura 0.b:a. Encontrar registros con un valor de 11i. Buscar el nivel superior; seguir el segundo puntero.ii. Buscar el siguiente nivel; seguir el segundo puntero para registros con valor de clave 11.

b. Encontrar registros con valor entre 7 y 17 (inclusive)i. Buscar el nivel superior; seguir el segundo puntero.ii. Buscar el siguiente nivel; seguir el primer puntero para registros con valor de clave 7, despuésvolver.iii Seguir el segundo puntero para registros con valor de clave 11, después volver.iv Seguir el tercer puntero para registros con valor de clave 17.

Page 125: Manual de Apoyo Al Profesor

Con estructura 0.c:a. Encontrar registros con un valor de 11i. Buscar el nivel superior; seguir el segundo puntero.ii. Buscar el siguiente nivel; seguir el primer puntero para registros con valor de clave 11.

b. Encontrar registros con valor entre 7 y 17 (inclusive)i. Buscar el nivel superior; seguir el primer puntero.ii. Buscar el siguiente nivel; seguir el cuarto puntero para registros con valor de clave 7, despuésvolver.iii Seguir el octavo puntero para el siguiente bloque de hojas en la cadena.iv Seguir el primer puntero para registros con valor de clave 11, después volver.v Seguir el segundo puntero para registros con valor de clave 17.

12.7 Para cada árbol B+ del Ejercicio 12.5, muéstrese el aspecto del árbol después de cada una de lassiguientes operaciones:a. Insertar 9.b. Insertar 10.c. Insertar 8.d. Borrar 23.e. Borrar 19.

Respuesta:• Con estructura 0.a:

Insertar 9:

2 3 5 7 29 31 172911 19 23195 119

Insertar 10:9910 2 329195 115 7 17 11 19 23 29 31

Insertar 8:8 9910 2 329195 115 7 17 11 19 23 29 31

Borrar 23:9 19 10 89112 3 5 7 29 31 17 1119 5

Page 126: Manual de Apoyo Al Profesor

Borrar 19:

29299 10 89112 3 5 7 31 17 115

• Con estructura 0.b:Insertar 9:

9 19 31 29 23 17 11 7 5 3 219 7

Insertar 10:10 9 19 31 29 23 17 11 7 5 3 219 7

Insertar 8:8 5 3 2 9 7 10 17 11 19 31 29 2319 7 10

Borrar 23:8 5 3 2 9 7 10 17 11 19 31 2919 7 10

Borrar 19:

7 108 5 3 2 9 7 10 17 11 31 29

• Con estructura 0.c:Insertar 9:

9 17 3 2 11115 7 19 23 29 31

Insertar 10:10 9 17 3 2 11115 7 19 23 29 31

Insertar 8:8 10 9 17 3 2 11115 7 19 23 29 31

Borrar 23:8 10 9 17 3 2 11115 7 19 29 31

Page 127: Manual de Apoyo Al Profesor

Borrar 19:

8 10 9 17 3 2 11115 7 29 31

12.8 Considérese el esquema modificado de redistribución para árboles B+ descrito en la página 463.¿Cuál es la altura esperada del árbol en función de n?.

Respuesta: Si hay K valores de claves de búsqueda y m - 1 hermanos están implicados en la redistribución, laaltura esperada del árbol es: log?(m-1)n/m?(K)

12.9 Repítase el Ejercicio 12.5 para un árbol B.

Respuesta: El algoritmo para la inserción en un árbol B es:Localizar el nodo hoja en el que el nuevo par clave-puntero se debería insertar.

Si hay espacio sobrante en el nodo hoja, realizar la inserción en la ubicación correcta y la tarea se completa.De lo contrario, insertar el par clave-puntero conceptualmente en la ubicación correcta del nodo hoja y,entonces, partirlo por la mitad.El par intermedio clave-puntero no va dentro de los nodos resultantes de la operación dividir. En su lugar, seinserta en el nodo padre junto al puntero del árbol para el nuevo hijo. Si no hay espacio en el padre, se repiteun procedimiento similar.

El algoritmo de borrado es:Localizar el valor el valor de la clave a borrar, en el árbol B.

a. Si se encuentra un nodo hoja, borrar el par clave-puntero y el registro del fichero. Si el nodo hojacontiene menos de !n/2" -1 entradas como resultado de este borrado, o se fusiona con sus hermanos o algunasentradas se redistribuyen para ello. La fusión implicaría un borrado, mientras que la redistribución implicaríacambios en las entradas del nodo del padre. Los borrados pueden rizarse hasta la raíz del árbol B.

b. Si el valor de la clave se encuentra en un nodo interno del árbol B reemplazar, a él y a su puntero deregistro, por el menor valor de la clave en el sub árbol inmediatamente a su derecha y el correspondientepuntero del registro. Borrar el registro actual en el fichero de la base de datos. Borrar después el menor valordel par clave-puntero del sub árbol. Este borrado pueden originar aún más borrados de rizamiento hasta la raízdel árbol B.

Seguidamente se presentan los árboles B después de las inserciones de los valores clave dados. Se supone quelos nodos hoja y no hoja mantienen el mismo número de valores de clave de búsqueda.a.? ? ? ?? ?? ? ??_ _ _ _ _ _ _9_

ZZXXXz5

1711 1929

Page 128: Manual de Apoyo Al Profesor

b.______XXXXXXXXXXz???7 23

17?19?31?29?11?5?3?2?

c.

12.10 Explíquense las diferencias entre las asociaciones abiertas y cerradas. Coméntense los beneficios decada técnica en aplicaciones de bases de datos.

Respuesta: Las asociaciones abiertas pueden colocar claves con el mismo valor de la función asociativa endiferentes cajones. Las asociaciones cerradas siempre colocan tales claves juntas, en el mismo cajón. Así, eneste caso, diferentes cajones pueden ser de diferentes tamaños, aunque la implementación pueda serenlazando los cajones de tamaño fijo, empleando cadenas de desbordamiento. El borrado es difícil conasociaciones abiertas dado que todos los cajones pueden tener que ser inspeccionados antes de poder constatarque un valor clave ha sido borrado, mientras que en las asociaciones cerradas sólo los cajones cuya direcciónse obtiene por asociación, el valor clave necesita ser inspeccionado. Los borrados son más comunes en lasbases de datos y por lo tanto una asociación cerrada es más apropiada para ellas. Para un pequeño, estáticoconjunto de datos, las búsquedas pueden ser más eficientes empleando asociaciones abiertas. La tabla desímbolos de un compilador sería un buen ejemplo.

12.11 ¿Cuáles son las causas del desbordamiento de cajones en un fichero con una organizaciónasociativa? ¿Qué se puede hacer para reducir la aparición del desbordamiento de cajones?

Respuesta: Las causas del desbordamiento de cajones son:a. Nuestra estimación del número de registros que la relación iba a tener fue demasiado bajo y, por latanto, el número de cajones asignados no fue suficiente.

b. Desviación en la distribución de registros a los cajones. Esto puede suceder porque haya muhosregistros con el mismo valor de clave de búsqueda, o porque la función de asociación elegida no tuviera laspropiedades deseables de uniformidad y aleatoriedad.

Para reducir la ocurrencia de los desbordamientos se puede:

a. Seleccionar la función de asociación más cuidadosamente y hacer mejores estimaciones sobre eltamaño de la relación.

Page 129: Manual de Apoyo Al Profesor

b. Si el tamaño estimado de la relación es nr y el número de registros por bloque es fr, asignar (nr/fr) *(1 + d) cajones, en lugar de (nr/fr). Aquí d es un factor de escape, típicamente en torno a 0’2. Algún espacio semalgasta: En torno al 20% del espacio de los cajones estará vacío. Pero la ventaja es que algunas de lasdesviaciones se gestionan y la probabilidad de desbordamiento se reduce.

12.12 Supóngase que se está empleando la asociación extensible en un archivo que contiene registros conlos siguientes valores de la clave de búsqueda:

2, 3, 5, 7, 11, 17, 19, 23, 29, 31

Muéstrese la estructura asociativa extensible para este archivo si la función de asociación es h(x) = x mod 8 ylos cajones pueden contener hasta tres registros.

Respuesta:33295191132111110100011010001

00032231237172

12.13 Muéstrese como cambia la estructura asociativa extensible del Ejercicio 12.12, como resultado derealizar los siguientes pasos:a. Borrar 11.b. Borrar 31.c. Insertar 1.d. Insertar 15.

Page 130: Manual de Apoyo Al Profesor

Respuesta:a. Borrar 11: A partir de la respuesta del Ejercicio 12.12, cambiar el tercer cajón a:3319

En este momento es posible agrupar el segundo y tercer cajón. Entonces es suficiente si la tabla direcciones delos cajones tiene sólo cuatro entradas en lugar de ocho. Para el objetivo de esta respuesta no se hace laagrupación.

b. Borrar 31: A partir de la respuesta del Ejercicio 12.12, cambiar el último cajón a:

2237

c. Insertar 1: A partir de la respuesta del Ejercicio 12.12, cambiar el primer cajón a:

1172

d. Insertar 15: A partir de la respuesta del Ejercicio 12.12, cambiar el último cajón a:

152237

12.14 Se da un seudocódigo para el borrado de entradas desde una estructura asociativa extensible,incluyendo los detalles de cuándo y cómo agrupar cajones. No preocuparse sobre la reducción del tamaño dela tabla de direcciones de los cajones.

Respuesta: Sea i el número de bits del valor de asociación empleado en la tabla asociativa. Sea BSIZE lacapacidad máxima de cada cajón.

delete(valor Kl)begin

j = primeros i bits de orden superior de h(Kl);borrar el valor Kl del cajón j;agrupar(cajón j);

end

coalesce(cajón j)begin

ij = bits utilizados en el cajón j;k = cualquier cajón con los primeros (ij - 1) bits iguales

a los del cajón j, mientras el bit ij está reservado;ik = bits utilizados en el cajón k;if(ij _= ik)

return; /* los cajones no se pueden fusionar */

Page 131: Manual de Apoyo Al Profesor

if(entradas en j + entradas en k > BSIZE)return; /* los cajones no se pueden fusionar */

mover las entradas del cajón k al cajón j;

reducir en 1 el valor de ij;hacer que todas las entradas de la tabla de direcciones de los cajones,que apuntan al cajón k, lo hagan al j;

agrupar(cajón j);end

Nótese que sólo se pueden fusionar dos cajones a la vez. El prefijo asociativo común del cajónresultante tendrá una longitud menor que los dos cajones fusionados. Por lo tanto, nos fijamos en que el cajóncompañero del cajón j se diferencia de él sólo en el último bit. Si el prefijo asociativo común de este cajón noes ij , implica que el cajón compañero ha sido a su vez dividido, con lo que no es posible la fusión.

Cuando la fusión tiene éxito fusiones posteriores pueden ser posibles, lo cuál se gestiona medianteuna llamada recursiva para agrupar al final de la función.

12.15 Sugiérase una manera eficiente para comprobar si la tabla de direcciones de los cajones en unaasociación extensible se puede reducir de tamaño, mediante el almacenamiento de un recuento extra con latabla de direcciones de los cajones. Dense detalles de como se debería mantener el recuento cuando loscajones se dividan, agrupen o borren.

(Nota: la reducción del tamaño de la tabla de direcciones de cajones es una operación costosa y lasinserciones posteriores pueden originar que la tabla crezca de nuevo. Por lo tanto, es mejor no reducir eltamaño tan pronto como se pueda, sino hacerlo sólo si el número de entradas de índice se reduce encomparación con el tamaño de la tabla de direcciones de cajones.)

Respuesta: Si la tabla asociativa está utilizando actualmente i bits del valor de asociación, manténgase uncontador de cajones para los que la longitud del prefijo asociativo común sea exactamente i.

Considérese un cajón j con longitud del prefijo asociativo común ij. Si el cajón esta siendo dividido eij es igual a i, entonces se reinicia el contador a 1. Si el cajón esta siendo dividido e ij es uno menos que i,entonces se incrementa el contador en 1. Si el cajón esta siendo agrupado e ij es igual a i, entonces se reduceel contador en 1. Si el contador llega a ser 0, entonces la tabla de direcciones de los cajones se puede reducirde tamaño en ese momento.

Sin embargo, nótese que si la tabla de direcciones de los cajones no se reduce en ese momento,entonces el contador no tiene significado después. Si se desea posponer la reducción, se ha de conservar unarray de contadores, es decir un contador por cada valor del prefijo asociativo común. El array ha deactualizarse de una misma manera. La tabla de direcciones de los cajones se puede reducir si la ith entrada delarray es 0, donde i es el número de bits que la tabla está empleando. Dado que la reducción de la tabla decajones es una operación costosa, no siempre es aconsejable reducir la tabla. Sólo debería reducirse cuando unnúmero suficiente de entradas, al final del array de contadores, lleguen a ser 0.

12.16 ¿Por qué una estructura asociativa no es la mejor elección para una clave de búsqueda en la que sonfrecuentes las consultas de rangos?

Respuesta: Una consulta de rangos no puede ser contestada eficientemente empleando un índice asociativo,porque habrá que leer todos los cajones. Esto se debe a que los valores de las claves en el rango no ocupanespacios consecutivos en los cajones, sino que están distribuidos uniformemente y aleatoriamente a través detodos los cajones.

12.17 Considérese un archivo en retícula en el cual se desea evitar el desbordamiento de cajones porrazones de rendimiento. En los casos en los que sea necesario un cajón de desbordamiento, en su lugar sereorganiza el archivo. Preséntese un algoritmo para esta reorganización.

Page 132: Manual de Apoyo Al Profesor

Respuesta: Considérese un array de retículas de dos dimensiones. Cuando se desborda un cajón se puedendividir en dos los rangos correspondientes a esas fila y columna, en dos escalas lineales. De este modo lasescalas lineales tomarán, cada una, una entrada adicional y el cajón se divide en cuatro cajones. Los rangosdeberían dividirse de tal modo que aseguren que los cuatro cajones resultantes tienen casi el mismo númerode valores.Puede haber otros cuantas heurísticas para decidir cómo reorganizar los rangos y, por tanto, las escalaslineales y arrays de retículas.

12.18 Considérese la relación cuenta de la Figura 12.25.a. Constrúyase un índice de mapa de bits sobre los atributos nombre-sucursal y saldo, separando losvalores de saldo en 4 rangos: menores que 250,entre 250 y menor que 500 entre 500 y menor que 750 y 750 omayor.b. Considérese una consulta que solicite todas las cuentas en Centro con un saldo de 500 o más.Muéstrense los pasos implicados en la consulta así como los mapas de bits intermedios y finales construidospara responder la consulta.

Respuesta: A continuación se reproduce la relación cuenta de la Figura 12.25.

C-217 Galapagar 750C-101 Centro 500C-110 Centro 600C-215 Becerril 700C-102 Navacerrada 400C-201 Navacerrada 900C-218 Navacerrada 700C-222 Moralzarlal 700C-305 Collado Mediano 350

Mapa de bits para nombre-sucursalGalapagar 1 0 0 0 0 0 0 0 0Centro 0 1 1 0 0 0 0 0 0Becerril 0 0 0 1 0 0 0 0 0Navacerrada 0 0 0 0 1 1 1 0 0Moralzarzal 0 0 0 0 0 0 0 1 0Collado Mediano 0 0 0 0 0 0 0 0 1

Mapa de bits para saldo

L1 0 0 0 0 0 0 0 0 0L2 0 0 0 0 1 0 0 0 1L3 0 1 1 1 0 0 1 1 0L4 1 0 0 0 0 1 0 0 0

donde, nivel L1 está por debajo de 250, nivel L2 desde 250 hasta debajo de 500, L3 desde 500 hasta debajo de750 y nivel L4 por encima de 750.

Page 133: Manual de Apoyo Al Profesor

Para encontrar todas las cuentas de Centro con saldo de 500 o más, se encuentra la unión de mapasde bits para los niveles L3 y L4 y, después, se inserta con el mapa de bits para Centro.

Centro 0 1 1 0 0 0 0 0 0L3 0 1 1 1 0 0 1 1 0L4 1 0 0 0 0 1 0 0 0L3 � L4 1 1 1 1 0 1 1 1 0Centro 0 1 1 0 0 0 0 0 0Centro (L3 � L4) 0 1 1 0 0 0 0 0 0

De este modo, las tuplas requeridas son C-101 y C-110.

12.19 Muéstrese cómo calcular la existencia de mapas de bits, desde otros mapas de bits. Asegúrese que latécnica funciona incluso con valores nulos, mediante el empleo de un mapa de bits para el valor nulo.

Respuesta: La existencia de mapas de bits para una relación se puede calcular tomando la unión (or lógico)de todos los mapas de bits del atributo, incluyendo el mapa de bits para el valor nulo.

12.20 ¿Cómo afecta el cifrado de los datos a los esquemas de índices? En particular, ¿cómo afectaría a losesquemas que intentan almacenar datos ordenados?

Respuesta: Nótese que los índices deben operar sobre datos cifrados, o alguien podría acceder a los índicespara interpretar los datos. De lo contrario, los índices habrían de restringirse para que sólo pudieran acceder aellos determinados usuarios. Para mantener los datos en forma ordenada, el esquema de índices tendría quedescifrar los datos en cada nivel del árbol. Nótese que los sistemas asociativos no se verían afectados.

Page 134: Manual de Apoyo Al Profesor

CAPITULO 13

PROCESAMIENTO DE CONSULTAS

Este capítulo describe los procesos por medio de los cuales las consultas son ejecutadas eficientemente por unsistema de bases de datos. El capítulo comienza con medidas de costes, para continuar con algoritmos deevaluación de expresiones y operadores de álgebra relacional. Este capítulo aplica conceptos de los Capítulos3, 11 y 12.

Cambios a la tercera edición:

El único capítulo sobre procesamiento de consultas de la edición anterior, se ha reemplazado por doscapítulos, el primero sobre procesamiento y el segundo sobre optimización de las consultas.Otro cambio significativo es la separación de la estimación del tamaño desde la presentación de losalgoritmos de procesamiento de las consultas.Como resultado de estos cambios, los algoritmos de procesamiento de consultas se pueden cubrir sin lostediosos y molestos detalles de la estimación del tamaño. Aunque la estimación del tamaño se cubre mástarde, en el Capítulo 14, se ha simplificado la presentación mediante la omisión de algunos detalles.Los profesores pueden elegir cubrir el procesamiento, pero omitir la optimización de las consultas, sin pérdidade continuidad con los capítulos posteriores.

Page 135: Manual de Apoyo Al Profesor

Ejercicios

13.1 ¿Por qué no hay que obligar a los usuarios a que elijan explícitamente una estrategia deprocesamiento de la consulta? ¿Hay casos en los que es deseable que los usuarios sepan el coste de lasdistintas estrategias posibles? Razónese la respuesta.

Respuesta: En general, no es conveniente forzar a los usuarios a elegir una estrategia de procesamiento deconsultas, porque los usuarios inexpertos podrían seleccionar una estrategia ineficiente. La razón de que losusuarios serían malas alternativas acerca de cómo procesar las consultas, es que ellos no tendríanconocimientos sobre cono se almacena una relación ni sobre sus índices. No es razonable forzar a los usuariosa ser conscientes de estos detalles, dado que la facilidad de uso es el objeto principal de los lenguajes deconsultas de bases de datos. Si los usuarios se dieran cuenta del coste de las diferentes estrategias, podríanescribir consultas eficientemente, ayudando al rendimiento. Esto podría suceder si el sistema fuera utilizadopor expertos.

13.2 Considérese la siguiente consulta SQL para la base de datos bancaria:

select T.nombre-sucursalfrom sucursal T, sucursal Swhere T.activo > S.activo and S.ciudad-sucursal = “Arganzuela”

Escríbase una expresión del álgebra relacional equivalente a la dada que sea más eficiente.Justifíquese la elección.

Respuesta:�T.nombre-sucursal ((�nombre-sucursal, activo (�T (sucursal))) |x| 1T.activo>S.activo

(�activo (�(ciudad-sucursal =“Arganzuela”)(�S(sucursal)))))

Esta expresión realiza la reunión zeta sobre la menor cantidad de datos posible. Hace esto restringiendo eloperando del lado derecho de la reunión, a sólo aquellas sucursales de Arganzuela y, también, eliminando losatributos innecesarios de ambos operandos.

13.3 ¿Cuáles son las ventajas e inconvenientes de los índices asociativos en relación con índices de árbolB+-? ¿Cómo podría influir el tipo de índice en la elección de una estrategia de procesamiento de una consulta?

Respuesta: Los índices asociativos permiten realizar muy rápidamente operaciones de búsqueda de puntos(por ejemplo �A=r(relación)), pero en búsquedas de rangos el índice de árbol B+ sería mucho más eficiente. Sihay que evaluar una consulta de rangos, y sólo está disponible un índice asociativo, la mejor estrategia podríaser realizar unan exploración de ficheros, en vez de emplear ese índice.

13.4 Supóngase (para simplificar este ejercicio) que sólo cabe una tupla en un bloque y que la memoriapuede contener, como máximo, tres marcos de página. Muéstrense las secuencias creadas en cada ciclo delalgoritmo de ordenación-mezcla, cuando se aplica para ordenar las siguientes tuplas sobre el primer atributo:(canguro, 17), (ualabi, 21), (emú, 1), (wombat, 13), (ornitorrinco, 3), (león, 8), (jabalí, 4), (cebra, 11), (koala,6), (hiena, 9), (cálao, 2), (babuino, 12).

Page 136: Manual de Apoyo Al Profesor

Respuesta: Las referencias a las tuplas (canguro, 17) hasta (babuino, 12) se harán empleando los números detupla t1 hasta t12. Nos referimos a la j enésima secuencia utilizada por el i enésimo ciclo, como rij . Las secuenciasde ordenación inicial tienen tres bloques cada una. Son:

r11 = {t3, t1, t2}r12 = {t6, t5, t4}r13 = {t9, t7, t8}r14 = {t12, t11, t10}

Cada ciclo mezcla tres secuencias. Por lo tanto, las secuencias después del final del primer ciclo son:

r21 = {t3, t1, t6, t9, t5, t2, t7, t4, t8}r22 = {t12, t11, t10}

Al final del segundo ciclo, las tuplas están completamente ordenadas en una secuencia:

r21 = {t3, t1, t6, t9, t5, t2, t7, t4, t8}

13.5 Dadas las relaciones r1(A ,B, C) y r2(C, D, E) con las siguientes propiedades: r1 tiene 20.000 tuplas,r2 tiene 45.000 tuplas, 25 tuplas de r1 caben en un bloque y 30 tuplas de r2 caben en un bloque. Estímese elnúmero de accesos a bloques requeridos, utilizando cada una de las siguientes estrategias para la reunión r1 |x| 1

r2:

a. Reunión en bucle anidadob. Reunión en bucle anidado por bloquesc. Reunión por mezclad. Reunión por asociación

Respuesta: r1 necesita 800 bloques y r2 1.500. Supónganse M páginas de memoria. Si M >800, la reuniónpuede hacerse fácilmente en 1.500 + 800 accesos a disco, empleando incluso reunión en bucle anidadosencilla. Así, consideraremos sólo el caso en que M � 800 páginas.a. Reunión en bucle anidado:Empleando r1 como la relación externa se necesitan 20.000 * 1.500+800 = 30.000.800 accesos a disco, si r2 esla relación externa son necesarios 45.000 * 800 + 1.500 = 36.001.500 accesos a disco.

b Reunión en bucle anidado por bloques:Si r1 es la relación externa se necesitan !800 � (M-1)" * 1.500 + 800 accesos a disco, si r2 es la relaciónexterna son necesarios !1.500 � (M-1)" * 800 + 1.500 accesos a disco.

c. Reunión por mezclaSuponiendo que r1 y r2 no están inicialmente ordenadas sobre la clave de reunión, el coste de la ordenacióntotal, inclusive el de la salida es Bs = 1.500(2 !logM-1(1.500/M)" + 2) + 800(2 !logM-1(800/M)" + 2) accesos adisco. Suponiendo que todas las tuplas con el mismo valor de los atributos de la reunión caben en memoria, elcoste total es Bs + 1.500 + 800 accesos a disco.

d. Reunión por asociación:Se supone que no tiene lugar desbordamiento. Dado que r1 es menor, se emplea como la relación paraconstruir y r2 como la relación para probar. Si M > 800/M, es decir no hay necesidad de una divisiónrecursiva, entonces el coste es 3(1.500 + 800) = 6.900 accesos a disco, si no el coste es 2(1.500 + 800) !logM-

1(800) - 1" + 1.500 + 800 accesos a disco.

13.6 Diséñese una variante del algoritmo híbrido de reunión por mezcla, para el caso en que las dosrelaciones no están ordenadas según el orden físico de almacenamiento, pero ambas tienen un índice

Page 137: Manual de Apoyo Al Profesor

secundario ordenado en los atributos de la reunión.

Respuesta: Se mezclan la entradas de las hojas del primer índice secundario ordenado, con las entradas de lashojas del segundo índice secundario ordenado. El fichero resultante contiene pares de direcciones, la primeradirección en cada par apunta a una tupla de la primera relación y la segunda dirección apunta a una tupla de lasegunda relación.

El fichero resultante está primero ordenado sobre la primera dirección de la relación. La relaciónentonces se rastrea en orden de almacenamiento físico y las direcciones del fichero resultante se reemplazanpor los valores de la tupla actual. Después se ordena el fichero resultante sobre la segunda dirección de larelación, permitiendo un rastreo de la segunda relación en orden de almacenamiento físico para completar lareunión.

13.7 El algoritmo de reunión en bucle anidado indexado, descrito en el Apartado 13.5.3, podría serineficiente si el índice fuera secundario y hubiese varias tuplas con el mismo valor en los atributos de lareunión. ¿Por qué es ineficiente? Describir una forma, empleando ordenación, para reducir el coste derecuperación de las tuplas de la relación interna. ¿Bajo qué condiciones sería este algoritmo más eficiente quela reunión por mezcla híbrida?

Respuesta: Si hay varias tuplas en la relación interna con el mismo valor para los atributos de la reunión, sepuede tener que acceder a numerosos bloques de la relación interna, para cada tupla de la relación externa.Esto es por lo que es ineficiente. Para reducir este coste se puede realizar una reunión de las tuplas de larelación externa, con sólo las entradas de las hojas del índice secundario, posponiendo la recuperación de lastuplas de la relación interna. El fichero resultante obtenido se ordena sobre la dirección de la relación interna,permitiendo un eficiente rastreo del orden físico, para completar la reunión.

La reunión por mezcla híbrida requiere que la relación externa esté ordenada. El algoritmo anteriorno cumple este requerimiento, pero para cada tupla de la relación externa necesita realizar una búsqueda delíndice sobre la relación interna. Si la relación externa es mucho más grande que la relación interna, el coste dela búsqueda del índice será menor que el de la ordenación, con lo que el algoritmo será mas eficiente.

13.8 Estímese el número de accesos a bloques requeridos por la solución del Ejercicio 13.6 para r1 |x| 1 r2,donde r1 y r2 son como las definidas en el Ejercicio 13.5.

Respuesta: r1 ocupa 800 bloques y r2 1.500. Supóngase que hay n punteros por bloque hoja del índice (seasume que ambos índices tienen bloques hojas y punteros de igual tamaño). Supónganse M páginas dememoria, M < 800. El índice de r1 necesitará B1 = !20.000 � n" bloques hoja y el de r2 necesitará, B2 = !45.000 � n". Por lotanto, la reunión por mezcla necesitará B3 = B1 + B2 accesos, sin la salida. El número de tuplas de salida seestima según no = !20.000*45.000 � (max(V (C,r1),V (C,r2)))" . Cada tupla de salida necesitará dos punteros, por loque el número de bloques de salida de la reunión será Bo1 = !no � n/2".Por lo tanto, la reunión necesita Bj =B3+Bo1 accesos a disco.

Ahora se han de reemplazar los punteros por las tuplas actuales. Para la primera ordenación senecesitan, Bs1 = Bo1(2!logM-1(Bo1/M)" + 2) accesos a disco, incluyendo la grabación de la salida a disco. Elnúmero de bloques de r1 que han de ser accedidos para reemplazar los punteros por tuplas es min(800, no).Supóngase que n1 pares de la forma (r1 tupla, puntero a r2) caben en un bloque del disco. Por lo tanto elresultado intermedio, después de reemplazar los punteros de r1, ocupará Bo2 = !(no/n1)" bloques. Así el primerciclo, para la sustitución de los punteros de r1, costará Bf = Bs1 + Bo1 + min(800, no) + Bo2 accesos a disco.

El segundo ciclo, para la sustitución de los punteros de r2, tiene un análisis similar. Supóngase que n2

tuplas de la reunión final caben en un bloque. Entonces el segundo ciclo, para la sustitución de los punteros der2, costará Bs = Bs2 + Bo2 + min(1500, no) accesos a disco, donde Bs2 = Bo2(2!logM-1(Bo2/M)" + 2).

Por lo tanto, el número total de accesos a disco para la reunión es Bj +Bf +Bs y el número de páginasde salida es !no/n2".

Page 138: Manual de Apoyo Al Profesor

13.9 Sean r y s dos relaciones sin índices y supóngase que no están ordenadas. Suponiendo una memoriainfinita, ¿cuál es la manera más económica (en términos de operaciones de E/S) para calcular r|x|1 s? ¿Cuántamemoria se necesita en este algoritmo?

Respuesta: Se puede almacenar en memoria la relación más pequeña entera, leer la relación mayor bloque abloque y realizar una reunión en bucle anidado empleando la mayor como relación externa. El número deoperaciones de E/S es igual a br + bs y el requerimiento de memoria es min(br, bs) + 2 páginas.

13.10 Supóngase que hay un índice de árbol B+- disponible en ciudad-sucursal de la relación sucursal yque no hay más índices. ¿Cuál sería el mejor modo de manejar las siguientes selecciones con negaciones?a. σ¬(ciudad-sucursal <“Arganzuela”)(sucursal)b. σ¬(ciudad-sucursal =“Arganzuela”)(sucursal)c. σ¬(ciudad-sucursal <“Arganzuela” v activo <5000)(sucursal)

Respuesta:a. Emplear el índice para localizar la primera tupla cuyo campo ciudad-sucursal tenga valor“Arganzuela”. Desde esta tupla, seguir las cadenas de punteros hasta el final, recuperando todas las tuplas.

b. Para esta consulta el índice no cumple ningún objetivo. Se puede rastrear secuencialmente el ficheroy seleccionar todas las tuplas cuyo campo ciudad-sucursal sea diferente de “Arganzuela”.

c. Esta consulta es equivalente a

�(ciudad-sucursal � “Arganzuela” � activo < 5.000)(sucursal)

Empleando el índice ciudad-sucursal se pueden recuperar todas las tuplas con valor ciudad-sucursal mayor oigual que “Arganzuela”, siguiendo las cadenas de los punteros desde la primera tupla “Arganzuela”. Tambiénse aplica el criterio adicional, sobre cada tupla, de activo < 5.000.

13.11 El algoritmo de reunión por asociación descrito en el Apartado 13.5.5 calcula la reunión natural dedos relaciones. Descríbase cómo extender el algoritmo de reunión por asociación para calcular la reuniónexterna por la izquierda, la reunión externa por la derecha y la reunión externa completa. (Sugerencia: sepuede mantener información adicional con cada tupla en el índice asociativo para detectar si alguna tupla dela relación para probar concuerda con la tupla del índice asociativo.)Compruébese el algoritmo con las relaciones cliente e impositor.

nombre-cliente calle-cliente ciudad-clienteAdams Spring PittsfieldBrooks Senator ArganzuelaHayes Main Harrison González Alma Palo AltoSantos Main HarrisonLindsay Park PittsfieldCurry North RyeSantos North RyeTurner Putnam StamfordGlenn Sand Hill WoodsideGreen Walnut StamfordSantos Nassau Princeton

Figura 13.17 Ejemplo de relación cliente

Page 139: Manual de Apoyo Al Profesor

Respuesta: Para la tupla en consideración tr de la relación probar, si no se encuentra ninguna tupla que secorresponda, en la división por asociación de la relación construir, se rellena con nulos y se incluye en elresultado. Esto dará la reunión externa por la izquierda natural tr ]x| 1 ts. Para obtener la reunión externa por laderecha natural tr |x[ 1 ts, se puede mantener un indicador booleano con cada tupla en la división de la relaciónpara construir actual, Hsi residente en memoria, y activarlo siempre que cualquier tupla de la relación paraprobar se corresponda con ella. Cuando se haya terminado con Hsi, todas las tuplas en ella que no tengan suindicador activado se rellenarán con nulos y se incluirán en el resultado. Para obtener la reunión externacompleta natural, se hacen juntas las dos operaciones anteriores.

Para probar nuestro algoritmo se emplean las relaciones de muestra cliente e impositor, de lasFiguras 13.17 y 13.18. Supóngase que hay suficiente memoria para mantener tres tuplas de la relación paraconstruir, más un índice asociativo para estas tres tuplas.Como relación para construir se emplea impositor. Se utiliza la función de asociación simple que devuelve laprimera letra de nombre-cliente. Tomando las primeras particiones se obtiene Hr1 = {(“Adams”, “Spring”,“Pittsfield”)} y Hs1 = #. La tupla en la división de la relación para probar no tendrá ninguna tupla equivalente,por lo que se obtiene (“Adams”, “Spring”, “Pittsfield”, nulo). En la división para “D”, la tupla de la relaciónpara construir está sin equivalencias, por lo que proporciona una tupla de salida (“David”, nulo, nulo, A-306).En la división para “H”, se encuentra una correspondencia por primera vez, produciendo la tupla de salida(”Hayes”, ”Main”, ”Harrison”, A-102). Procediendo de forma similar, se procesan todas las divisiones y secompleta la reunión.

13.12 Escríbase el seudocódigo para un iterador que implemente la reunión en bucle anidado indexada,donde la relación externa esté encauzada. Emplear las funciones de iterador estándares en el seudocódigo.Muéstrese el estado del iterador entre las llamadas.

Respuesta: Sea externo el iterador que devuelve sucesivas tuplas desde la relación externa encauzada. Seainterno el iterador que devuelve sucesivas tuplas de la relación interna que tiene un valor dado en los atributosde la reunión. El iterador interno devuelve estas tuplas realizando una búsqueda de índices. Las funcionesIndexedNLJoin::open, IndexedNLJoin::close e IndexedNLJoin::next para implementar los iteradores dela reunión en bucle anidado indexada, se dan a continuación.

nombre-cliente número-cuenta González A-101 González A-201Santos A-217Santos A-215Hayes A-102Turner A-305David A-306Lindsay A-222

Figura 13.18 Ejemplo de relación impositor

Los dos iteradores externo e interno, los valores de las últimas tuplas leídas de la relación externa tr y unindicador hechor mostrando si el final del rastreo de la relación externa se ha alcanzado, constituyen lainformación de estado que es necesario recordar por IndexedNLJoin entre llamadas.

Page 140: Manual de Apoyo Al Profesor

IndexedNLJoin::open()begin

externo.open();interno.open();hechor := falso;if(externo.next() � falso)

mover la tupla desde la memoria intermedia de salida de externo hasta tr;else

hechor := cierto;end

IndexedNLJoin::close()begin

externo.close();interno.close();

end

boolean IndexedNLJoin::next()begin

while(¬hechor)begin

if(interno.next(tr[atributos-reunión]) � falso)begin

mover la tupla desde la memoria intermedia de salida de interno hasta ts;calcular tr|x|1 ts y colocarlo en la memoria intermedia de salida;devolver cierto;

endelse

if(externo.next() � falso)begin

mover la tupla desde la memoria intermedia de salida de externohasta tr;

rebobinar interno a la primera tupla de s;endelse

hechor := cierto;endreturn falso;

end

13.13 Diséñense algoritmos basado en ordenación y asociación para el cálculo de la operación división.

Respuesta: Supóngase que r(T � S) y s(S) son dos relaciones y que se ha de calcular r ÷ s.Mediante algoritmos basados en la ordenación se ordena la relación s sobre S. Ordenar la relación r

sobre (T,S). Ahora, iniciar el rastreo de r y mirar los valores del atributo T de la primera tupla. Rastrear r hastaque las tuplas tengan el mismo valor que T. Rastrear también simultáneamente s y verificar si cada tupla de saparece como el atributo S de r, de igual manera a la reunión por mezcla. De ser así, obtener el valor de T yproceder con el siguiente valor de T. Puede que sea necesario rastrear varias veces la relación s, pero r sólo serastreará una vez. El total de accesos a disco será, después de ordenar ambas relaciones, |r + N * |s|, donde Nes el número de valores distintos de T en r.

Se asume que, para cualquier valor de T, todas las tuplas en r con ese valor de T caben en memoria yse considerará el caso general al final. Divídase la relación r en atributos de T, de tal manera que cada

Page 141: Manual de Apoyo Al Profesor

partición quepa en memoria (es siempre posible por la suposición anterior). Considérense las divisiones una auna. Constrúyase una tabla asociativa sobre las tuplas, al mismo tiempo que se agrupan todos los valoresdiferentes de T en una tabla asociativa independiente. Por cada valor de T, Ahora, por cada valor VT de T,cada valor s de S, analizar la tabla asociativa sobre (VT , s). Si cualquiera de los valores está ausente rechazarel valor VT, de lo contrario obtener el valor VT.

En el caso de que ninguna de las tuplas de r con un valor para T quepa en memoria, divídanse r y ssobre los atributos de S, de tal manera que se cumpla la condición y ejecútese el algoritmo sobre cada uno delos correspondientes pares de divisiones ri y si. Obtener la intersección de los valores de T generados en cadadivisión.

Page 142: Manual de Apoyo Al Profesor

CAPITULO 14

OPTIMIZACIÓN DE CONSULTAS

Este capítulo describe cómo se optimizan las consultas. Comienza con las estadísticas empleadas para laoptimización de las consultas y describe en líneas generales como emplear estas estadísticas para estimarselecciones y tamaños del resultado de las consultas, para realizar una estimación de costes. Las reglas deequivalencia se tratan a continuación, seguidas por una descripción de un modelo de algoritmo deoptimización de consultas, después del clásico algoritmo de optimización del Sistema R y alcanza laoptimización de las sub consultas anidadas. El capítulo termina con una descripción de vistas materializadas,su papel en la optimización y una descripción de algoritmos de mantenimiento de vistas incremental.

Debería enfatizarse que las estimaciones del tamaño y las selecciones de las consultas sonaproximadas, incluso si las suposiciones hechas como es el caso de la uniformidad, se cumplen. Además, lasestimaciones de costes por diversos algoritmos presentados en el Capítulo 13, consideran sólo una mínimacantidad de memoria y son, así, estimaciones en el peor de los casos con respecto a la disponibilidad delespacio de memoria intermedia. Como resultado, las estimaciones de costes nunca son muy precisas. Comoquiera que experiencias prácticas han demostrado que tales estimaciones tienden a ser razonablementeexactas, los planes de optimización con respecto al coste estimado raramente son mucho peores que los planesde optimización verdaderos.

No se espera que los estudiantes memoricen las estimaciones de tamaño y se acentúan sólo losprocesos por los que se alcanzan las estimaciones, no los valores exactos. La precisión en términos de costeestimado no es un objetivo importante, por lo que estimaciones que parten de unas pocas operaciones de E/Spueden ser consideradas aceptables.

Si está disponible para el uso de los estudiantes un sistema de bases de datos comercial, se puedediseñar un trabajo de laboratorio en el que los estudiantes midan la aceleración del rendimiento que aportanlos índices. Numerosos productos de bases de datos comerciales tienen una prestación de “plan deexplicación”, que permite al usuario encontrar el plan de evaluación empleado en una consulta. Merece lapena pedir a los estudiantes que analicen los planes generados por diferentes consultas, con y sin índices. Unatarea más desafiante es diseñar pruebas para ver cómo de inteligente es el optimizador de consultas y adivinar,a partir de estos experimentos, cuáles de las técnicas de optimización cubiertas en el capítulo se emplean en elsistema.

Cambios a la tercera edición:

El principal cambio a la edición anterior es que el capítulo sobre procesamiento de consultas se ha dividido endos.La cobertura de la estimación del tamaño para diferentes operaciones, que anteriormente estaba tratada conalgoritmos para las operaciones, se ha separado ahora en un apartado independiente (Apartado 14.2). Algunasde las formulas para la estimación de estadísticas se han simplificado y se han añadido una pocas nuevas.Se ha aportado seudocódigo para los algoritmos de programación dinámica para la optimización del orden delas reuniones. Hay un nuevo apartado sobre la optimización de sub consultas anidadas, que forman una parteimportante de la optimización del SQL. El apartado sobre vistas materializadas es también nuevo en estaedición.

Page 143: Manual de Apoyo Al Profesor

Ejercicios

14.1 El agrupamiento de los índices puede permitir un acceso más rápido a los datos de lo que permitenlos índices no agrupados. Indíquese el momento en que se deben crear índices no agrupados pese a lasventajas de los índices agrupados. Explíquese la respuesta.

Respuesta: Sólo puede haber un índice agrupado para un fichero, basado en la clave de ordenación.Cualquier consulta que necesite buscar sobre las otras claves no ordenadas necesitará un índice no agrupado.Si la consulta accede a la mayoría de las tuplas en el fichero, puede ser más eficiente ordenar el fichero sobrela clave deseada, en vez de emplear el índice no agrupado.

14.2 Considérense las relaciones r1(A, B, C), r2(C, D, E) y r3(E, F), con claves primarias A, C y E,respectivamente. Supóngase que r1 tiene 1.000 tuplas, r2 tiene 1.500 tuplas y r3 tiene 750 tuplas. Estímese eltamaño de r1 |x| 1 r2 |x| 1 r3y diséñese una estrategia eficiente para el cálculo de la reunión.

Respuesta:• La relación resultante de la reunión de r1, r2, y r3 será la misma, no importa el camino con el que se reúnan,debido a las propiedades asociativa y conmutativa de las reuniones. Así, se considerará el tamaño basado en laestrategia de ((r1 |x| 1 r2) |x| 1 r3). Reuniendo r1 con r2 se conseguirá una relación de, a lo sumo, 1.000 tuplas,dado que C es una clave para r2. Igualmente, reuniendo ese resultado con r3 se conseguirá una relación de, alo sumo, 1.000 tuplas, porque E es una clave para r3. Por lo tanto la relación final tendrá, como máximo,1.000 tuplas.

• Una estrategia eficiente para el cálculo de esta reunión sería crear un índice sobre el atributo C para larelación r2 y sobre E para r3. Entonces, por cada tupla en r1 se tiene lo siguiente:a. Emplear el índice para r2 para buscar, a lo sumo, una tupla que se corresponda con el valor de C, enr1.b. Emplear el índice creado sobre E para buscar en r3, a lo sumo, una tupla que se corresponda con elvalor único de E en r2

14.3 Considérense las relaciones r1(A, B, C), r2(C, D, E) y r3(E, F) del Ejercicio 14.2. Supóngase que nohay claves primarias, excepto el esquema completo. Sean V (C, r1) 900, V (C, r2) 1.100, V (E, r2) 50 y V (E,r3) 100.Supóngase que r1 tiene 1.000 tuplas, r2 tiene 1.500 tuplas y r3 tiene 750 tuplas. Estímese el tamaño de r1 |x| r2

|x| r3 y diséñese una estrategia eficiente para calcular la reunión.

Respuesta: El tamaño estimado de la relación se puede determinar calculando el número medio de tuplas quese reunirían con cada tupla de la segunda relación. En este caso, por cada tupla de r1, 1.500/V (C, r2) = 15/11tuplas (por término medio) de r2 se reunirían con ella. La relación intermedia tendría 15.000/11 tuplas. Estarelación se reúne con r3 para conseguir un resultado de aproximadamente 10.227 tuplas (15.000/11 × 750/100= 10.227). Una buena estrategia reuniría primero r1 y r2, dado que la relación intermedia es de tamañoparecido a r1 ó r2. Después se reúne r3 a este resultado.

14.4 Supóngase que se dispone de un árbol B+ para ciudad-sucursal para la relación sucursal y que no sedispone de ningún otro índice. Indíquese la mejor manera de tratar las siguientes selecciones que implican a lanegación.a. σ¬(ciudad-sucursal <“Arganzuela”)(sucursal)b. σ¬(ciudad-sucursal =“Arganzuela”)(sucursal)c. σ¬(ciudad-sucursal <“Arganzuela” v activo <5000)(sucursal)

Page 144: Manual de Apoyo Al Profesor

Respuesta:a. Emplear el índice para localizar la primera tupla cuyo campo ciudad-sucursal tenga valor“Arganzuela”. Desde esta tupla, seguir las cadenas de punteros hasta el final, recuperando todas las tuplas.b. Para esta consulta el índice no cumple ningún objetivo. Se puede rastrear secuencialmente el ficheroy seleccionar todas las tuplas cuyo campo ciudad-sucursal sea diferente de “Arganzuela”.c. Esta consulta es equivalente a la consulta

�(ciudad-sucursal � “Arganzuela” � activo<5000)(sucursal)

Empleando el índice ciudad-sucursal se pueden recuperar todas las tuplas con valor ciudad-sucursal mayor oigual que “Arganzuela”, siguiendo las cadenas de los punteros desde la primera tupla “Arganzuela”. Tambiénse aplica el criterio adicional, sobre cada tupla, de activo < 5.000.

14.5 Supóngase que se dispone de un árbol B+ para (nombre-sucursal, ciudad-sucursal) para la relaciónsucursal. Indíquese la mejor manera de tratar la selección siguiente.

σ(ciudad-sucursal <“Arganzuela” ) � (activo <5000) � (nombre-sucursal <“Centro”)(sucursal)

Respuesta: Empleando el índice se localiza la primera tupla con nombre-sucursal “Centro”.Entonces los punteros seguirán recuperando sucesivas tuplas, mientras que ciudad-sucursal sea menor que“Arganzuela”. De entre las tuplas recuperadas se rechazarán las que no cumplan la condición (activo <5.000).

14.6 Demuéstrese que se cumplen las equivalencias siguientes. Explíquese el modo en que se puedenaplicar para mejorar la eficiencia de determinadas consultas:

a E1 |x|? (E2 – E3) = (E1 |x|? E2 – E1 |x|? E3).b. σ? ( A G F (E)) = A G F (σ? (E)), donde θ sólo utiliza atributos de A.c. σ? (E1 ]x| E2) = σ? (E1) ]x| E2, donde θ sólo utiliza atributos de E1.

Respuesta:a E1 |x|� (E2 – E3) = (E1 |x|� E2 – E1 |x|� E3).

e renombra (E1 |x|� (E2 – E3)) como R1, (E1 |x|� E2) como R2 y (E1 |x|� E3) como R3. Es claro que si unatupla t pertenece a R1, también pertenece a R2. Si una tupla t pertenece a R3, t[atributos de E3] will perteneceráa E3, por lo que t no puede pertenecer a R1. Desde lo anterior se puede decir que

�t, t � R1 � t � (R2 - R3)

Obviamente, si una tupla t pertenece a R2 - R3, entonces t[atributos de R2] � E2 y t[atributos de R2] � E3. Porlo tanto:

�t, t � (R2 - R3) � t � R1

Las dos ecuaciones anteriores implican la equivalencia dada. Esta equivalencia es útil porque la evaluación dela reunión por el lado derecho producirá numerosas tuplas que, finalmente, se eliminarán del resultado. Laexpresión del lado izquierdo se puede evaluar más eficientemente.

Page 145: Manual de Apoyo Al Profesor

b ��( AGF (E)) = AGF (��(E)), donde $ utiliza sólo atributos de A.$ utiliza sólo atributos de A. Por lo tanto, si cualquier tupla t en la salida de AGF (E) se filtra mediante

la selección del lado izquierdo, todas las tuplas en E cuyos valores en A sean iguales a t[A] se filtran por laselección del lado derecho. Por lo tanto:

�t, t � ��( AGF (E)) � t � AGF (��(E))

Empleando un razonamiento similar, se puede concluir que

�t, t � AGF (��(E)) � t � ��(AGF (E))

Las dos ecuaciones anteriores implican la equivalencia dada. Esta equivalencia es útil porque la evaluacióndel lado derecho evita realizar la agregación en grupos que, de todas formas, se eliminarán del resultado. Así,la expresión del lado derecho se puede evaluar más eficientemente que la del lado izquierdo.

c. ��(E1 ]x| 1 E2) = ��(E1) ]x| 1 E2 donde θ sólo utiliza atributos de E1.$ utiliza sólo atributos de E1. Por lo tanto, si cualquier tupla t en la salida de (E1 ]x| 1 E2) se filtra

mediante la selección del lado izquierdo, todas las tuplas en E1 cuyos valores sean iguales a t[E1] se filtran porla selección del lado derecho. Por lo tanto:

�t, t � ��(E1 ]x| 1 E2) � t � ��(E1) ]x| 1 E2

Empleando un razonamiento similar, se puede concluir que

�t, t � ��(E1) ]x| 1 E2 � t � ��(E1 ]x| 1 E2)

Las dos ecuaciones anteriores implican la equivalencia dada. Esta equivalencia es útil porque la evaluacióndel lado derecho evita que se produzcan muchas tuplas de salida que, de todas formas, se eliminarán delresultado. Así, la expresión del lado derecho se puede evaluar más eficientemente que la del lado izquierdo.

14.7 Muéstrese el modo de obtener las equivalencias siguientes mediante una secuencia detransformaciones utilizando las reglas de equivalencia del Apartado 14.3.1.

a. ����������(E) = ���(���(���(E)))b. ������(E� |x|�� E�) = ���(E� |x|�� (��� (E�))), donde θ� sólo implica atributos de E�

Respuesta:a. Empleando la regla 1, ����������(E) se convierte en ���(������(E)). Aplicando de nuevo la regla 1 setiene ���(���(���(E))).b ������(E� |x|�� E�), aplicando la regla 1 se convierte en ���(���(E� |x|�� E�)) Aplicando la regla 7.aesto se convierte en ���(E� |x|�� (��� (E�))).

14.8 Para cada uno de los siguientes pares de expresiones, dense ejemplos de relaciones que muestren quelas expresiones no son equivalentes.a. Π A (R - S) y Π A (R) – Π A (S)b. σ B < 4 ( A G max (B) (R)) y A G max (B) (σ B < 4 (R))c. En las expresiones anteriores, si las dos apariciones de max se sustituyeran por min, indicar si lasexpresiones serían equivalentes.d. (R ]x| S) ]x| T y R ]x| (S ]x| T)En otras palabras, la reunión externa por la izquierda no es asociativa. (Sugerencia: Supóngase que losesquemas de las tres relaciones son R(a, b1), S(a, b2) y T (a, b3), respectivamente.)e. σ θ (E 1 ]x| E2) y E 1 ]x| σ θ (E 2), donde θ utiliza sólo atributos de E 2

Page 146: Manual de Apoyo Al Profesor

Respuesta:a. R = {(1, 2)}, S = {(1, 3)} El resultado de la expresión del lado izquierdo es {(1)}, mientras que elresultado de la expresión del lado derecho está vacío.

b R = {(1, 2), (1, 5)} La expresión del lado izquierdo tiene un resultado vacío, mientras que la del ladoderecho tiene el resultado {(1, 2)}.

c. Sí, al reemplazar los max por los min, las expresiones serán equivalentes. Cualquier tupla que laselección en los lados de la derecha elimine, no pasaría la selección sobre los lados de la izquierda, si fuera elmínimo valor y, de cualquier manera, sería eliminada si no fuera el valor mínimo.

d. R = {(1, 2)}, S = {(2, 3)}, T = {(1, 4)}. La expresión de la izquierda da {(1, 2, nulo, 4)}, mientras quela de la derecha da {(1, 2, 3, nulo)}.

e. Sea R del esquema (A,B) y S del (A,C). Sean R = {(1, 2)}, S = {(2, 3)} y θ la expresión C = 1. Elresultado de la expresión del lado izquierdo está vacío, mientras que el resultado de la expresión del ladoderecho es {(1, 2, nulo)}.

14.9 SQL permite las relaciones con duplicados (Capítulo 4).a. Defínanse las versiones de las operaciones básicas del álgebra relacional σ, Π, ×, |x|, -, ���y quetrabajan en relaciones con duplicados, de manera consistente con SQL.

b. Compruébense cuáles de las reglas de equivalencia, de la 1 a la 7.b, se cumplen para la versiónmulticonjunto del álgebra relacional definida en el apartado a.

Respuesta:a. Aquí se definen las versiones para multi conjuntos de los operadores del álgebra relacional. Dadas las relaciones de multi conjuntos r1 y r2,

i. �Sea c1 la copia de la tupla t1 en r1. Si t1 cumple la selección ��, entonces hay c1 copias de t1 en ��(r1), de locontrario no hay ninguna.

ii. �Por cada copia de la tupla t1 en r1, hay una copia de la tupla �A(t1) en �A(r1), donde �A(t1) denota laproyección de la tupla concreta t1.

iii × Si hay c1 copias de la tupla t1 en r1 y c2 copias de la tupla t2 en r2, entonces hay c1 * c2 copias de la tupla t1.t2en r1 × r2.

iv |x| El resultado será lo mismo que un producto cruzado seguido de una selección.

v - Si hay c1 copias de la tupla t en r1 y c2 copias de la tupla t en r2, entonces habrá c1 - c2 copias de t en r1 - r2,con tal que c1 - c2 sea positivo.

vi � Si hay c1 copias de la tupla t en r1 y c2 copias de la tupla t en r2, entonces habrá c1 + c2 copias de t en r1 � r2.

vii Si hay c1 copias de la tupla t en r1 y c2 copias de la tupla t en r2, entonces habrá min(c1, c2) copias de t en r1 r2.

Page 147: Manual de Apoyo Al Profesor

b Todas las reglas de equivalencia, de la 1 a la 7.b del Apartado 14.3.1, se mantienen para la versiónmulticonjunto del álgebra relacional definida en la primera parte.

Existen reglas de equivalencia que se cumplen para el álgebra relacional ordinaria, pero no para laversión de multi conjuntos. Por ejemplo, considérese la regla:

A B = A � B - (A - B) - (B - A)

Esto es obviamente válido en el álgebra relacional sencillo. Considérese un ejemplar de multiconjunto en elque una tupla t aparece 4 veces en A y 3 veces en B; t aparecerá 3 veces en el resultado de la expresión dellado izquierdo, pero 6 veces en el del lado derecho. La razón por la que esta regla no se mantiene en laversión multiconjunto, está en la asimetría de la semántica de la unión e intersección de multi conjuntos.

14.10 ** Demuéstrese que, con n relaciones, hay (2(n-1))!/(n-1)! ordenes de reunión diferentes.Sugerencia: Un árbol binario completo es aquél en el que cada nodo interno tiene exactamente dos hijos.

Utilícese el hecho de que el número de árboles binarios completos diferentes con n nodos hojas es Si se desea, se puede obtener la fórmula para el número de árboles binarios completos con n nodos, a partirde la fórmula para el número de árboles binarios con n nodos. El número de árboles binarios con n nodos es

; este número se conoce como número de Catalan y su obtención puede hallarse en cualquier librode texto estándar sobre estructuras de datos o algoritmos.

Respuesta: Cada orden de reunión es un árbol binario completo (cada nodo sin hojas tiene exactamente doshijos) con las relaciones como hojas. El número de árboles binarios completos diferentes con n nodos hojas es

(consúltese cualquier libro de texto sobre Estructuras Discretas, por ejemplo ”Fundamentals of DataStructures” por Horowitz y Sahni, para una prueba). Multiplicando esto por n!, por el número depermutaciones de las n hojas, se obtiene el resultado deseado.

14.11 ** Demuéstrese que el orden de reunión de menor coste puede calcularse en un tiempo de O(3n).Supóngase que se puede almacenar y examinar la información sobre un conjunto de relaciones (como el ordenóptimo de reunión para el conjunto y el coste de ese orden de reunión) en tiempo constante. (Si se encuentradifícil este ejercicio, demuéstrese al menos la cota de tiempo menos estricta de O(22n).)

Respuesta: Considérese el algoritmo de programación dinámica dado en la Figura 14.5 del libro de texto. Porcada subconjunto con k + 1 relaciones, el orden de reunión óptimo se puede calcular con el tiempo 2k+1. Estoes así porque, para un par concreto de subconjuntos A y B, se necesita tiempo constante y hay a lo sumo 2k+1-

2 subconjuntos diferentes que A puede denotar. Así, sobre todos los subconjuntos de tamaño k + 1, este

coste es . Sumando sobre todos los k desde 1 hasta n-1, se obtiene la expansión binomial de ((1 +x)n - x) con x = 2. Así, el coste total es menor que 3n.

14.12 Demuéstrese que, si sólo se toman en consideración los árboles de reunión en profundidad por laizquierda, como en el optimizador System R, el tiempo empleado en buscar el orden de reunión más eficientees del orden de n2n. Supóngase que sólo hay un orden interesante.

Respuesta: La deducción del tiempo empleado es similar al caso general, excepto que en vez de considerar2k+1 - 2 subconjuntos de tamaño menor o igual que k para A, sólo es necesario considerar k + 1 subconjuntosde tamaño exactamente igual a k. Esto es así porque el operando de la derecha de la reunión más alta ha de seruna relación simple. Por lo tanto, el coste total de encontrar el mejor orden de reunión para todos los

subconjuntos de tamaño k + 1 es , el cual es igual a n . Sumando sobre todos los k desde

Page 148: Manual de Apoyo Al Profesor

1 hasta n-1, empleando la expansión binomial de ((1 + x)n - 1) con x = 1, se obtiene un coste total menor quen2n-1.

14.13 Se dice que un conjunto de reglas de equivalencia está completo si, siempre que dos expresiones sonequivalentes, se puede obtener una de la otra mediante una secuencia de utilizaciones de las reglas deequivalencia. Indíquese si el conjunto de reglas de equivalencia que se consideró en el Apartado 14.3.1 escompleto. Sugerencia: Considerar la equivalencia σ 3 = 5 (r) = { }.

Respuesta: Dos expresiones relacionales se definen equivalentes, cuando sobre todas las relaciones deentrada, generan la misma salida. El conjunto de reglas de equivalencia considerado en el Apartado 14.3.1 noes completo. Las expresiones ó3=5(r) y { } son equivalentes, pero no se puede demostrar empleando sólo estasreglas.

14.14 Decorrelación:a. Escríbase una consulta anidada sobre la relación cuenta para buscar, para cada sucursal cuyo nombrecomience por “B,” todas las cuentas con el saldo máximo de cada sucursal.b. Rescríbase la consulta anterior sin emplear consultas anidadas; en otras palabras, decorrelaciónese laconsulta.c. Diséñese un procedimiento (parecido al descrito en el Apartado 14.4.5) para decorrelacionar estasconsultas.

Respuesta:a. La consulta anidada es la siguiente:

select S.número-cuentafrom cuenta.Swhere S.nombre-sucursal like ’B%’ and

S.saldo =(select max(T.saldo)from cuenta Twhere T.nombre-sucursal = S.nombre-sucursal)

b La consulta descorrelacionada es la siguiente:

create table t1 asselect nombre-sucursal, max (saldo)from cuentagroup by nombre-sucursal

select número-cuentafrom cuenta, t1where cuenta.nombre-sucursal like ’B%’ and

cuenta.nombre-sucursal = t1.nombre-sucursal andcuenta.saldo = t1.saldo

c. En general, considérense consultas de la forma:

select · · · from L1

where P1 andA1 op

(select f(A2)from L2

where P2)

Page 149: Manual de Apoyo Al Profesor

donde f es alguna función agregada sobre los atributos A2 y op es algún operador binario booleano. Laconsulta se puede rescribir como

create table t1(V,Ag2) asselect V, f(A2)from L2

where P12

group by Vselect · · · from L1, t1where P1 and P22 and

A1 op t1.Ag2

donde

i. V contiene todos los atributos que se emplean en la selecciones que implican variables decorrelación en la consulta anidadaii. el predicado P12 contiene los predicados de P2 sin las selecciones que implican las variables decorrelacióniii P22 introduce las selecciones que implican las variables de correlación. (Si los predicados en P2 2

hacen referencia a los nombres de relación en L2, deben rescribirse para referirse a la relación t1.)

14.15 Descríbase el modo de conservar de manera incremental el resultado de las operaciones siguientes,tanto para inserciones como para eliminaciones.a. Unión y diferencia de conjuntosb. Reunión externa por la izquierda

Respuesta:a. Dada la vista materializada v = r � s, cuando se inserta una tupla en r, se verifica si está presente env y si no es así, se añade a v . Cuando una tupla se elimina de r, se comprueba si está en s y, si no está, seelimina de v. La inserciones y las eliminaciones en s se tratan de manera simétrica.

Para la diferencia de conjuntos, dada una vista v = r - s, cuando se inserta una tupla en r, se verificasi está presente en s y, si no es así, se añade a v. Cuando una tupla se elimina de r, se elimina de v si estápresente. Cuando una tupla se inserta en s, se borra de v si está presente. Cuando una tupla se elimina de s, secomprueba si está en r y, si lo está, se añade a v.

b. Dada una vista materializada v = r ]x| 1 s, cuando se inserta un conjunto de tuplas ir en r, se añaden lastuplas ir ]x| 1 s a la vista. Cuando ir se elimina de r, se elimina ir ]x| 1 s de la vista. Cuando un conjunto de tuplasis se inserta en s, se calcula r |x| 1 is. Se encuentran todas las tuplas de r que previamente no se correspondieroncon ninguna tupla de s(es decir, aquellas que se rellenaron con nulos en in r ]x| 1 s), pero que se correspondencon is.

Se eliminan de la vista todas las entradas rellenadas con nulos y se añaden las tuplas r |x| 1 s a la vista.Cuando is se elimina de s, se eliminan las tuplas r |x| is de la vista. Se buscan también todas las tuplas en r quese corresponden con is, pero que no se corresponden con ninguna otra tupla en s. Se añaden todas estas a lavista, después de rellenarlas con valores nulos.

14.16 Se da un ejemplo de expresión que defina una vista materializada y dos situaciones (conjuntos deestadísticas para las relaciones de entrada y sus diferenciales), tales que la conservación incremental de lavista sea mejor que su recálculo en una de las situaciones y el recálculo sea mejor en la otra.

Respuesta: Sean tres relaciones r, s y t. Considérese una vista materializada sobre estas, definida por (r |x| 1 s |x|1 t). Supóngase que la relación r no tiene ningún atributo en común con s o t, mientras que s y t tienen relaciónde clave externa Cada una de ellas tiene 1.000 tuplas, y se añaden a r 100 tuplas. El recálculo es mejor,porque (s |x| 1 t) se puede calcular primero, el cual tendrá 1.000 tuplas. Entonces puede reunirse con t. En la

Page 150: Manual de Apoyo Al Profesor

conservación incremental de la vista, el incremento en t primero se reunirá con s o con t, lo cual tendrá100.000 tuplas (producto cartesiano). Esta enorme relación se reunirá entonces con t, lo cual será muycostoso.

Sin embargo, si se añaden 100 tuplas a s en vez de a r, en la situación anterior, el mantenimientoincremental de la vista será claramente mejor, pues un incremento en s se puede reunir con t para obtener unarelación de tamaño 100, la cual se puede reunir con r.

Page 151: Manual de Apoyo Al Profesor

CAPITULO 15

TRANSACCIONES

Este capítulo aporta una visión general del procesamiento de transacciones. Primero motiva los problemas deatomicidad, consistencia, aislamiento y durabilidad, e introduce la noción de transacciones ACID.Posteriormente presenta algunos esquemas simples y sus inconvenientes, por lo que incentiva las técnicasdescritas en los Capítulos 16 y 17. El resto del capítulo describe la noción de planificación y los conceptos desecuencialidad.

Se recomienda enormemente cubrir este capítulo en un primer curso de bases de datos, dado queintroduce conceptos que todo estudiante de bases de datos debería conocer. En los Capítulos 16 y 17 secubren los detalles sobre como implantar las propiedades de las transacciones.

En la presentación inicial sobre los requerimientos ACID, el requerimiento de aislamiento sobretransacciones concurrentes no insiste en la secuencialidad. Según Haerder y Reuter [1983], el aislamiento sólorequiere que los sucesos de una transacción permanezcan ocultos de otras transacciones que se esténejecutando en modo concurrente, con el objeto de permitir una vuelta atrás. Sin embargo al final del capítulo,y en la mayor parte del libro (salvo en el Capítulo 24), se emplea la poderosa condición de secuencialidadcomo un requerimiento de las transacciones concurrentes.

Cambios a la tercera edición:

Se ha eliminado de este capítulo (y del libro) la comprobación de la secuencialidad de las vistas, dado que notiene aplicación práctica.

Page 152: Manual de Apoyo Al Profesor

Ejercicios

15.1 Lístense las propiedades ACID. Explíquese la utilidad de cada una de ellas.

Respuesta: Las propiedades ACID y las necesidades para cada una de ellas, son:• Consistencia:

La ejecución de una transacción en aislamiento (es decir, son ninguna otra transacción ejecutándoseconcurrentemente), preserva la consistencia de la base de datos. Generalmente, esto es responsabilidad delprogramador de la aplicación que codifica las transacciones.

• Atomicidad:O todas las operaciones de la transacción se reflejan correctamente en la base de datos, o ninguna.

Claramente, la falta de atomicidad conducirá a la inconsistencia de la base de datos.

• Aislamiento:Cuando varias transacciones se ejecutan concurrentemente, debería ser el caso en que, para cada par

de transacciones Ti y Tj, se cumple que para los efectos de Ti, o bien Tj ha terminado su ejecución antes deque comience Ti , o bien que Tj ha comenzado su ejecución después de que Ti termine. De este modo, cadatransacción ignora al resto de las transacciones que se ejecuten concurrentemente en el sistema. El punto devista del usuario de un sistema transaccional requiere la propiedad de aislamiento y la propiedad de que lasplanificaciones concurrentes llevan al sistema de un estado consistente a otro. Estos requerimientos secumplen asegurando que sólo se permiten las planificaciones secuenciales, de transacciones que preservan laconsistencia individualmente.

• Durabilidad:Tras la finalización con éxito de una transacción, los cambios realizados en la base de datos

permanecen, incluso si hay fallos en el sistema.

15.2 Supóngase que existe un sistema de base de datos que nunca falla. ¿Se necesita un gestor derecuperaciones para este sistema?

Respuesta: Incluso en este caso, se necesita un gestor de recuperaciones para realizar el retroceso de lastransacciones abortadas.

15.3 Considérese un sistema de archivos como el de su sistema operativo preferido.a. ¿Cuáles son los pasos implicados en la creación y borrado de archivos y en la escritura de datossobre un archivo?b. Explíquese por qué son relevantes los aspectos de atomicidad y durabilidad en la creación y borradode archivos y en la escritura de datos sobre archivos. Razónese la respuesta.

Respuesta: Intervienen varios pasos en la creación de un archivo. Se asigna un área de almacenamiento alarchivo en el sistema de archivos, se le da un único número-i y se inserta una entrada del nodo-i en la lista-i.El borrado de archivos implica exactamente los pasos opuestos.

Para el usuario del sistema de ficheros en UNIX, la durabilidad es importante por razones evidentes,pero la atomicidad no es relevante en general, dado que el sistema de ficheros no soporta transacciones. Parael implantador del sistema de ficheros, no obstante, muchas de las acciones internas del sistema de ficherosnecesitan disponer de semánticas transaccionales. Todos los pasos implicados en la creación / borrado dearchivos deben ser atómicos, de lo contrario habrá archivos no referenciables o áreas sin usar en el sistema dearchivos.

15.4 Los implantadores de sistemas de bases de datos prestan mucha más atención a las propiedades

Page 153: Manual de Apoyo Al Profesor

ACID que los implantadores de sistemas de archivos. ¿Por qué tiene sentido esto?

Respuesta: Las bases de datos generalmente realizan tareas cruciales, cuyos efectos necesitan ser atómicos yduraderos y cuyos resultados afectan al mundo real de forma permanente. Ejemplos de tales tareas son lastransacciones monetarias, reservas de plazas, etc. Por lo tanto, han de asegurarse las propiedades ACID. Encontraste, la mayoría de los usuarios de los sistemas de ficheros no estarían dispuestos a pagar el precio(dinero, espacio en disco, tiempo) de soportar las propiedades ACID.

15.5 Durante su ejecución, una transacción pasa a través de varios estados hasta que se compromete oaborta. Lístense todas las secuencias posibles de estados por los que pueda pasar una transacción. Explíquesepor qué puede ocurrir cada una de la transiciones de estados.

Respuesta: Las secuencias de estados posibles son:a. activa�parcialmente comprometida�comprometida. Esta es la secuencia normal que seguirá unatransacción con éxito. Después de ejecutar todas sus instrucciones, accede al estado parcialmentecomprometida. Después de que se ha grabado en disco suficiente información de recuperación, la transacciónfinalmente accede al estado comprometida.

b. activa�parcialmente comprometida�abortada. Después de ejecutar la última instrucción de latransacción, accede al estado parcialmente comprometida. Pero antes de grabar en disco suficienteinformación de recuperación, puede tener lugar un fallo en el hardware destruyendo el contenido de lamemoria. En este caso, los cambios realizados en la base de datos se deshacen y la transacción accede alestado abortada.

c. activa�fallida�abortada. Después de iniciarse la transacción, si se descubre en algún momentoque no puede continuar la ejecución normal (debido a errores de programación o a errores externos ), entra enel estado fallido. Entonces la transacción es retrocedida, después de lo cual entra en el estado abortada.

15.6 Justifíquese lo siguiente: La ejecución concurrente de transacciones es más importante cuando losdatos se deben extraer de disco (lento) o cuando las transacciones duran mucho y es menos importante cuandohay pocos datos en memoria y las transacciones son muy cortas.

Respuesta: Si una transacción dura mucho o extrae datos desde un disco lento, lleva mucho tiempocompletarla. En ausencia de concurrencia, otras transacciones tendrán que esperar por un largo período detiempo. El tiempo de respuesta medió se incrementará. También, cuando la transacción está leyendo datos deldisco, la CPU pierde el tiempo. Así, los recursos no se emplean correctamente. Por lo tanto, la ejecuciónconcurrente se hace importante en este caso. Sin embargo, cuando las transacciones son cortas o los datosestán disponibles en memoria, estos problemas no suceden.

15.7 Explíquese la diferencia entre los términos planificación secuencial y planificación secuenciable.

Respuesta: Una planificación en la que todas las instrucciones que pertenecen a una única transacciónaparecen juntas, se denomina planificación secuencial. Una planificación secuenciable tiene una restricciónmás débil que la que debería ser equivalente para alguna planificación secuencial. Hay dos definiciones deequivalencia de planificaciones: equivalentes en cuanto a conflictos y equivalentes en cuanto a vistas. Ambasse describen en el capítulo.

Page 154: Manual de Apoyo Al Profesor

15.8 Considérense las dos transacciones siguientes:

T1: leer(A);leer(B);si A = 0 entonces B := B + 1;escribir(B).

T2: leer(B);leer(A);si B = 0 entonces A := A + 1;escribir(A).

Sea el requerimiento de consistencia A = 0 � B = 0, siendo los valores iniciales A = B = 0.a. Demuéstrese que toda ejecución secuencial en la que aparezcan estas transacciones conserva laconsistencia de la base de datos.b. Muéstrese una ejecución concurrente de T1 y T2 que produzca una planificación no secuenciable.c. ¿Existe una ejecución concurrente de T1 y T2 que produzca una planificación secuenciable?

Respuesta:a. Hay dos ejecuciones posibles: T1 T2 y T2 T1.Caso 1:

A Binicialmente 0 0después de T1 0 1después de T2 0 1

Consistencia encontrada: A = 0 � B = 0 % T � F = TCaso 2:

A Binicialmente 0 0después de T1 1 0después de T2 1 0

Consistencia encontrada: A = 0 � B = 0 % F � T = T

b Cualquier intercalado de T1 y T2 resulta en una planificación no secuenciable.

Figura 15.18. Grafo de precedencia.

Page 155: Manual de Apoyo Al Profesor

T1 T2

leer(A)leer(B)leer(A)

leer(B)si A = 0 entonces B = B+ 1

si B = 0 entonces A = A+ 1escribir(A)

escribir(B)

c. No hay ninguna ejecución paralela resultante en una planificación secuenciable. Del apartado a sesabe que una planificación secuenciable resulta en A = 0 � B = 0 . Supóngase que se empieza con T1 leer(A) .Entonces, cuando la planificación termine, no importa cuando se ejecutan los pasos de T2, B = 1 . Supóngaseahora que se empieza ejecutando T2 antes de completar T1 . Entonces T2 leer(B) dará a B un valor de 0 . Así,cuando se complete T2, A = 1 . Así, B = 1 � A = 1 � ¬ (A = 0 � B = 0).Análogamente empezando con T2 leer(B).

15.9 Puesto que toda planificación secuenciable en cuanto a conflictos es secuenciable en cuanto a vistas,¿por qué se hace hincapié en la secuencialidad en cuanto a conflictos, en vez de en la secuencialidad encuanto a vistas?

Respuesta: La mayoría de los protocolos de control de concurrencia (protocolos para asegurar que sólo segeneran planificaciones secuenciables), empleados en la práctica, están basados en la secuencialidad encuanto a conflictos — realmente permiten sólo un subconjunto de planificaciones secuenciales en cuanto aconflictos. La forma general de secuencialidad en cuanto a vistas es muy costosa de comprobar y sólo unaforma muy restringida de ella se emplea para el control de concurrencia.

15.10 Considérese el grafo de precedencia de la Figura 15.18. ¿Es secuenciable en cuanto a conflictos laplanificación correspondiente? Razónese la respuesta.

Respuesta: Hay una planificación secuenciable correspondiente al grafo de precedencia siguiente, dado queel grafo es acíclico. Una posible planificación se obtiene haciendo una ordenación topológica, es decir, T1, T2,T3, T4, T5.

15.11 ¿Qué es una planificación recuperable? ¿Por qué es conveniente la recuperabilidad de lasplanificaciones?¿Hay circunstancias bajo las cuales puede ser conveniente permitir planificaciones no recuperables? Razónesela respuesta.

Page 156: Manual de Apoyo Al Profesor

Respuesta: Una planificación recuperable es aquélla en la que para todo par de transacciones Ti y Tj , talesque Tj lee elementos de datos que ha escrito previamente Ti, la operación comprometer de Ti aparece antes quela de Tj. Las planificaciones recuperables son convenientes porque el fallo de una transacción podría, de locontrario, llevar al sistema a un estado de inconsistencia irreversible. Las planificaciones no recuperablespueden necesitarse, algunas veces, cuando las actualizaciones se deben hacer visibles pronto debido aligaduras temporales, incluso si no han sido comprometidas aún, lo cual puede ser requerido paratransacciones muy largas.

15.12 ¿Qué es una planificación sin cascada? ¿Por qué es conveniente la planificación sin cascada?¿Hay circunstancias bajo las cuales puede ser conveniente permitir planificaciones que no sean sin cascada?Razónese la respuesta.

Respuesta: Una planificación sin cascada es aquélla para la que todo par de transacciones Ti y Tj , tales que Tjlee un elemento de datos que ha escrito previamente Ti, la operación comprometer de Ti aparece antes que laoperación de lectura de Tj. Las planificaciones sin cascada son convenientes porque el fallo de unatransacción no conduce al aborto de ninguna otra transacción. Naturalmente, esto se consigue a costa de unamenor concurrencia.Si los fallos suceden raramente, de tal manera que se pueda pagar el precio de abortos en cascada por elincremento de concurrencia, podrían ser convenientes planificaciones que no sean sin cascada.

Page 157: Manual de Apoyo Al Profesor

CAPITULO 16

CONTROL DE CONCURRENCIA

Este capítulo describe como controlar las ejecuciones concurrentes en una base de datos, con el objeto degarantizar las propiedades de aislamiento de las transacciones. Una variedad de protocolos se definen con estepropósito. Si se dispone de poco tiempo, se pueden omitir algunos protocolos. Se recomienda cubrir, almenos, bloqueo de dos fases (Apartado 16.1.1), hasta 16.1.3, detección y recuperación de interbloqueos(Apartado 16.6, omitiendo el Apartado 16.6.1), el fenómeno fantasma (Apartado 16.7.3) y los conceptos trasel control de la concurrencia de índices (parte de introducción del Apartado 16.9). Por lo tanto, se cubrirían lamayor parte de las técnicas empleadas.

Merece la pena apuntar como los protocolos de bloqueo basados en grafos generalizan protocolossencillos, tales como la adquisición ordenada de bloqueos, la cual pueden haber estudiado los estudiantes enun curso de sistemas operativos. Aunque los protocolos de marcas temporales por sí mismos no sonampliamente usados, el bloqueo de dos fases multi versión (Apartado 16.5.2) está aumentando deimportancia, dado que permite ejecutar grandes transacciones de sólo lectura concurrentemente conactualizaciones.

El fenómeno fantasma es a menudo mal interpretado por los estudiantes, mostrando que el bloqueode dos fases es incorrecto. Vale la pena remarcar que las transacciones que exploran una relación deben leeralgunos datos para encontrar qué tuplas están en la relación; mientras que estos datos estén bloqueados en unmodo de dos fases, el fenómeno fantasma no avanzará.

Cambios a la tercera edición:

Este capítulo ha sido reorganizado a partir de la edición anterior. Algunas de las materias del capítulo deControl de Concurrencia de la segunda edición (Capítulo 11), tales como planificaciones y pruebas parasecuencialización, se han trasladado al Capítulo 15 de la tercera edición. Los apartados sobre la gestión deinterbloqueos (Apartado 16.6) y la concurrencia en estructuras de índice (Apartado 16.9) se han trasladadodesde el Capítulo 12 de la segunda edición (Procesamiento de Transacciones). El apartado sobre bloqueo dedos fases multi versión es nuevo.

Page 158: Manual de Apoyo Al Profesor

Ejercicios

16.1 Demuéstrese que el protocolo de bloqueo de dos fases asegura la secuencialidad en cuanto aconflictos y que se pueden secuenciar las transacciones a través de sus puntos de bloqueo.

Respuesta:

16.2 Considérense las dos transacciones siguientes:

T31: leer(A);leer(B);si A = 0 entonces B := B + 1;escribir(B).

T32: leer(B);leer(A);si B = 0 entonces A := A + 1;escribir(A).

Añádanse a las transacciones T31 y T32 las instrucciones de bloqueo y desbloqueo, para que sigan el protocolode dos fases. ¿Puede producir la ejecución de estas transacciones un interbloqueo?

Respuesta:a. Instrucciones de bloqueo y desbloqueo:

T31: bloquear-S(A)leer(A)bloquear-X(B)leer(B)si A = 0entonces B := B + 1escribir(B)desbloquear(A)desbloquear(B)

T32: bloquear-S(B)leer(B)bloquear-X(A)leer(A)si B = 0entonces A := A + 1escribir(A)desbloquear(B)desbloquear(A)

Page 159: Manual de Apoyo Al Profesor

b La ejecución de estas transacciones puede dar lugar a interbloqueos Por ejemplo, considérese lasiguiente planificación parcial:

T31 T32

bloquear-S(A)bloquear-S(B)leer(B)

leer(B)bloquear-X(B)

bloquear-X(A)

Las transacciones ahora están interbloqueadas

16.3 ¿Qué beneficio proporciona el bloqueo estricto de dos fases? ¿Qué inconvenientes tiene?

Respuesta: Dado que sólo produce planificaciones sin cascada, la recuperación es muy fácil. Pero el conjuntode planificaciones que se puede obtener es un subconjunto de los que se obtiene desde el bloqueo sencillo dedos fases, con lo que se reduce la concurrencia.

16.4 ¿Qué beneficio proporciona el bloqueo riguroso de dos fases? Compárese con otras formas debloqueo de dos fases.

Respuesta: El bloqueo riguroso de dos fase tiene las ventajas del bloqueo estricto de dos fases. Además tienelas propiedades de que para dos transacciones conflictivas, su orden de compromiso es su orden desecuencialidad. En algunos sistemas lo usuarios pueden esperar este comportamiento.

16.5 Muchas implementaciones de sistemas de bases de datos utilizan el bloqueo estricto de dos fases.Indíquense tres razones que expliquen la popularidad de este protocolo.

Respuesta: Es relativamente sencillo de implementar, debido a las planificaciones sin cascada impone unoscostes de retroceso bajos y generalmente permite un nivel aceptable de concurrencia.

16.6 Considérese una base de datos organizada como un árbol con raíz. Supóngase que se inserta un nodoficticio entre cada par de nodos. Demuéstrese que, si se sigue el protocolo de árbol con este nuevo árbol, seobtiene una mejor concurrencia que con el árbol original.

Respuesta: La prueba está en Buckley y Silberschatz, “Concurrency Control in Graph Protocols by UsingEdge Locks,” Proc. ACM SIGACT-SIGMOD Simposio sobre los Principios de Sistemas de Base de Datos,1984.

16.7 Demuéstrese con un ejemplo que hay planificaciones que son posibles con el protocolo de árbol, queno lo son con protocolos de bloqueo de dos fases y viceversa.

Page 160: Manual de Apoyo Al Profesor

Respuesta: Considérese el grafo de base de datos estructurada en árbol que se presenta a continuación.

Planificación posible bajo el protocolo de árbol, pero no bajo el de bloqueo de dos fases:

T1 T2

bloquear(A)bloquear(B)desbloquear(A)

bloquear(A)bloquear(C)desbloquear(B)

bloquear(B)desbloquear(A)desbloquear(B)

desbloquear(C)

Planificación posible bajo el bloqueo de dos fases, pero no bajo el protocolo de árbol:

T1 T2

bloquear(A)bloquear(B)

bloquear(C)desbloquear(B)

desbloquear(A)desbloquear(C)

16.8 Considérese la siguiente extensión del protocolo de bloqueo de árbol, que permite bloqueoscompartidos y exclusivos:

• Una transacción puede ser de sólo lectura, en cuyo caso sólo puede solicitar bloqueos compartidos, o bienpuede ser de actualización, en cuyo caso sólo puede solicitar bloqueos exclusivos.• Cada transacción debe seguir las reglas del protocolo de árbol. Las transacciones de sólo lectura puedenbloquear primero cualquier elemento de datos, mientras que las transacciones de actualización deben bloquearprimero la raíz.

Demuéstrese que este protocolo garantiza la secuencialidad y la ausencia de interbloqueos.

Respuesta: La prueba está en Kedem y Silberschatz, “Locking Protocols: en exclusiva para Shared Locks,”JACM Vol. 30, 4, 1983.

Page 161: Manual de Apoyo Al Profesor

16.9 Considérese el siguiente protocolo de bloqueo basado en grafos, el cual sólo permite modos debloqueo exclusivos y que funciona con grafos de datos con forma de grafo acíclico dirigido con raíz.

• Una transacción puede bloquear en primer lugar cualquier nodo.• Para bloquear cualquier otro nodo, la transacción debe poseer un bloqueo sobre la mayoría de los padres dedicho nodo.

Demuéstrese que este protocolo garantiza la secuencialidad y la ausencia de interbloqueos.

Respuesta: La prueba está en Kedem y Silberschatz, “Controlling Concurrency Using Locking Protocols,”Proc. Annual IEEE Simposio sobre Fundamentos de la Ciencia de la Computación, 1979.

16.10 Considérese el siguiente protocolo de bloqueo basado en grafos que sólo permite bloqueosexclusivos y que funciona con grafos de datos con forma de grafo dirigido acíclico con raíz.

• Una transacción puede bloquear en primer lugar cualquier nodo.• Para bloquear cualquier otro nodo, la transacción debe haber visitado a todos los padres de dicho nodo ydebe poseer un bloqueo sobre uno de los padres del vértice.

Demuéstrese que este protocolo garantiza la secuencialidad y la ausencia de interbloqueos.

Respuesta: La prueba está en Kedem y Silberschatz, “Controlling Concurrency Using Locking Protocols,”Proc. Annual IEEE Simposio sobre Fundamentos de la Ciencia de la Computación, 1979.

16.11 Considérese una variante del protocolo de árbol llamada protocolo de bosque. La base de datos estáorganizada como un bosque de árboles con raíz. Cada transacción Ti debe seguir las siguientes reglas:

• El primer bloqueo en cada árbol puede hacerse sobre cualquier elemento de datos.Se pueden solicitar el segundo y posteriores bloqueos, sólo si el padre del nodo solicitado está bloqueadoactualmente.• Se pueden desbloquear los elementos de datos en cualquier momento.• Ti no puede volver a bloquear un elemento de datos después de haberlo desbloqueado.

Demuéstrese que el protocolo de bosque no asegura la secuenciabilidad.

Respuesta: Tómese un sistema con dos árboles:

Se tienen dos transacciones, T1 y T2. Considérese la siguiente planificación legal:

Page 162: Manual de Apoyo Al Profesor

T1 T2

bloquear(n1)bloquear(n3)escribir(n3)desbloquear(n3)

bloquear(n2)bloquear(n5)escribir(n5)desbloquear(n5)

bloquear(n5)leer(n5)desbloquear(n5)desbloquear(n1)

bloquear(n3)leer(n3)desbloquear(n3)desbloquear(n2)

Esta planificación no es secuenciable.

16.12 El bloqueo no se hace explícitamente en lenguajes de programación persistentes. En vez de esto, sedeben bloquear los objetos (o sus páginas correspondientes) cuando se accede a dichos objetos.Muchos de los más modernos sistemas operativos permiten al usuario definir protecciones de acceso (sinacceso, lectura, escritura) para las páginas y los accesos a memoria que violen las protecciones de acceso dancomo resultado una violación de protección (véase la orden mprotect de Unix , por ejemplo). Descríbasela forma en que se puede usar el mecanismo de protección de acceso para bloqueos a nivel de página enlenguajes de programación persistentes. (Sugerencia: La técnica es algo parecida a la que se empleaba para elrescate hardware en el Apartado 11.9.4).

Respuesta: El mecanismo de protección de acceso se puede emplear para implementar bloqueos a nivel depágina. Considérense primero las lecturas. Se permite a un proceso leer una página sólo después de quebloquee la lectura de la página. Esto se implementa por medio de mprotect, para desactivar inicialmentelos permisos de lectura a todas las páginas, para el proceso. Cuando el proceso intenta acceder a una direcciónen una página, tiene lugar una violación de la protección. El gestor asociado con la violación de la protecciónsolicita, entonces, un bloqueo de lectura sobre la página y, después de que se adquiere el bloqueo, se hace usode mprotect para permitir que el proceso acceda a leer la página y, finalmente, permitir que continúe. Elacceso a la escritura se maneja de forma similar.

16.13 Considérese una base de datos que tiene la operación atómica incrementar, además de lasoperaciones leer y escribir. Sea V el valor del elemento de datos X. La operación

incrementar (X) en C

asigna el valor de X a V + C en un paso atómico. El valor de X no está disponible para la transacción hasta queno se ejecute posteriormente una operación leer (X). La Figura 16.17 muestra una matriz de compatibilidad debloqueos para tres tipos de bloqueo: modo compartido, exclusivo y de incremento.

Page 163: Manual de Apoyo Al Profesor

C X IC cierto falso falsoX falso falso falsoI falso falso cierto

Figura 16.17. Matriz de compatibilidad de bloqueos

a. Demuéstrese que, si todas las transacciones bloquean el dato al que acceden en el modocorrespondiente, entonces el bloqueo de dos fases asegura la secuencialidad.b. Demuéstrese que la inclusión del bloqueo en modo incrementar permite una mayor concurrencia.(Sugerencia: Considérense las transacciones de fondos en el ejemplo bancario).

Respuesta: La prueba está en Korth, “Locking Primitives in a Database System,” JACM Vol. 30, 1983.

16.14 En la ordenación por marcas temporales, marca_temporal(Q) indica la mayor marca temporal detodas las transacciones que hayan ejecutado escribir(Q) con éxito. Supóngase que, en lugar de ello,marca_temporal-E(Q) se define como la marca temporal de la transacción más reciente que haya ejecutadoescribir(Q) con éxito. ¿Hay alguna diferencia al cambiar esta definición? Razónese la respuesta.

Respuesta: No habría ninguna diferencia. El protocolo de escritura es tal que la última transacción paraescribir un elemento es, también, la que se ha hecho con mayor marca temporal.

16.15 Cuando se retrocede una transacción en el protocolo de ordenación por marcas temporales, se leasigna una nueva marca temporal. ¿Por qué no puede conservar simplemente su antigua marca temporal?

Respuesta: Una transacción es retrocedida porque una transacción más nueva ha leído o escrito el dato que,se supone, iba a escribir. Si la transacción retrocedida se reintrodujera con igual marca temporal, la mismarazón para el retroceso sería todavía válida y la transacción habría de retrocederse de nuevo. Esto continuaríaindefinidamente.

16.16 En el protocolo de granularidad múltiple, ¿qué diferencia hay entre bloqueo implícito y explícito?

Respuesta: Cuando una transacción bloquea explícitamente un nodo en modo exclusivo o compartido,bloquea implícitamente, en el mismo modo, a todos los descendientes de ese nodo. La transacción no tienenecesidad de bloquear explícitamente los nodos descendientes. No hay diferencia en las funcionalidades deestos bloqueos, la única diferencia está en la forma en que se adquieren y en lo probado de su presencia.

16.17 Aunque el modo IXC es útil para el bloqueo de granularidad múltiple, no se usa un modo exclusivo eintencional-compartido (ICX). ¿Por qué no es útil?

Respuesta: Un bloqueo exclusivo es incompatible con cualquier otro tipo de bloqueo. Una vez que sebloquea un nodo en modo exclusivo, ninguno de los descendientes puede ser accedido simultáneamente, enningún modo, por cualquier otra transacción Por lo tanto, no tiene sentido una declaración exclusiva eintencional-compartida.

16.18 La utilización de un bloqueo de granularidad múltiple puede necesitar más o menos bloqueos que unsistema equivalente con una granularidad simple de bloqueo. Apórtense ejemplos de ambas situaciones ycompárese el aumento relativo de la concurrencia que se permite.

Respuesta: Si una transacción necesita acceder a un gran conjunto de elementos, el bloqueo de granularidad

Page 164: Manual de Apoyo Al Profesor

múltiple requiere menos bloqueos mientras que, si sólo un elemento necesita ser accedido, el sistema debloqueo de granularidad simple permite esto con sólo un bloqueo. Debido a que todos los elementos de losdatos deseados están bloqueados y desbloqueados juntos en el esquema de granularidad múltiple, el coste delbloqueo es bajo pero la concurrencia se reduce.

16.19 Considérese el esquema de control de concurrencia basado en la validación del Apartado 16.3.Demuéstrese que si se elige Validación (Ti), en lugar de Inicio(Ti), como marca temporal de la transacción Ti,se puede esperar un mejor tiempo de respuesta, con tal que la tasa de conflictos entre las transacciones searealmente baja.

Respuesta: En el esquema de control de concurrencia del Apartado 16.3, elegir Inicio(Ti) como la marcatemporal de Ti aporta un subconjunto de planificaciones permitido, eligiendo Validación (Ti) como la marcatemporal. Emplear Inicio(Ti) significa que quienquiera que haya empezado primero, debe terminar primero.Las transacciones claramente podrían iniciar la fase de validación en el mismo orden en que comienzan aejecutarse, pero esto es demasiado restrictivo. Dado que elegir Validación(Ti) causa menos transacciones noconflictivas al reiniciar, aporta el mejor tiempo de respuesta.

16.20 Demuéstrese que hay planificaciones que son posibles con el protocolo de bloqueo de dos fases, peroque no lo son con el protocolo de marcas temporales y viceversa.

Respuesta: Una planificación que se permite en el protocolo de bloqueo de dos fases, pero no en el de marcastemporales es:

Paso T0 T1 observaciones precedentes1 bloquear-S(A)2 leer(A)3 bloquear-X(B)4 escribir(B)5 desbloquear(B)6 bloquear-S(B)7 leer(B) T1 � T0

8 desbloquear(A)9 desbloquear(B)

Esta planificación no está permitida en el protocolo de marcas temporales porque en el paso 7 la marcatemporal W de B es 1.Una planificación que se permite en el protocolo de marcas temporales, pero no en el de bloqueo de dos faseses:

Paso T0 T1 T2

1 escribir(A)2 escribir(A)3 escribir(A)4 escribir(B)5 escribir(B)

Esta planificación no puede tener instrucciones bloqueadas añadidas para hacerla legal bajo el protocolo debloqueo de dos fases, porque T1 debe desbloquear (A) entre los pasos 2 y 3, y debe bloquear (B) entre lospasos 4 y 5.

Page 165: Manual de Apoyo Al Profesor

16.21 Para cada una de los protocolos siguientes, descríbanse los aspectos de aplicación práctica quesugieran emplear el protocolo y los que sugieran no usarlo:• Bloqueo de dos fases• Bloqueo de dos fases con granularidad múltiple• Protocolo de árbol• Ordenación por marcas temporales• Validación• Ordenación por marcas temporales multi versión• Bloqueo de dos fases multi versión

Respuesta:• Bloqueo de dos fases: Se emplea en aplicaciones sencillas donde es aceptable una granularidad simple. Sihay transacciones grandes de sólo lectura, los protocolos multi versión lo harían mejor. También, si se debenevitar interbloqueos a toda costa, sería preferible el protocolo de árbol.

• Bloqueo de dos fases con granularidad múltiple: Se emplean en aplicaciones mixtas, donde algunasaplicaciones acceden a registros individuales y otras acceden a relaciones enteras o a partes importantes deellas. Los inconvenientes del anterior bloqueo de dos fases también aplican a este protocolo.

• Protocolo de árbol: Utilícese si todas las aplicaciones tienden a acceder a elementos de datos en un ordencoherente con un orden parcial particular. Este protocolo está libre de interbloqueos pero, a menudo, lastransacciones tendrán que bloquear nodos no deseados para acceder a los nodos deseados.

• Ordenación por marcas temporales: Se emplea si la aplicación demanda una ejecución concurrente que seaequivalente a una ordenación secuencial particular (por ejemplo, el orden de llegada), en vez de cualquierordenación secuencial. Aunque los conflictos se gestionen mediante el retroceso de transacciones en vez deesperas y planificaciones, no son recuperables. Para hacerlos recuperables se han de tolerar costes adicionalese incrementos en los tiempos de respuesta. No es adecuado si hay grandes transacciones de sólo lectura, dadoque morirán de inanición. No hay interbloqueos.

• Validación: Si es baja la probabilidad de que entren en conflicto dos transacciones que se ejecutanconcurrentemente, el protocolo se puede emplear ventajosamente para mejorar la concurrencia y los tiemposde respuesta, con costes bajos. No es adecuado con tasas de conflictos elevadas, cuando se va a hacer muchotrabajo inútil.

• Ordenación por marcas temporales multi versión: Se emplea si la ordenación por marcas temporales esapropiada, pero es deseable para solicitudes de lectura que nunca esperan. Comparte la otras desventajas delprotocolo de ordenación por marcas temporales.

• Bloqueo de dos fases multi versión: Este protocolo permite comprometer siempre transacciones de sólolectura sin espera. Las transacciones de actualización siguen el bloqueo de dos fases, de este modo permiten larecuperación de planificaciones con conflictos solucionadas mediante la espera, en vez de el retroceso. Perovuelve el problema de los interbloqueos, aunque las transacciones de sólo lectura no pueden implicarse enellos. Aunque el manteniendo de versiones múltiples incrementa los costes de espacio y tiempo, el bloqueosencillo de dos fases pude ser preferible en situaciones poco conflictivas.

16.22 En una versión modificada del protocolo de marcas temporales se necesita comprobar un bit decompromiso para saber si una petición de lectura debe esperar, o no. Explíquese como puede evitar el bit decompromiso que aborten en cascada. ¿Por qué no se necesita hacer esta comprobación con las peticiones deescritura?

Respuesta: Empleando el bit de compromiso, se hace una petición de lectura para esperar si la transacciónque escribió el elemento del dato no se ha comprometido aún. Por lo tanto, si la transacción de escritura fallaantes del compromiso, se puede abortar sólo esa transacción. La lectura en espera accederá a la versión

Page 166: Manual de Apoyo Al Profesor

anterior, en caso de un sistema multi versión, o al valor almacenado del elemento de datos después del aborto,en el caso de un sistema de versión simple. Para las escrituras, la comprobación de este bit de compromiso esinnecesaria. Esto es así porque, o bien la escritura es “ciega” y por lo tanto independiente del valor antiguo delelemento del dato, o había una lectura anterior, en cuyo caso la prueba ya se había aplicado.

16.23 Explíquese por qué la siguiente técnica de ejecución de transacciones puede proporcionar mayorrendimiento que la utilización del bloqueo estricto de dos fases: Primero se ejecuta la transacción sin adquirirningún bloqueo y sin realizar ninguna escritura a la base de datos, como en las técnicas basadas en lavalidación, pero, a diferencia de ellas, no se realiza otra validación o escritura en la base de datos. En cambio,se vuelve a ejecutar la transacción utilizando bloqueo estricto de dos fases. (Sugerencia: Considérense esperaspara la E/S de disco).

Respuesta: PENDIENTE DE RESOLVER

16.24 ¿Bajo qué condiciones es menos costoso evitar los interbloqueos que permitirlos y luego detectarlos?

Respuesta: El evitar los interbloqueos es preferible si las consecuencias de abortar son serias (como entransacciones interactivas) y si hay conflictos importantes resultando una alta probabilidad de interbloqueo.

16.25 Si se evitan los interbloqueos, ¿sigue siendo posible que haya inanición? Razónese la respuesta.

Respuesta: Una transacción puede convertirse en la víctima de retrocesos de prevención de interbloqueos,arbitrariamente en muchas ocasiones, creando así una situación potencial de inanición.

16.26 Supóngase el protocolo de ordenación por marcas temporales y dos transacciones, una que escribedos elementos de datos p y q y otra que lee los mismos dos elementos de datos. Obténgase una planificaciónpor medio de la cual la comprobación por marcas temporales para una operación escribir falle y provoque elreinicio de la primera transacción, provocando a su vez una cancelación en cascada de la otra transacción.Muéstrese cómo esto podría acabar en inanición de las dos transacciones. (Tal situación, donde dos o másprocesos realizan acciones, pero no se puede completar la tarea porque se interacciona con otros procesos, sedenomina interbloqueo).

Respuesta: PENDIENTE DE RESOLVER

16.27 Explíquese el fenómeno fantasma. ¿Por qué produce este fenómeno una ejecución concurrenteincorrecta, a pesar de utilizar el protocolo de bloqueo de dos fases?

Respuesta: El fenómeno fantasma surge cuando, debido a una inserción o borrado, dos transacciones entranen conflicto lógico a pesar de no bloquearse ninguno de los elementos de los datos en común. El caso de lainserción se describe en el libro. El borrado también puede conducir a este fenómeno. Supóngase que Ti borrauna tupla de una relación mientras Tj rastrea la relación. Si Ti borra la tupla y después Tj lee la relación, Tidebería secuencializarse antes que Tj . Aún no hay ninguna tupla sobre la que Ti y Tj estén en conflicto.

Una interpretación del bloqueo de dos fases, como simplemente el bloqueo de las tuplas accedidas enuna relación, es incorrecta. Hay también un índice o un dato de relación que tiene información sobre las tuplasen la relación. Esta información es leída por cualquier transacción que rastrea la relación y modificada portransacciones que actualizan, insertan o borran en o desde relación. Por lo tanto, el bloqueo también deberealizarse sobre el índice o el dato de relación, evitando el fenómeno fantasma.

Page 167: Manual de Apoyo Al Profesor

16.28 Diséñese un protocolo basado en marcas temporales que evite el fenómeno fantasma.

Respuesta: En el texto se han considerado dos métodos para afrontar el fenómeno fantasma por medio debloqueos. El método de granularidad gruesa, obviamente, funciona también para las marcas temporales. Elmétodo basado en el índice de árbol B+ se puede adaptar al de marcas temporales, tratando los cajones deíndices como elementos de datos con marcas temporales asociadas con ellos y exigiendo que todos losaccesos de lectura empleen un índice. Ahora se demostrará que este método sencillo funciona. Supóngase unatransacción Ti que quiere acceder a todas las tuplas con un determinado rango de valores de claves debúsqueda, empleando un índice de árbol B+ sobre esa clave de acceso. Ti necesitará leer todos los cajones deíndices que tienen los valores clave en ese rango. Se puede ver que no se necesitará ningún borrado oinserción de una tupla, con un valor clave en el mismo rango, para escribir uno de los cajones de índicesleídos por Ti. Así, el conflicto lógico se convierte en un conflicto sobre un cajón de índices y se evita elfenómeno fantasma.

16.29 Explíquese la razón por la que se emplea la consistencia de grado dos. ¿Qué desventajas tiene estatécnica?

Respuesta: PENDIENTE DE RESOLVER

16.30 Supóngase que se emplea el protocolo de árbol del Apartado 16.1.5 para administrar el accesoconcurrente a un árbol B+. Puesto que puede haber una división en una inserción que afecte a la raíz, sededuce que una operación inserción no puede liberar ningún bloqueo hasta que se complete la operaciónentera. ¿Bajo que circunstancias es posible liberar antes un bloqueo?

Respuesta: Nota: El protocolo de árbol del Apartado 16.1.5, referido en esta pregunta, es diferente delprotocolo de granularidad múltiple del Apartado 16.4 y del protocolo de concurrencia de árbol B+ delApartado 16.9.

Ahora se presenta una estrategia para liberar bloqueos pronto. Bajando el árbol desde la raíz, si elhijo del nodo visitado actualmente no está lleno, se liberan los bloqueos mantenidos sobre todos los nodosexcepto el nodo actual, se solicita un bloqueo X sobre el nodo hijo, después de liberar el bloqueo sobre elnodo actual y, entonces ,se desciende al hijo. Por otra parte, si el hijo está lleno, se retienen todos los bloqueosmantenidos, se solicita un bloqueo X sobre el hijo y se desciende a él después de bloquearlo. Al alcanzar elnodo hoja se inicia el procedimiento de inserción. Esta estrategia resulta en mantener los bloqueos sólo sobrelos nodos del árbol de índice lleno, desde la hoja hacia arriba e incluyendo el primer nodo no lleno.

Es posible una optimización a la estrategia anterior. Incluso si el hijo del nodo actual está lleno, sepueden todavía liberar los bloqueos sobre todos los nodos, excepto el actual. Pero después de obtener elbloqueo X sobre el nodo hijo, se divide inmediatamente. Liberando el bloqueo sobre el nodo actual ymanteniendo sólo el bloqueo sobre el hijo dividido apropiado, se desciende sobre él convirtiéndolo en el nodoactual. Con esta optimización, en cualquier momento se mantienen como máximo dos bloqueos, de un nodopadre y un nodo hijo.

16.31 Apórtense ejemplos de planificaciones para mostrar que si cualquier búsqueda, inserción o borradono bloquea el siguiente valor clave, el fenómeno fantasma podría ser indetectable.

Respuesta: PENDIENTE DE RESOLVER

Page 168: Manual de Apoyo Al Profesor

CAPITULO 17

SISTEMAS DE RECUPERACIÓN

Este capítulo cubre modelos de fallos y una variedad de técnicas de recuperación de errores. La recuperaciónen un sistema de base de datos real que soporta transacciones concurrentes es bastante complicada. Paraayudar al estudiante a comprender mejor los conceptos, el capítulo presenta modelos de recuperación encreciente grado de complejidad. El capítulo comienza con un modelo sencillo de recuperación, sin tener encuenta el concepto de concurrencia. Posteriormente, se amplía el modelo para gestionar transaccionesconcurrentes con bloqueos estrictos de dos fases. Hacia el final del capítulo, se presenta un algoritmo derecuperación “avanzada” que soporta la liberación temprana de algunos tipos de bloqueo para mejorar laconcurrencia, por ejemplo en estructuras de índices. Finalmente, se esbozan las variantes del algoritmoARIES, ampliamente usado en la práctica.

ARIES incluye las características de los algoritmos de recuperación avanzada, junto con diversasoptimizaciones que incrementan la velocidad de recuperación.

Se recomienda que, al menos, se traten los apartados hasta, e incluyendo, la Recuperación Basada enel Registro Histórico (Apartado 17.4). La paginación en la sombra (Apartado 17.5) no se usa mucho, pero esútil por razones pedagógicas, para mostrar que existen alternativas a la recuperación basada en el registrohistórico.La recuperación con transacciones concurrentes (Apartado 17.6) es una sección interesante y debería sertratada junto con la Gestión de la Memoria Intermedia (Apartado 17.7), si es posible. El Apartado 17.9, quecubre el algoritmo de recuperación avanzada y ARIES, debería omitirse de todos los cursos, salvo losavanzados. Sin embargo puede emplearse como material de trabajo individual para los estudiantes bienpreparados, incluso en un curso de introducción.

Hay algunos puntos a tener en cuenta:

• Al leer el Apartado 17.2.2 (Implementación del almacenamiento estable), se debería retomar la discusión delapartado 11.2.1, de que la escritura sobre un bloque de disco parcial puede detectarse con una altaprobabilidad empleando sumas de chequeo.

• En el apartado 17.4.3, aunque el modelo asumido es uno donde las transacciones se ejecutansecuencialmente, el procedimiento de recuperación establece que para todas las transacciones Tk en T que notienen ningún <Tk comprometida> registrado en el registro histórico, ejecútese deshacer(Tk). Más de una detales transacciones puede existir, debido a fallos en las transacciones sucesivas.

Cambios a la tercera edición:

Los principales cambios son (a) ahora se incluye el algoritmo de recuperación ARIES (Apartado 17.9.6), y (b)el apartado sobre sistemas de copia de seguridad remotos (Apartado 17.10) se ha trasladado a este capítulodesde su posición inicial en el Capítulo 20. El último cambio está motivado por la necesidad creciente de laalta disponibilidad, la cual se reflejará en un amplio incremento del empleo de sistemas de copia de seguridadremotos. La aportación de alta disponibilidad también puede considerarse una trabajo de los sistemas derecuperación, dado que los mismos registros históricos pueden emplearse para ambas tareas.

Page 169: Manual de Apoyo Al Profesor

Ejercicios

17.1 Explíquese la diferencia entre los tres tipos de almacenamiento –volátil, no volátil y estable- entérminos de coste.

Respuesta: El almacenamiento volátil es el que falla cuando hay una caída en el suministro eléctrico. Lamemoria caché, la memoria principal y los registros, son ejemplos de almacenamiento volátil. Elalmacenamiento no volátil es aquel que retiene su contenido, a pesar de fallos en el suministro eléctrico. Unejemplo es el disco magnético. El almacenamiento estable es aquél que teóricamente sobrevive a cualquiertipo de fallo (salvo un completo desastre!. Este tipo de almacenamiento sólo puede conseguirse mediante lareplicación de los datos.

En términos de coste de E/S, la memoria volátil es la más rápida y el almacenamiento no volátil esgeneralmente varias veces más lento. El almacenamiento estable es mas lento que el no volátil, debido alcoste que supone replicar los datos.

17.2 No se puede implementar el almacenamiento estable.a. Explíquese por qué no.b. Explíquese como tratan este problema los sistemas de bases de datos.

Respuesta:a. El almacenamiento estable no puede implementarse realmente, porque todos los dispositivos dealmacenamiento están compuestos de hardware y todo el hardware es vulnerable a fallos en los dispositivosmecánicos o eléctricos.

b. Los sistemas de bases de datos se aproximan al almacenamiento estable, grabando los datossimultáneamente en varios dispositivos de almacenamiento. Aun cuando uno de los dispositivos caiga, losdatos estarán disponible en un dispositivo diferente. Así, la pérdida de datos se convierte en algoextremadamente improbable.

17.3 Compárense, en términos de facilidad de implementación y sobrecarga, las versiones demodificación inmediata y modificación diferida, de las técnicas de recuperación basadas en registro histórico.

Respuesta:• La técnica de recuperación que emplea un registro histórico con modificaciones diferidas, tiene lassiguientes ventajas sobre la que emplea modificaciones inmediatas:a. La técnica es más fácil y sencilla de implementar, dado que se necesitan menos operaciones yrutinas, es decir, no hay DESHACER.

b. La técnica requiere menos sobrecarga, dado que no es necesario hacer operaciones extras de E/Shasta el momento del compromiso (los registros del registro histórico se pueden almacenar en memoria todoel tiempo).

c. Dado que los valores antiguos de los datos no han de estar presentes en los registros del registrohistórico, esta técnica requiere menos espacio de almacenamiento.

• Los inconvenientes de la técnica de modificación diferida son:a. Cuando se necesita acceder a un elemento de datos, la transacción ya no puede leer directamente lapágina correcta desde la memoria intermedia de la base de datos porque una escritura previa, hecha por lamisma transacción sobre el mismo elemento de datos, puede no haberse propagado aún a la base de datos.Podría haber actualizado una copia del elemento de datos y haber diferido la modificación en curso de la basede datos. Por lo tanto, encontrar la versión correcta de un elemento de datos resulta más caro.

b. Esta técnica permite menos concurrencia que la de recuperación con actualizaciones inmediatas.

Page 170: Manual de Apoyo Al Profesor

Esto es así porque los bloqueos de las escrituras se conservan por las transacciones, hasta el momento delcompromiso.

c. Para una transacción de larga duración con numerosas actualizaciones, el espacio de memoriaocupado por los registros del registro histórico y las copias locales de elementos de datos, puede llegar a serdemasiado alto.

17.4 Supóngase que un sistema emplea modificación inmediata. Demuéstrese, con un ejemplo, comopodría darse un estado inconsistente en la base de datos, si no se escriben en almacenamiento estable losregistros del registro histórico de una transacción, antes de que el dato actualizado por la transacción seescriba a disco.

Respuesta: Considérese el esquema de una banco y una transacción que transfiere 50€ desde una cuenta A auna cuenta B. La transacción tiene los siguientes pasos:a. leer(A,a1)b a1 := a1 - 50c. escribir(A,a1)d. leer(B,b1)e. b1 := b1 + 50f. escribir(B,b1)

Supóngase que el sistema se cae después que la transacción se compromete, pero antes de que sus registrosdel registro histórico sean desviados al almacenamiento estable. Asúmase también que, en el momento de lacaída, realmente sólo se había propagado al disco el tercer paso de la actualización de A, mientras que lapágina de la memoria intermedia conteniendo B no se había grabado todavía sobre disco. Cuando ese levantael sistema está en un estado inconsistente y no es posible la recuperación porque no hay, en elalmacenamiento estable, registros del registro histórico que se correspondan a esta transacción.

17.5 Explíquese el propósito del mecanismo de los puntos de revisión. ¿Con qué frecuencia deberíanrealizarse los puntos de revisión? Explíquese cómo afecta la frecuencia de los puntos de revisión:• Al rendimiento del sistema cuando no ocurre ningún fallo• Al tiempo que tarda en recuperarse de una caída del sistema• Al tiempo que tarda en recuperarse de una caída del disco

Respuesta: El punto de revisión se hace con la técnica de recuperación basada en el registro histórico, parareducir el tiempo necesario para la recuperación después de una caída. Si no hay punto de revisión deberecorrerse todo el registro histórico después de una caída y, a partir de él, deshacer/rehacer todas lastransacciones. Si se ha realizado un punto de revisión, la mayor parte de los registros del registro históricoanteriores al punto de revisión se pueden ignorar en el momento de la recuperación.

Otra razón para realizar puntos de revisión es eliminar los registros del registro histórico delalmacenamiento estable cuando se llena.

Dado que los puntos de revisión causan algo de pérdida en el rendimiento mientras están teniendolugar, debería reducirse su frecuencia si no es crítica una recuperación rápida. Si es necesaria unarecuperación rápida, se debería incrementar la frecuencia de los puntos de revisión. La frecuencia de lospuntos de revisión es inevitable si es pequeña la cantidad de almacenamiento estable disponible. Los puntosde revisión no tienen efecto sobre la recuperación desde una caída del disco; los volcados de archivo sonequivalentes a los puntos de revisión para la recuperación desde caídas de disco.

17.6 Cuando el sistema se recupera de una caída (véase el Apartado 17.6.4), construye una lista-deshacery una lista-rehacer. Explíquese por qué deben procesarse en orden inverso los registros del registro históricode transacciones que se encuentran en la lista-deshacer, mientras que los registros del registro históricocorrespondientes a las transacciones de la lista-rehacer se procesan hacia delante.

Page 171: Manual de Apoyo Al Profesor

Respuesta: La primera fase de la recuperación es deshacer los cambios hechos por las transacciones fallidas,para que todos los elementos de datos que han sido modificados por ellas retornen a los valores que teníanantes de que se iniciara la primera de las transacciones fallidas. Si varias de las transacciones fallidashubieran modificado el mismo elemento de datos, el procesamiento hacia delante de los registros del registrohistórico para las transacciones de la lista deshacer, haría que el elemento de datos tomara el valor que teníaantes de que se iniciara la última transacción fallida que modificó ese elemento de datos. Esto es claramenteerróneo y se puede ver que el proceso inverso aporta el resultado deseado.

La segunda fase de la recuperación es rehacer los cambios hechos por las transaccionescomprometidas, para que todos los elementos de datos que han sido modificados por ellas sean restaurados alos valores que tenían después de que terminara la última de las transacciones comprometidas.Se puede ver que sólo procesando hacia delante los registros del registro histórico que pertenecen a lastransacciones de la lista rehacer, se puede garantizar esto.

17.7 Compárense, en términos de facilidad de implantación y sobrecarga, el esquema de recuperación conpaginación en la sombra con los esquemas de recuperación basados en el registro histórico.

Respuesta: La técnica de paginación en la sombra es fácil de implementar para sistemas transaccionalessencillos, pero difícil para sistemas transaccionales múltiples. En particular, es muy duro permitir múltiplesactualizaciones concurrentes sobre la misma página. La paginación en la sombra podría sufrir una sobrecargade espacio extra, pero la recogida de basura puede ocuparse de eso. La sobrecarga de E/S para la paginaciónen la sombra es generalmente más alta que la de las técnicas basadas en el registro histórico, dado que lastécnicas basadas en la sombra necesitan grabar un registro por actualización sobre el registro histórico,mientras que la técnica de paginación en la sombra necesita grabar un bloque por cada bloque actualizado.

17.8 Considérese una base de datos compuesta por 10 bloques consecutivos en el disco (bloque 1, bloque2, . . ., bloque 10). Muéstrese el estado de la memoria intermedia y una posible ordenación física de losbloques después de las siguientes modificaciones, suponiendo que se utiliza paginación en la sombra, que lamemoria intermedia en memoria principal sólo puede contener tres bloques y que se emplea la estrategiamenos recientemente utilizada para gestionar la memoria intermedia.

leer bloque 3leer bloque 7leer bloque 5leer bloque 3leer bloque 1modificar bloque 1leer bloque 10modificar bloque 5

Respuesta: La ordenación inicial de los bloques del disco es: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.Supóngase que los dos bloques siguientes al bloque 10, sobre el disco, son los dos primeros bloques en la listade bloques libres.a. Los tres primeros pasos leer dan como resultado los bloques 3, 7 y 5, siendo colocados en lamemoria intermedia.

b. El cuarto paso leer no requiere acceder al disco.

c. El quinto paso leer requiere leer el bloque 1. El bloque 7 es el que menos recientemente se haempleado en la memoria intermedia, por lo que se reemplaza por el bloque 1.

d. El sexto paso es para modificar el bloque 1. El primer bloque libre se elimina de la lista de bloqueslibres y la entrada 1 en la tabla de páginas actual se hace que apunte a él. Se modifica el bloque 1 en lamemoria intermedia. Cuando bloques sucios se vuelven a desviar al disco en el momento de comprometer latransacción, se deberían grabar sobre el disco los bloques que apuntaban a la tabla de páginas actualmodificada.

Page 172: Manual de Apoyo Al Profesor

e. El séptimo paso hace que se lea el bloque 10. El bloque 5 se sobrescribe en la memoria intermedia,dado que es el que menos recientemente se ha usado.

f. En el octavo paso, el bloque 3 se reemplaza por el cloque 5 y, después, el bloque 5 se modificacomo en el sexto paso.

Por lo tanto, la ordenación final de los bloques en el disco es: 2, 3, 4, 6, 7, 8, 9, 10, 1, 5. El conjunto debloques en la memoria intermedia es: 5 (modificado), 10, 1 (modificado). Estos deben ser desviados a losrespectivos bloques del disco apuntados por la tabla de páginas actual, antes que la transacción lleve a cabo elproceso de comprometer.

17.9 Explíquese cómo el gestor de la memoria intermedia puede conducir a la base de datos a un estadoinconsistente, si algunos registros del registro histórico pertenecientes a un bloque no se escriben enalmacenamiento estable, antes de escribir en el disco el citado bloque.

Respuesta: Si un elemento de datos x se modifica sobre el disco mediante una transacción, antes de que elcorrespondiente registro del registro histórico sea grabado sobre almacenamiento estable, el único registro delvalor antiguo de x está en la memoria principal, donde podría perderse en caso de una caída. Si la transacciónno hubiera finalizado aún, en el momento de la caída, resultaría una inconsistencia irrecuperable.

17.10 Explíquense las ventajas del registro histórico lógico. Proporciónense ejemplos de una situación enla que sea preferible el registro histórico lógico, frente al registro histórico físico y de una situación en la quesea preferible el registro histórico físico al registro histórico lógico.

Respuesta: El registro histórico lógico tiene menos requerimientos de espacio y, con el registro de deshacerlógico, permite liberar antes los bloqueos. Esto es conveniente en situaciones como el control de concurrenciapara estructuras de índices, donde se requiere un muy alto grado de concurrencia. Una ventaja de emplear elregistro de rehacer físico es que son posibles los puntos de revisión difusos. Así, en un sistema que necesitarealizar frecuentes puntos de revisión, esto reduce la sobrecarga.

17.11 Explíquense las razones por las que la recuperación en transacciones interactivas es más difícil detratar que la recuperación en transacciones por lotes. ¿Existe una forma simple de tratar esta dificultad?(Sugerencia: Considérese una transacción de cajero automático en la que se retira dinero).

Respuesta: Las transacciones interactivas son más difíciles de recuperar que las transacciones por lotes,debido a que algunas acciones pueden ser irrevocables. Por ejemplo, una instrucción de salida (escritura)puede haber encendido un misil o causado que una máquina de un banco de dinero a un cliente. La mejormanera de gestionar esto es intentar ejecutar todas las instrucciones al final de la transacción. Así, si latransacción aborta a la mitad, no se habrá hecho ningún daño.

17.12 A veces hay que deshacer una transacción después de que se haya comprometido porque se haejecutado erróneamente, debido por ejemplo a la introducción incorrecta de datos de un cajero.a. Se da un ejemplo para demostrar que el uso de un mecanismo normal para deshacer esta transacciónpodría conducir a un estado inconsistente.b. Una forma de manejar esta situación es llevar la base de datos a un estado anterior al compromiso dela transacción errónea (denominado recuperación a un instante). En este esquema, se deshacen los efectos delas transacciones comprometidas después. Sugiérase una modificación del mecanismo de recuperaciónavanzada para implementar la recuperación a un instante.c. Las transacciones correctas se pueden volver a ejecutar lógicamente, pero no se pueden reejecutarusando sus registros del registro histórico. ¿Por qué?

Page 173: Manual de Apoyo Al Profesor

Respuesta:• Considérese una cuenta bancaria A con un saldo de 100€. Sean dos transacciones T1 y T2, cada unadepositando 10€ en la cuenta. Así, el saldo sería de 20€ después que ambas transacciones se ejecutaran.Supongamos que las transacciones se ejecutan secuencialmente: T1 primero y después T2 . Los registros delregistro histórico, correspondientes a las actualizaciones de A por las transacciones T1 y T2, serían < T1,A,100, 110 > y < T2,A, 110, 120 > respectivamente.Supóngase que se desea deshacer la transacción T1. El mecanismo normal para deshacer la transacciónreemplazará el valor en cuestión – A en este ejemplo – por el campo del antiguo valor en el registro delregistro histórico. De este modo, si se deshace la transacción T1 empleando el mecanismo normal paradeshacer transacciones, el saldo resultante sería 100€ y se habrían, en efecto, deshecho las dos transacciones,mientras se intentaba deshacer sólo la transacción T1.• ... PENDIENTE.• Considérese de nuevo un ejemplo a partir del primer elemento. Supóngase que ambas transacciones sedeshacen y el saldo retorna al valor original de 100€.

Ahora se desea rehacer la transacción T2. Si se rehace el registro del registro histórico < T2,A, 110, 120 >correspondiente a la transacción T2, el saldo se convertiría en 120€ y se habrían, en efecto, rehecho las dostransacciones, mientras que se intentaba rehacer sólo la transacción T2.

17.13 En los lenguajes de programación persistentes no se realiza explícitamente el registro histórico de lasmodificaciones.Descríbase como pueden usarse las protecciones de acceso a las páginas que proporcionan los sistemasoperativos modernos, para crear imágenes anteriores y posteriores de las páginas que son modificadas.(Sugerencia: Véase el Ejercicio 16.12)

Respuesta: Esto se implementa por medio de mprotect, para desactivar inicialmente los accesos a todas laspáginas, para el proceso. Cuando el proceso intenta acceder a una dirección en una página, tiene lugar unaviolación de la protección. El gestor asociado con la violación de la protección solicita, entonces, un bloqueode escritura sobre la página y, después que se adquiere el bloqueo, escribe el contenido inicial ( imagenanterior ) de la página sobre el registro histórico. Emplea entonces mprotect para permitir el acceso deescritura a la página por el proceso y, finalmente, permitir que continúe el proceso. Cuando la transacción estálista para el compromiso, y antes de que libere el bloqueo sobre la página, escribe el contenido de la página(imagen posterior) sobre el registro histórico. Estas imágenes anterior y posterior se pueden emplear en larecuperación después de una caída.

Esta técnica se puede optimizar para no escribir la página entera sobre el registro histórico para elregistro deshacer, con tal que el programa clave la página en memoria.

17.14 ARIES asume que hay espacio en cada página para un NSR. Al manejar objetos grandes que abarcanvarias páginas, tales como archivos del sistema operativo, un objeto puede usar una página completa, sin dejarespacio para el NSR. Sugiérase una técnica para manejar esta situación; esta técnica debe soportaroperaciones rehacer físicas, pero no es necesario que soporte operaciones rehacer fisiológicas.

Respuesta: PENDIENTE. Array independiente.

17.15 Explíquese la diferencia entre una caída del sistema y un “desastre”.

Respuesta: En una caída del sistema la CPU se viene abajo y el disco también se puede caer. Pero se suponeque el almacenamiento estable del sitio supera las caídas del sistema. En un “desastre”, todo en el sitio quedadestruido. Es necesario distribuir el almacenamiento estable para superar los desastres.

Page 174: Manual de Apoyo Al Profesor

17.16 Para cada uno de los siguientes requisitos, identifíquese la mejor opción del grado de durabilidad enun sistema remoto de copia de seguridad:a. Pérdida de datos que se debe evitar pero se puede tolerar alguna pérdida de disponibilidad.b. El compromiso de transacciones se debe realizar rápidamente, perdiendo algunas transaccionescomprometidas en caso de desastre.c. Se requiere un alto grado de disponibilidad y durabilidad, pero es aceptable un mayor tiempo deejecución para el protocolo de compromiso de transacciones.

Respuesta:a. Dos muy seguro es adecuado aquí porque garantiza la durabilidad de las actualizaciones mediantetransacciones comprometidas, aunque sólo pueda llevarse a cabo si el sitio principal y el de copia deseguridad están en funcionamiento. La disponibilidad es baja, pero se ha mencionado que esto es aceptable.

b. El compromiso de uno seguro es tan rápido que no ha de esperar a que el registro histórico alcanceel sitio de la copia de seguridad. Dado que la pérdida de datos se puede tolerar, es la mejor opción.

c. Con el compromiso de dos seguro, la probabilidad de pérdida de datos es muy baja y tambiéncompromete que se puede llevar a cabo mientras que, al menos, el sitio principal esté operativo. De estemodo, la disponibilidad es alta. Los compromisos llevan más tiempo que en el protocolo uno seguro, pero esoha sido mencionado como aceptable.

Page 175: Manual de Apoyo Al Profesor

CAPITULO 18

ARQUITECTURAS DE SISTEMAS DE BASES DE DATOS

Este capítulo es adecuado para un curso de introducción. Se recomienda cubrirlo al menos como material detrabajo individual, dado que los estudiantes son bastante susceptibles para el empleo de arquitecturas de basesde datos no centralizadas (particularmente cliente-servidor), cuando acceden al mundo real. La materia de estecapítulo podría ser potencialmente sustituida por el protocolo de compromiso de dos fases (C2F), (apartado19.4.1 del capítulo 19) para proporcionar a los estudiantes una visión general de los detalles más importantesde las arquitecturas de bases de datos no centralizadas.

Cambios a la tercera edición:

El tratamiento de las estructuras de los procesos de bases de datos (apartado 18.2.1) es nuevo en esta edición.Se ha actualizado el alcance de la tecnología de red y se han cubierto brevemente las redes de área dealmacenamiento.

Page 176: Manual de Apoyo Al Profesor

Ejercicios

18.1 ¿Por qué es relativamente fácil trasladar una base de datos desde una máquina con un únicoprocesador a otra con varios procesadores, si no es necesario paralelizar las consultas individuales?

Respuesta: La transferencia es relativamente fácil para una máquina con varios procesadores con memoriacompartida.Las bases de datos diseñadas para las máquinas monoprocesador ya disponen de multitarea permitiendo quevarios procesos se ejecuten a la vez en el mismo procesador, usando tiempo compartido, mientras que de caraal usuario parece que los procesos se están ejecutando en paralelo. De esta manera, desde un punto de vistalógico, las máquinas paralelas de grano grueso parecen ser idénticas a las máquinas monoprocesador,haciendo que la transferencia sea relativamente fácil.

Transferir una base de datos a un disco compartido o a una arquitectura de varios procesadores sincompartimiento, es un poco más duro.

18.2 Las arquitecturas servidoras de transacciones son populares entre las bases de datos relacionalescliente-servidor, donde las transacciones son cortas. Por el contrario, las arquitecturas servidoras de datos sonpopulares entre los sistemas cliente-servidor de bases de datos orientadas a objetos, donde las transaccionesson relativamente largas. Dense dos razones por las que los servidores de datos puedan ser populares entre lasbases de datos orientadas a objetos y no lo sean entre las bases de datos relacionales.

Respuesta: Los servidores de datos son buenos si la transferencia de datos es pequeña respecto al cálculo, elcual es a menudo el caso en aplicaciones de bases de datos orientadas a objetos, tales como el diseño asistidopor computadora. En contraste, en las típicas aplicaciones de bases de datos relacionales como elprocesamiento de transacciones, una transacción realiza pequeños cálculos pero puede acceder a variaspáginas, lo cual implicará la transferencia de una gran cantidad de datos, con poco beneficio en unaarquitectura servidora de datos. Otra razón es que estructuras como los índices son muy usadas en las bases dedatos relacionales y llegan a convertirse en elementos de conflicto en una arquitectura servidora de datos,requiriendo frecuentes transferencias de datos. En las típicas aplicaciones de hoy en día de bases de datosorientadas a objetos, tales como el diseño asistido por computadora, no hay esos puntos de conflictofrecuente.

18.3 En lugar de almacenar estructuras compartidas en memoria compartida, una arquitectura alternativasería almacenarlas en la memoria local de un proceso especial y acceder a los datos compartidos mediante lacomunicación entre procesos con el proceso. ¿Cuáles serían los inconvenientes de una arquitectura así?

Respuesta: Los inconvenientes serían que, para adquirir bloqueos, se solicitarían dos mensajes entreprocesos, uno para la solicitud y otro para confirmar la concesión. La comunicación entre procesos es muchomás costosa que los accesos a memoria, por lo que el coste de bloqueos se incrementaría. El proceso dealmacenar las estructuras compartidas podría también convertirse en un cuello de botella.

El beneficio de esta alternativa es que la tabla de bloqueos está mejor protegida de actualizacioneserróneas, dado que sólo un proceso puede acceder a ella.

18.4 La máquina que hace de servidor en los sistemas cliente-servidor típicos es mucho más potente quelos clientes, es decir, su procesador es más rápido, puede tener varios procesadores, tiene más memoria ydiscos de mayor capacidad. En vez de esto, considérese el caso en que los clientes y el servidor tuvieranexactamente la misma potencia. ¿Tendría sentido construir un sistema cliente-servidor en ese caso? ¿Por qué?¿Qué caso se ajustaría mejor a una arquitectura servidora de datos?

Respuesta: Con clientes potentes, todavía cobra sentido tener un sistema cliente servidor, en vez de unsistema completamente centralizado. Si se emplea la arquitectura servidora de datos, los clientes potentespueden descargarse todo el tiempo y trabajar procesando transacciones de cómputo intensivo del servidor,

Page 177: Manual de Apoyo Al Profesor

liberándolo para que realice sólo el trabajo de cumplir los requisitos de lectura-escritura; incluso si se empleael modelo de servidor de transacciones, los clientes todavía se ocupan del trabajo del interface de usuario, elcual es típicamente de cómputo muy intensivo.

Un sistema completamente distribuido podría resultar atractivo en presencia de clientes potentes,pero los sistemas cliente servidor todavía tienen la ventaja de técnicas de recuperación y control deconcurrencia más sencillos de implementar en un solo servidor, en vez de tener estas acciones distribuidas entodas las máquinas.

18.5 Considérese un sistema de bases de datos orientadas a objetos sobre una arquitectura cliente servidor,en la que el servidor actúa como servidor de datos.a. ¿Cuál es el efecto de la velocidad de interconexión entre el cliente y el servidor, en los casos deenvío de páginas y de objetos?b. Si se utiliza envío de páginas, la caché de datos en el cliente puede organizarse como una caché deobjetos o de páginas. La caché de páginas almacena los datos en unidades de páginas, mientras que la cachéde objetos almacena los datos en unidades de objetos. Supóngase que los objetos son más pequeños que unapágina. Descríbase una ventaja de la caché de objetos frente a la de páginas.

Respuesta:a. Se supone que los objetos son más pequeños que una página y caben en ella. Si el enlace deinterconexión es lento es mejor elegir el envío de objetos, pues en el envío de páginas se gastará muchotiempo en enviar objetos que posiblemente nunca se necesitarán. Incluso con una interconexión rápida, lassobrecargas y latencias de las comunicaciones, no el volumen real de datos a enviar, se convierten en uncuello de botella. En este escenario sería preferible el envío de páginas.

b. Dos ventajas de tener una caché de objetos en vez de una caché de páginas, incluso si se emplea elenvío de páginas, son:i. Cuando un cliente se ejecuta fuera del espacio caché, puede reemplazar objetos sin reemplazarpáginas enteras. La reducción de la granularidad del almacenamiento caché podría dar como resultado unmejor ratio de aciertos caché.

ii. Es posible para el servidor pedir a los clientes la devolución de algunos de los bloqueos quealmacenan, pero que no necesitan (liberación de bloqueos). De este modo, existe la posibilidad de mayorconcurrencia. Si se emplea caché de páginas, esto no es posible.

18.6 ¿Qué es la liberación de bloqueos y bajo qué condiciones es necesaria? ¿Por qué no es necesario si launidad de envío de datos es un elemento?

Respuesta: En un sistema cliente servidor con envío de páginas, cuando un cliente solicita un elemento elservidor generalmente concede un bloqueo, no sobre el elemento solicitado, sino sobre la página que locontiene, concediendo de este modo implícitamente bloqueos sobre todos los elementos de la página. Losotros elementos de la página se dice que están preextraídos. Si algún otro cliente posteriormente solicita unode los elementos preextraídos, el servidor puede pedir al propietario del bloqueo de la página que retorne elbloqueo sobre este elemento. Si el dueño del bloqueo de la página no necesita este elemento, desbloquea elbloqueo de la página que contiene al elemento, bloquea sobre todos los elementos a los que está accediendoen realidad y, después, devuelve los bloqueos de los elementos no deseados. El servidor puede entoncesconceder el último bloqueo solicitado.

Si la unidad de datos enviados es un elemento, no hay bloqueos de granularidad gruesa; incluso si seemplea pre extracción, se implementa generalmente mediante la concesión de bloqueos individuales sobrecada uno de los elementos preextraídos. De este modo, cuando el servidor solicita la devolución de unbloqueo, no es necesario desbloquear, el bloqueo requerido sólo se devuelve si el cliente no lo utiliza.

18.7 Suponga que se encuentra a cargo de las operaciones de la base de datos de una empresa cuyotrabajo principal es el de procesar transacciones. Suponga que la empresa crece rápidamente cada año y que el

Page 178: Manual de Apoyo Al Profesor

sistema informático actual se ha quedado pequeño. Cuando escoja una nueva computadora paralela, ¿quéfactor será más importante: la ganancia de velocidad, la ampliabilidad por lotes o la ampliabilidad de lastransacciones? ¿Por qué?

Respuesta: Con el aumento del grado de las operaciones, se espera que aumente el número de transaccionesremitidas por unidad de tiempo. Por otro lado, no sería de esperar que la mayoría de la transaccionesindividuales crecieran más ni que, dada una transacción, se requiriese que se ejecutara más rápidamente ahorade cómo lo que hacía antes. Por lo tanto, la ampliabilidad de las transacciones es la medida mas relevante eneste escenario.

18.8 Supóngase una transacción escrita en C con código SQL incorporado, que emplea el 80% del tiempoen ejecutar el código SQL y el 20% restante en el código C. ¿Qué ganancia de velocidad puede esperarse sisólo se paraleliza el código SQL? Justifíquese la respuesta.

Respuesta: Dado que la parte que no puede ser paralelizada representa el 20% del tiempo de ejecución total,la mejor ganancia de velocidad que se puede esperar ha de ser menor que 5.

18.9 En un sistema de procesamiento de transacciones, ¿cuáles son los factores que trabajan en contra dela ampliabilidad lineal?. ¿Cuál de esos factores es probablemente el más importante en cada una de lassiguientes arquitecturas: memoria compartida, disco compartido y sin compartimiento?

Respuesta: El aumento de los conflictos por los recursos compartidos impide la ampliabilidad lineal con elaumento del paralelismo. En un sistema de memoria compartida, los conflictos por memoria (lo cual implicaconflictos del bus) dará como resultado una caída de la escalabilidad con incremento del paralelismo. En unsistema de disco compartido, hay conflicto por los accesos al disco y al bus, lo cual afecta a la ampliabilidad.En un sistema sin compartimiento, la sobrecarga de las comunicaciones entre procesos serán el principalfactor de impedimento. Dado que no hay memoria compartida, la adquisición de bloqueos y otras actividadesque requieren el paso de mensajes entre procesos, tomarán más tiempo con el incremento de paralelismo.

18.10 Considérese un banco que dispone de un conjunto de sedes, en cada una ejecutándose un sistema debase de datos.Supóngase que la transferencia electrónica de dinero entre ellas es el único modo de interacción de las basesde datos. ¿Pude calificarse como distribuido un sistema así? ¿Por qué?

Respuesta: En un sistema distribuido, todos los sitios generalmente ejecutan el mismo software de gestión debase de datos y comparten un esquema global. Cada sitio aporta un entorno para la ejecución, tanto detransacciones globales iniciadas en sitios remotos, como de transacciones locales. El sistema descrito en lapregunta no tiene estas propiedades y, por lo tanto, no puede calificarse como una base de datos distribuida.

18.11 Considérese una red basada en líneas de acceso telefónico, en la que los sitios se comunicanperiódicamente, por ejemplo, todas las noches. Estas redes suelen tener un servidor y varios clientes. Lossitios que actúan como clientes están conectados sólo con el servidor e intercambian los datos con el resto declientes, almacenándolos en el servidor y recuperando los almacenados por otros clientes en el servidor. ¿Cuáles la ventaja de tal arquitectura frente a una en la que un sitio pueda intercambiar datos con otro medianteacceso telefónico directo?

Respuesta: Con el servidor central, cada sitio no ha de recordar con qué sitio contactar, cuando se solicita undeterminado elemento de datos. El servidor central sólo necesita recordar esto, de tal modo que los elementosde los datos pueden moverse alrededor fácilmente, dependiendo de los sitios a los que acceden los elementosmás frecuentemente. Otras tareas de mantenimiento también están centralizadas en vez de distribuidas,haciendo el sistema más fácil de desarrollar y mantener. Naturalmente, está el inconveniente de un cierretotal, en caso de que el servidor llegue a estar no disponible. Incluso si está ejecutándose, puede convertirse en

Page 179: Manual de Apoyo Al Profesor

un cuello de botella porque cada petición ha de encaminarse través de él.

Page 180: Manual de Apoyo Al Profesor

CAPITULO 19

BASES DE DATOS DISTRIBUÍDAS

Las bases de datos distribuidas, en general, y las bases de datos heterogéneas, en particular, están aumentandode importancia, dado que las organizaciones intentan integrar sus bases de datos a través de fronteras físicas yorganizacionales. La interconexión de estas bases de datos para crear una base de datos distribuida o múltiplees, de hecho, crucial para la competitividad de muchas compañías. Este capítulo reconsidera las cuestionestratadas anteriormente en el texto, tales como el procesamiento de consultas y el control de concurrencias yrecuperaciones, desde el punto de vista de las bases de datos distribuidas.

Este es un capítulo extenso y apropiado sólo para un curso avanzado. Se pueden elegir temassencillos para su inclusión en un curso de introducción. Una buena alternativa incluye almacenamientodistribuido, heterogeneidad y compromiso de dos fases.

Cambios a la tercera edición:Este capítulo ha cambiado significativamente respecto de la edición anterior.

• El énfasis en la transparencia de la edición anterior ha sido abandonado y, en su lugar, el capítulo comienzaconsiderando la diferencia entre bases de datos distribuidas heterogéneas y homogéneas.

• Se han abandonado todos los detalles del compromiso de tres fases, dado que no se usa mucho en lapráctica.

• Se ha dado cobertura a los modelos alternativos del procesamiento de transacciones en el Apartado 19.4.3,con énfasis en el enfoque basado en los mensajes persistentes para las transacciones distribuidas.

• La duplicidad con niveles débiles de consistencia, la cuál es ampliamente usada en la práctica, se cubreahora en el Apartado 19.5.3.

• Se han eliminado los algoritmos distribuidos para la detección de interbloqueos, dado que son demasiadocomplicados y caros para ser prácticos.

• Se ha introducido un tratamiento detallado de la gestión de fallos, para la alta disponibilidad aportada en lasbases de datos distribuidas (Apartado 19.6).

• Las bases de datos heterogéneas se tratan ahora con mayor detalle en el Apartado 19.8, mientras que losdetalles de los niveles débiles de secuencialidad en las bases de datos múltiples se han trasladado al capítulo24.

• Se ha introducido en esta edición (Apartado 19.9) el tratamiento de sistemas de directorio, con énfasis enLDAP.

Page 181: Manual de Apoyo Al Profesor

Ejercicios

19.1 Discútanse las ventajas relativas de las bases de datos centralizadas y de las distribuidas.

Respuesta:• Un sistema de bases de datos distribuido permite al usuario un acceso transparente y adecuado a los datosque no están almacenados en el sitio, mientras permite a cada sitio el control sobre sus propios datos locales.Una base de datos distribuida puede ser más segura que un sistema centralizado porque, si un sitio falla, labase de datos puede seguir funcionando pero, si el sistema centralizado falla, la base de datos no puedecontinuar por más tiempo con su operación normal. Además, una base de datos distribuida permite laejecución paralela de consultas y posibilita la división de una consulta en varias partes, para incrementar laproductividad.

• Un sistema centralizado en más fácil de diseñar e implementar. Un sistema centralizado es más barato deoperar porque no se han de enviar mensajes.

19.2 Explíquense las diferencias entre transparencia de la fragmentación, transparencia de las réplicas ytransparencia de la ubicación.

Respuesta:a. Con transparencia de la fragmentación, el usuario del sistema no es consciente de ningunafragmentación que el sistema haya implementado. Un usuario puede formular consultas contra relacionesglobales y el sistema realizará la transformación necesaria para generar el resultado correcto.

b. Con transparencia de las réplicas el usuario no es consciente de ninguna replicación de datos. Elsistema debe impedir operaciones inconsistentes sobre los datos. Esto requiere algoritmos de control deconcurrencia más complejos.

c. Transparencia de la ubicación significa que el usuario no es consciente de donde están almacenadoslos datos.El sistema debe encaminar los datos solicitados hacia los sitios apropiados.

19.3 Indíquese lo que diferencia a una base de datos distribuida diseñada para una red de área local, deotra diseñada para una red de área amplia.

Respuesta: La transferencia de datos sobre una red de área local (LAN) es mucho más rápida sobre una redde área ancha (WAN). Así, la replicación y la fragmentación no aumentarán la productividad y la velocidadsobre una LAN, tanto como en una WAN. Pero incluso en una LAN, la replicación tiene su utilidadincrementando la fiabilidad y disponibilidad.

19.4 Indíquese en qué momento resulta útil tener réplicas de los datos o tenerlos fragmentados.Explíquese la respuesta.

Respuesta: La replicación es útil cuando hay numerosas transacciones de sólo lectura en diferentes sitios,esperando acceder a los mismos datos. Todas ellas se pueden ejecutar rápidamente en paralelo, accediendo adatos locales. Pero las actualizaciones se hacen difíciles con la replicación.La fragmentación es útil si las transacciones sobre diferentes sitios tienden a acceder a partes diferentes de labase de datos.

Page 182: Manual de Apoyo Al Profesor

19.5 Explíquense los conceptos de transparencia y de autonomía. Indíquese el motivo de que estosconceptos sean deseables desde el punto de vista de los factores humanos.

Respuesta: La autonomía es el grado de control que tiene un sitio concreto sobre la base de datos local. Esimportante porque los usuarios del sitio quieren accesos rápidos y correctos a los elementos de datos locales.Esto es especialmente cierto cuando se consideran los datos locales a los que más frecuentemente se accederáen una base de datos. La transparencia oculta la naturaleza distribuida de la base de datos. Esto es importanteporque no se debería exigir a los usuarios conocer nada sobre la localización, replicación, fragmentación uotros aspectos de la implementación de la base de datos.

19.6 Para crear un sistema distribuido con elevada disponibilidad hay que conocer los tipos de fallos quepueden producirse.a. Indíquense los tipos de fallos posibles en los sistemas distribuidos.b. Indíquense los elementos de la lista de la pregunta a, que también sean aplicables a un sistemacentralizado.

Respuesta:a. Los tipos de fallos que pueden ocurrir en un sistema distribuido incluyen

i. Fallo de la computadora (fallo de un sitio).ii. Fallo del disco.iii Fallo de comunicaciones.

b. Los dos primeros tipos de fallos también pueden suceder en sistemas centralizados.

19.7 Considérese un fallo que se produce durante la ejecución de C2F para una transacción. Para cadafallo posible de los indicados en el Ejercicio 19.6.a, explíquese el modo en que C2F asegura la atomicidad dela transacción a pesar del fallo.

Respuesta: Una prueba de que C2F garantiza compromisos/abortos atómicos, a pesar de fallos en sitios yenlaces, es lo que sigue. La idea principal es que, después que todos los sitios contesten con un mensaje <Tpreparada>, sólo el coordinador de una transacción puede tomar una decisión de compromiso o aborto.Cualquier compromiso o aborto posterior por un sitio, sólo puede tener lugar después que constate la decisióndel coordinador, bien directamente desde el coordinador o indirectamente desde otro sitio. Supóngase que seenumeran los casos para el aborto de un sitio y después para el compromiso.a. Un sitio puede abortar una transacción T (grabando un registro del registro histórico <T abortada>)sólo bajo las siguientes circunstancias:i. No se ha grabado aún un registro del registro histórico <T preparada>. En este caso el coordinadorno podría tenerlo y no recibirá un mensaje <T preparada> o <T comprometida> desde este sitio. Por lotanto, sólo el coordinador puede tomar una decisión de abortar.

ii. Se ha grabado un registro del registro histórico <T preparada>, pero al consultar descubre quealgún otro sitio tiene un registro del registro histórico <T abortada>. En este caso lo correcto es abortar,porque ese otro sitio habría constatado la decisión del coordinador (directa o indirectamente) antes de abortar.

iii Es el propio coordinador. En este caso ningún sitio habría comprometido, o comprometerá en elfuturo, porque las decisiones de comprometer sólo las puede realizar el coordinador.

b. Un sitio puede comprometer una transacción T (grabando un registro del registro histórico <Tcomprometida>) sólo bajo las siguientes circunstancias:

i. Se ha grabado un registro del registro histórico <T preparada> y al consultar descubre que algúnotro sitio tiene un registro del registro histórico <T comprometida>. En este caso lo correcto escomprometer, porque ese otro sitio habría constatado la decisión del coordinador (directa o indirectamente)

Page 183: Manual de Apoyo Al Profesor

antes de comprometer.

ii. Es el propio coordinador. En este caso ningún otro sitio participante puede abortar o habríaabortado, porque las decisiones de hacerlo sólo las puede realizar el coordinador.

19.8 Considérese un sistema distribuido con dos sitios, A y B. Indíquese si el sitio A puede distinguirentre:• B deja de funcionar.• El enlace entre A y B deja de funcionar.• B está extremadamente sobrecargado y su tiempo de respuesta es cien veces el habitual.

Indíquense las implicaciones de la respuesta para la recuperación de los sistemas distribuidos.

Respuesta: El sitio A no puede distinguir entre los tres casos hasta que se reanude la comunicación con elsitio B. La acción que realice mientras B esté inaccesible debe ser correcta, independientemente de cual deestas situaciones haya ocurrido realmente, y debe ser tal que B pueda reintegrarse consistentemente en elsistema distribuido, una vez que se restaure la comunicación.

19.9 El esquema de mensajería persistente descrito en este capítulo, depende de las marcas temporalescombinadas con el desecho de los mensajes recibidos, si son demasiado antiguos.Propóngase un esquema alternativo basado en los números de secuencia, en lugar de las marcas temporales.

Respuesta: Se puede tener un esquema basado en números secuenciales, similar al basado en marcastemporales. Se marca cada mensaje con un número secuencial que es único para el par (sitio emisor, sitioreceptor). El número se incrementa en 1 por cada nuevo mensaje enviado desde el sitio emisor al receptor.

El sitio receptor lo almacena y reconoce que ha recibido el mensaje, sólo si también ha recibidotodos los mensajes de números inferiores; el mensaje se almacena en la relación mensajes-recibidos.

El sitio emisor retransmite un mensaje hasta que recibe un acuse de recibo del sitio receptor,conteniendo el número de secuencia del mensaje transmitido, o uno superior. Una vez que se recibe el acusede recibo, se puede borra el mensaje de la cola de su cola de envío.

El sitio de recepción elimina todos los mensajes que recibe con un número de secuencia inferior aldel menor mensaje almacenado, desde el sitio de envío. El sitio de recepción elimina todos los mensajes de larelación mensajes-recibidos, excepto los de número más recientes de cada sitio emisor (los mensajes sólo sepueden eliminar después de ser procesados localmente).

Nótese que esta técnica requiere una sobrecarga fija (y pequeña) en el sitio receptor, por cada sitioemisor, independientemente del número de mensajes recibidos. En cambio, la técnica de marcas temporalesrequiere un espacio extra por cada mensaje. La técnica de marcas temporales tendría una sobrecarga dealmacenamiento menor, si el número de mensajes recibidos dentro del intervalo de interrupción fuera pequeñocomparado con el número de sitios mientras que, de lo contrario, la técnica de números secuenciales tendríauna sobrecarga inferior.

19.10 Se da un ejemplo en que el enfoque de leer uno, escribir todos los disponibles conduzca a un estadoerróneo.

Respuesta: Considérese el saldo de una cuenta, replicado en N sitios. Supóngase un saldo actual de 100€consistente en todos los sitios. Sean dos transacciones T1 y T2, cada una depositando 10€ en la cuenta. Así, elsaldo sería de 120€ después que ambas transacciones se ejecutaran. Supongamos que las transacciones seejecutan secuencialmente: T1 primero y después T2 . Supóngase que uno de los sitios, por ejemplo s, no estédisponible cuando se ejecute T1 y que la transacción T2 lea el saldo desde el sitio s. Se puede ver que el saldoen el sitio principal sería, al final, de 110€.

19.11 Si se aplica una versión distribuida del protocolo de granularidad múltiple del Capítulo 16 a una base

Page 184: Manual de Apoyo Al Profesor

de datos distribuida, el sitio responsable del DAG puede convertirse en un cuello de botella. Supóngase que semodifica ese protocolo de la manera siguiente:• Sólo se permiten en la raíz bloqueos en modo tentativo.• A todas las transacciones se les conceden, de manera automática, todos los bloqueos en modo tentativoposibles.

Muéstrese que estas modificaciones alivian el problema sin permitir planificaciones no secuenciables.

Respuesta: La secuencialidad está asegurada dado que no se han cambiado las reglas del protocolo degranularidad múltiple. Dado que las transacciones acuerdan automáticamente todos los bloques tentativossobre el nodo raíz y que no se dan otros tipos de bloqueos en él, no hay necesidad de enviar ninguna peticiónde bloqueo a la raíz. De este modo se libera el cuello de botella.

19.12 Explíquese la diferencia entre la réplica de datos en los sistemas distribuidos y el mantenimiento desitios remotos de respaldo.

Respuesta: En los sistemas de respaldo remotos todas las transacciones se realizan en el sitio principal y losdatos se replican sobre el sitio remoto de respaldo. El sitio remoto de respaldo se mantiene sincronizado conlas actualizaciones sobre el sitio principal mediante el envío de todos los registros del registro histórico.Siempre que falla el sitio principal, el sitio de respaldo remoto asume los procesos. Los sistemas distribuidosofrecen mayor disponibilidad teniendo múltiples copias de los datos en diferentes sitios, mientras que lossistemas remotos de respaldo ofrecen menor disponibilidad a un coste inferior y sobrecargas de ejecución.

En un sistema distribuido, el código de la transacción se ejecuta en todos los sitios, mientras que enun sistema remoto de respaldo sólo se ejecuta en el sitio principal. La transacciones de los sistemasdistribuidos siguen el compromiso de dos fases para tener los datos en estado consistente, mientras que unsistema remoto de respaldo no sigue el compromiso de dos fases y evita las sobrecargas relacionadas.

19.13 Se da un ejemplo en el que la réplica perezosa pueda conducir a un estado inconsistente de la base dedatos, aunque las actualizaciones obtengan un bloqueo exclusivo sobre la copia principal (maestra).

Respuesta: Considérese el saldo de una cuenta, replicado en N sitios. Supóngase un saldo actual de 100€consistente en todos los sitios. Sean dos transacciones T1 y T2, cada una depositando 10€ en la cuenta. Así, elsaldo sería de 120€ después que ambas transacciones se ejecutaran. Supongamos que las transacciones seejecutan secuencialmente: T1 primero y después T2 . Supóngase que la copia del saldo en uno de los sitios, porejemplo s, no sea consistente – debido a una estrategia de réplica perezosa – con la copia principal después deque se ejecute la transacción T1 y que la transacción T2 lea esta copia del saldo. Se puede ver que el saldo enel sitio principal sería, al final, de 110€.

19.14 Estúdiense y resúmanse las facilidades que el sistema de bases de datos que se está utilizando ofrece,para tratar los estados inconsistentes que pueden alcanzarse con la propagación perezosa de lasactualizaciones.

Respuesta: PENDIENTE.

19.15 Discútanse las ventajas e inconvenientes de los dos métodos presentados en el Apartado 19.5.2, parala generación de marcas temporales únicas globalmente.

Respuesta: El enfoque centralizado tiene el problema de un posible cuello de botella en el sitio principal y elde elegir un nuevo sitio central si dejara de funcionar. El enfoque centralizado tiene el problema de que debenintercambiarse muchos mensajes para mantener el sistema justo, o un sitio puede situarse por delante de todoslos otros y dominar la base de datos.

Page 185: Manual de Apoyo Al Profesor

19.16 Considérese el siguiente algoritmo de detección de interbloqueo. Cuando la transacción Ti, en elsitio S1, solicita un recurso a Tj, en el sitio S3, se envía un mensaje de solicitud con la marca temporal n. Seinserta el arco (Ti, Tj, n) en el grafo local de espera de S1. El arco (Ti, Tj, n) sólo se inserta en el grafo local deespera de S3 , si Tj ha recibido el mensaje de solicitud y no se puede conceder de manera inmediata el recursosolicitado. La solicitud de Ti a Tj en el mismo sitio se trata de la manera habitual; no se asocia ninguna marcatemporal con el arco (Ti, Tj). El coordinador central invoca el algoritmo de detección enviando el mensaje deinicio a cada sitio del sistema.

Al recibir este mensaje, cada sitio envía al coordinador su grafo local de espera.Obsérvese que ese grafo contiene toda la información local que el sitio tiene sobre el estado del grafo real. Elgrafo de espera refleja un estado instantáneo del sitio, pero no está sincronizado con respecto a ningún otrositio. Cuando el controlador ha recibido una contestación de cada sitio crea un grafo de la manera siguiente:• El grafo contiene un vértice para cada transacción del sistema.• El grafo tiene un arco (Ti, Tj) si y sólo si

& Hay un arco (Ti, Tj) en uno de los grafos de espera.& Aparece un arco (Ti, Tj, n) (para algún n) en más de un grafo de espera.

Pruébese que, si hay un ciclo en el grafo creado, el sistema se halla en estado de interbloqueo y que, si no hayningún ciclo en el grafo creado, el sistema no se hallaba en estado de interbloqueo cuando comenzó laejecución del algoritmo.

Respuesta: Supóngase un ciclo Ti � Tj � · · · � Tm � Ti que existe en el grafo construido por elcontroaldor. Los arcos del grafo serán locales de la forma (Tk, Tl) o distribuidos de la forma (Tk, Tl, n). Cadaarco local (Tk, Tl) implica indudablemente que Tk está esperando a Tl. Dado que un arco distribuido (Tk, Tl, n)se inserta en el grafo sólo si la petición de Tk ha alcanzado Tl y Tl no puede liberar el bloqueoinmediatamente, Tk está, efectivamente, esperando a Tl . Por lo tanto, cada arco del ciclo representa, de hecho,una transacción esperando a otra. Para una prueba detallada de que esto implica un interbloqueo, consúlteseStuart et al [1984].

Ahora se va a probar la implicación opuesta. Tan pronto como se descubre que Tk está esperando a Tl:a. se añade un arco local (Tk, Tl) si ambas están en el mismo sitio.b. El arco (Tk, Tl, n) se añade en ambos sitios si Tk y Tl están en sitios diferentes.

Por lo tanto, si el algoritmo fuera capaz de agrupar en el mismo instante todos los grafos locales de espera, sedescubriría definitivamente un ciclo en el grafo construido, en caso de que haya una espera circular en eseinstante. Si hay una espera circular en el instante en que el algoritmo comienza la ejecución, ninguno de losarcos que participan en ese ciclo pueden desaparecer hasta que termine el algoritmo. Por lo tanto, incluso si elalgoritmo no puede agrupar todos los grafos locales al mismo tiempo, se detectará igualmente a cualquiera delos ciclos que existían justo antes de que se iniciase.

19.17 Considérese una relación que está fragmentada horizontalmente por número-planta:

empleado (nombre, dirección, sueldo, número-planta)

Supóngase que cada fragmento tiene dos réplicas: una almacenada en el sitio de Madrid y otra almacenadalocalmente en el sitio de la planta. Descríbase una buena estrategia de procesamiento de las consultassiguientes formuladas en el sitio de Lima.a. Hallar todos los empleados de la planta de Managua.b. Hallar el sueldo promedio de todos los empleados.c. Hallar el empleado mejor pagado de cada uno de los sitios siguientes: Buenos Aires, Rosario,Córdoba, Bahía Blanca.d. Hallar el empleado peor pagado de la compañía.

Page 186: Manual de Apoyo Al Profesor

Respuesta:a. i. Enviar la consulta �nombre(empleado) a la planta de Managua.

ii. Permitir que Managua devuelva la respuesta

b i. Calcular el promedio en Madrid.ii. Enviar la respuesta a Lima.

c. i. Enviar la consulta para encontrar el empleado mejor pagado a Buenos Aires, Rosario,Córdoba y Bahía Blanca.

ii. Calcular las consultas en estos sitios.iii Devolver las respuestas a Lima.

d. i. Enviar la consulta, para encontrar el empleado peor pagado, a Madrid.ii. Calcular la consulta en Madrid.iii Enviar la respuesta a Lima.

19.18 Considérense las relaciones

empleado (nombre, dirección, sueldo, número-planta)máquina (número-máquina, tipo, número-planta)

Supóngase que la relación empleado está fragmentada horizontalmente por número-planta y que cadafragmento se almacena localmente en el sitio de su planta correspondiente. Supóngase que la relaciónmáquina se almacena entera en el sitio de Sucre. Descríbase una buena estrategia para el procesamiento decada una de las consultas siguientes.a. Hallar todos los empleados de la planta que contiene el número de máquina 1130.b. Hallar todos los empleados de las plantas que contienen máquinas cuyo tipo sea “trituradora”.c. Hallar todas las máquinas de la planta de Almadén.d. Hallar empleado |x| máquina.

Respuesta:a. i. Realizar �número-planta (�número-máquina = 1130 (máquina)) en Sucre.

ii. Enviar la consulta �nombre (empleado) a todos los sitios que están en el resultado de laconsulta previa.

iii Estos sitios calculan las respuestas.iv Unir las respuestas en el sitio destino.

b Esta estrategia es la misma que la 0.a, salvo que el primer paso debería realizar �número-planta (�tipo =“trituradora” (máquina)) en Sucre.

c. i. Realizar �número-planta = x (máquina) en Sucre, donde x es el número de planta para Almadén.ii. Enviar las respuestas al sitio de destino.

d. Estrategia 1:i. Agrupar máquina en Sucre por número de planta.ii. Enviar los grupos a los sitios con el correspondiente número de planta.iii Realizar una reunión local entre los datos locales y los recibidos.iv Unir los resultados en el sitio destino.

Estrategia 2: Enviar la relación máquina a Sucre y todos los fragmentos de la relación empleado alsitio de destino. Entonces, realizar la reunión en el sitio de destino.

Hay paralelismo en el cálculo de la reunión, de acuerdo con la primera estrategia, pero no con la segunda. Noobstante, en una WAN, la cantidad de datos a enviar es el principal factor de coste. Se espera que cada plantatendrá más de una máquina, por lo que el resultado de la reunión local en cada sitio será un producto cruzadode las tuplas de los empleados y las máquinas de la planta. El tamaño de este producto cruzado es mayor queel del fragmento de empleado en el sitio. Como consecuencia de la segunda estrategia, llevará a una

Page 187: Manual de Apoyo Al Profesor

disminución del envío de datos y será más eficiente.

19.19 Para cada una de las estrategias del Ejercicio 19.18, indíquese el modo en que la elección de laestrategia depende:a. Del sitio en el que se formuló la consultab. Del sitio en el que se desea obtener el resultado

Respuesta:a. Suponiendo que el coste de enviar la consulta es mínimo, el sitio al que la consulta sea remitida noafecta a la estrategia para evaluar la consulta.

b. Por la primera consulta, se averigua que los números de planta donde está presente el número demáquina 1130, se corresponden con Sucre. Entonces, las tuplas de los empleados en todas estas plantas seenvían al sitio de destino. Se puede ver que esta estrategia es más o menos independiente del sitio de destino.Lo mismo se puede decir de la segunda consulta. Para la tercera consulta, la selección se realiza en Sucre ylos resultados se envían al sitio de destino. Esta estrategia es, obviamente, independiente del sitio de destino.

Para la cuarta consulta se tienen dos estrategias. La primera realiza reuniones locales en todos lossitios de las plantas y sus resultados se unen en el sitio de destino. En la segunda estrategia, la relaciónmáquina en Sucre, así como todos los fragmentos de la relación empleado, se envían primero al destino,donde se realiza la operación reunión. No hay una forma evidente de optimizar estas dos estrategias según elsitio de destino. En la respuesta al Ejercicio 19.18 se vio la razón por la que la segunda estrategia se esperabaque, como resultado, diera menos envíos de datos que la primera. Esa razón es independiente del sitio dedestino y por lo tanto se puede, en general, preferir la estrategia dos a la uno, sin importar el sitio de destino.

19.20 Calcúlese r |x s para las relaciones de la Figura 19.1.

Respuesta: El resultado es el siguiente:

r|xs A B C1 2 35 3 2

19.21 ¿Es necesariamente ri|xrjigual a rj|xri? ¿En qué circunstancias es cierto que ri|xrj=rj|xri?

Respuesta: En general, ri|xrj�rj|xri Esto se puede ver fácilmente desde

Page 188: Manual de Apoyo Al Profesor

Figura 19.1 Relaciones para el Ejercicio 19.20.

el Ejercicio 19.20, en el cual r|xs�s|xrr|xs

s|xr C D E3 4 53 6 82 3 2

Por definición, ri |x rj = �Ri (ri |x| 1 rj) y rj |x ri= �Rj (ri |x| 1 rj ), donde Ri y Rj son los esquemas de ri y rj

respectivamente. Para que �Ri (ri |x| 1 rj) sea siempre igual a �Rj (ri |x| 1 rj ), los esquemas Ri y Rj deben ser elmismo.

19.22 Dado que la funcionalidad LDAP puede implementarse sobre un sistema de bases de datos, indíquesela necesidad de la norma LDAP.

Respuesta: Las razones son:

Los protocolos de acceso a directorios son protocolos simplificados que atienden a un tipo limitadode accesos a datos.

Los sistemas de directorio ofrecen un mecanismo sencillo para nombrar a los objetos de manerajerárquica, que pueden utilizarse en un sistema distribuido de directorio para especificar la información que sealmacena en cada servidor de directorio. El sistema de directorios puede configurarse para que envíe demanera automática a un sitio las consultas formuladas en el otro, sin intervención del usuario.

19.23 Descríbase el modo en que se puede utilizar LDAP para ofrecer varias vistas jerárquicas de los datossin replicar los datos del nivel básico.

Respuesta: Esto se puede hacer empleando referencias. Por ejemplo, una organización puede mantener suinformación sobre departamentos geográficamente (es decir, todos los departamentos en un sitio de laorganización) o por estructuras (es decir, información sobre un departamento desde todos los sitios). Estas dosjerarquías se pueden mantener definiendo dos esquemas diferentes, con información de los departamentos enun sitio como la información de base. Las entradas en las dos jerarquías se referirán a la entrada de lainformación base, empleando referencias.

Page 189: Manual de Apoyo Al Profesor

CAPITULO 20

BASES DE DATOS PARALELAS

Este capítulo está indicado para un curso avanzado, pero también puede emplearse en proyectos de estudioindependientes por estudiantes de primer curso. El capítulo trata diversos aspectos del diseño de sistemas debases de datos paralelas – particionamiento de datos, paralelización de operaciones relacionales individuales yparalelización de expresiones relacionales. El capítulo también trata brevemente algunos aspectos de sistemas,tales como la coherencia caché y la resistencia a fallos.

Las aplicaciones más importantes de las bases de datos paralelas hoy son los almacenamientos y losanálisis de grandes cantidades de datos. Por eso, los particionamientos de datos y los procesos de consultasparalelas se tratan con significativo detalle. La optimización de las consultas, por la misma razón, también esimportante. Sin embargo, la optimización de consultas paralelas todavía no es un problema completamenteresuelto; la búsqueda exhaustiva, empleada por la optimización de consultas secuenciales, es demasiado caraen un sistema paralelo, forzando el empleo de heurísticos. Así, la optimización de consultas paralelas está enun área de investigación continua.

La descripción de algoritmos de procesamiento de consultas paralelas, está basada en el modelo sincompartimiento. Se puede pedir a los estudiantes que estudien como mejorar los algoritmos, si en su lugar seemplean máquinas de memoria compartida.

Cambios a la tercera edición:No hay cambios de importancia a la edición anterior.

Page 190: Manual de Apoyo Al Profesor

Ejercicios

20.1 Para cada una de las tres técnicas de división, a saber, por turno rotatorio, por asociación y en rangos,apórtese un ejemplo de una consulta para la que esa técnica de división proporcione la respuesta más rápida.

Respuesta:División por turno rotatorio:

Cuando las relaciones son grandes y las consultas leen relaciones enteras, el turno rotatorio da unabuena aceleración y un tiempo de respuesta rápido.

División por asociación:Para consultas concretas aporta la respuesta más rápida, dado que cada disco puede procesar una

consulta simultáneamente. Si la división por asociación es uniforme, incluso las exploraciones secuenciales derelaciones completas se pueden realizar eficientemente.

División en rangos:Para las consultas de rangos, que acceden a pocas tuplas, aporta una respuesta rápida.

20.2 Al llevar a cabo una selección de rango en un atributo dividido en rangos, es posible que sólo hagafalta acceder a un disco. Descríbanse las ventajas e inconvenientes de esta propiedad.

Respuesta: Si hay pocas tuplas en el rango consultado, cada consulta se puede procesar rápidamente en unsólo disco. Esto permite una ejecución paralela de las consultas, con lo que se reduce la sobrecarga de iniciarconsultas en varios discos.

Por otro lado, si hay muchas tuplas en el rango consultado, a cada consulta le lleva mucho tiempo laejecución, a la vez que no hay paralelismo en su ejecución. Además, algunos discos se pueden convertir enpuntos calientes, incrementando aún más el tiempo de respuesta.

La división en rangos híbridos, en la que pequeños rangos (de unos pocos bloques cada uno) sedividen en forma de turnos rotatorios, aporta las ventajas de una división en rangos sin sus inconvenientes.

20.3 Indíquense los factores que puedan dar lugar a un sesgo, cuando se divide una relación basándose enuno de sus atributos utilizando:a. División por asociaciónb. División en rangos

En cada uno de los casos anteriores, indíquese lo que se puede hacer para reducir el sesgo.

Respuesta:a. División por asociación:

Demasiados registros con el mismo valor de los atributos de la asociación, o una función deasociación elegida pobremente sin las propiedades de aleatoriedad y uniformidad, pueden terminar en unadivisión sesgada. Para mejorar esta situación, se debería experimentar con mejores funciones de asociaciónpara esa relación.

b. División en rangos:Una distribución no uniforme en los valores de los atributos de la división (incluyendo valores

duplicados en los atributos de la división), que no se ha tenido en cuenta por un mal vector de división, es laprincipal razón de las divisiones sesgadas. Ordenando la relación en función de los atributos de división ydividiéndola en n rangos con igual número de tuplas cada uno, se tendrá un buen vector de división con unsesgo muy bajo.

20.4 Indíquese la forma de paralelismo (entre consultas, entre operaciones o en operaciones) que sea

Page 191: Manual de Apoyo Al Profesor

probablemente más importante para cada una de las tareas siguientes.a. Incrementar la productividad de un sistema con muchas consultas pequeñasb. Incrementar la productividad de un sistema con unas pocas consultas grandes, cuando el número dediscos y procesadores es grande.

Respuesta:a. Cuando hay muchas consultas pequeñas, el paralelismo entre consultas aporta una buenaproductividad. Paralelizar cada una de estas pequeñas consultas incrementaría la sobrecarga inicial, sin unareducción significativa del tiempo de respuesta.

b. Con unas cuantas consultas grandes el paralelismo entre consultas es esencial para alcanzar tiemposde respuesta rápidos. Dado que hay gran número de procesadores y discos, sólo el paralelismo en operacionespuede sacar partido del hardware paralelo para consultas que típicamente tienen pocas operaciones, pero quenecesitan procesar cada una un gran número de tuplas.

20.5 Con el paralelismo encauzado, suele resultar adecuado llevar a cabo varias operaciones de un cauceen un mismo procesador, aunque haya disponibles muchos procesadores.a. Explíquese el motivo.b. ¿Serían válidos los argumentos anteriores si la máquina utilizara una arquitectura de memoriacompartida? Explíquense los motivos.c. ¿Serían válidos los argumentos anteriores con paralelismo independiente? (Es decir, ¿hay casos enque, incluso si las operaciones no se encauzan y hay muchos procesadores disponibles, sigue siendoconveniente llevar a cabo varias operaciones en el mismo procesador?)

Respuesta:a. La ganancia de velocidad que se obtiene paralelizando las operaciones se compensaría con lasobrecarga de la transferencia de datos, dado que cada tupla producida por un operador habría de transferirsea su consumidor, que se está ejecutando en un procesador diferente.

b. En una arquitectura de memoria compartida la transferencia de tuplas es muy eficiente. Por lo tanto,el argumento anterior no se mantiene mucho.

c. Incluso si dos operaciones son independientes, puede ser que ambas suministren sus resultados a untercer operador en común. En ese caso, ejecutar las tres en el mismo procesador puede ser mejor que transferirtuplas entre los procesadores.

20.6 Se da un ejemplo de una reunión , que no sea una equirreunión simple, para la que pueda utilizarseparalelismo de particiones. ¿Qué atributos deberían utilizarse para la división?

Respuesta: Se dan dos ejemplos de tales reuniones.a. r |x| (r.A = s.B) � (r.A < s.C) s

Aquí se tiene condiciones extra que se pueden verificar después de la reunión.Por lo tanto, el paralelismo de particiones es útil.

b. r |x| (r.A �(?s.B/20?)20) ��(r.A<((?s.B/20?)+1)20) sEsta es una consulta en la que una tupla r y una tupla s se reúnen entre sí, en el caso de que caigan

dentro del mismo rango de valores. Por lo tanto, el paralelismo de particiones aplica naturalmente a esteescenario.

Para ambas consultas, r debería estar particionada sobre el atributo A y s sobre el atributo B.

20.7 Considérese el procesamiento de reuniones utilizando fragmentos y réplicas simétricos con divisiónen rangos. ¿Cómo se puede optimizar la evaluación si la condición de reunión es de la forma | r.A - s.B| � k,

Page 192: Manual de Apoyo Al Profesor

donde k es una constante pequeña. Aquí, | x | denota el valor absoluto de x. Una reunión con una condición dereunión así, se denomina reunión de banda.

Respuesta: La relación r está dividida en n divisiones, r0, r1, . . . , rn-1 y s está también dividida en ndivisiones, s0, s1, . . . , sn-1. Las divisiones están replicadas y asignadas a los procesadores como se muestra enla figura siguiente.

Cada fragmento está replicado sólo en 3 procesadores, a diferencia del caso general, donde estáreplicado sobre n procesadores. El número de procesadores requeridos ahora es aproximadamente 3n, en vezde n2 del caso general. Por lo tanto, dado el mismo número de procesadores, se pueden dividir las relacionesen más fragmentos con esta optimización, es decir, haciendo más rápida la reunión local.

20.8 Descríbase una buena manera de paralelizar lo siguiente.a. la operación diferenciab. la agregación utilizando la operación countc. la agregación utilizando la operación count distinctd. la agregación utilizando la operación avge. la reunión exterior por la izquierda, si la condición de reunión sólo implica igualdadf. la reunión exterior por la izquierda, si la condición de reunión implica comparaciones distintas de laigualdadg. la reunión exterior completa, si la condición de reunión implica comparaciones distintas de laigualdad

Respuesta:a. Se puede paralelizar la operación diferencia dividiendo las relaciones en todos los atributos ycalculando las diferencias localmente, en cada procesador.Como en la agregación, el coste de transferir las tuplas durante la división se puede reducir calculando lasdiferencias parcialmente en cada procesador, antes de la división.

b. Supóngase la referencia al atributo “group-by” como atributo A y al atributo sobre el que opera lafunción agregación, como atributo B. count se realiza como sum (mencionada en el libro) salvo que, en vezde la suma, lo que se transfiere al procesador de destino correcto es un recuento del número de valores delatributo B, por cada valor del atributo A. Después de la división, los recuentos parciales desde todos losprocesadores se suman localmente en cada procesador, para obtener el resultado final.

Page 193: Manual de Apoyo Al Profesor

c. Por esto, los recuentos parciales no se pueden sumar localmente antes de la división. En cambio,cada procesador transfiere todos los valores únicos de B, por cada valor de A, al procesador de destinocorrecto. Después de la división, cada procesador cuenta localmente el número de tuplas únicas por cada valorde A y, a continuación, obtiene el resultado final.

d. De nuevo, esto se puede implementar como sum salvo que, por cada valor de A, un sum de losvalores de B, así como un count del número de tuplas del grupo, se transfiere durante la división.Seguidamente cada procesador produce su resultado local, dividiendo la suma total por el número total detuplas, para cada valor de A asignado a su división.

e. Esto se puede realizar como una reunión natural dividida. Después de la división, cada procesadorcalcula localmente la reunión externa por la izquierda, empleando cualquiera de la estrategias del Capítulo 13.

f. La reunión externa por la izquierda se puede calcular empleando una ampliación de la técnicaFragmentos y Réplicas, para calcular no equirreuniones. Considérese r ]x| s. Las relaciones están divididas y r|x| s se calcula en cada sitio. También se agrupan las tuplas de r que no se correspondieron con ninguna tuplade s; Supóngase que se denota como di al conjunto de estas tuplas colgantes en el sitio i. Después de realizarel paso anterior en cada sitio, por cada fragmento de r, se toma la intersección de los di’s desde cadaprocesador en el que estaba replicado el fragmento de r. Las intersecciones dan el conjunto real de tuplascolgantes; estas tuplas se rellenan con nulos y se añaden al resultado. Las intersecciones, seguidas por la sumade las tuplas rellenadas al resultado, se pueden hacer en paralelo mediante divisiones.

g. El algoritmo es básicamente lo mismo que antes, salvo que cuando se combinan los resultados, elprocesamiento de las tuplas colgantes debe hacerse para ambas relaciones.

20.9 Recuérdese que los histogramas se utilizan para generar particiones en rangos con carga equilibrada.a. Supóngase que se tiene un histograma en el que los valores varían de 1 a 100 y están divididos en 10rangos, 1-10, 11-20, . . ., 91–100, con frecuencias 15, 5, 20, 10, 10, 5, 5, 20, 5, y 5, respectivamente. Se dauna función de división en rangos con carga equilibrada para dividir los valores en cinco particiones.b. Propóngase un algoritmo para procesar una división en rangos con carga equilibrada con pparticiones, dado un histograma de las distribuciones de frecuencias que contiene n rangos.

Respuesta:a. Un vector de división que proporciona 5 particiones con 20 tuplas en cada una es: [21, 31, 51, 76] .Las 5 particiones obtenidas son 1-20, 21-30, 31-50, 51-75 y 76-100. La suposición hecha respecto a estevector de división es que, en un rango del histograma, cada valor es igualmente probable.

b. Considérese llamar a los rangos del histograma como h1, h2, . . , hh, y a las particiones como p1, p2, ... , pp. Supóngase que las frecuencias de los rangos del histograma son n1, n2, . . . , nh . Cada partición deberíacontener N/p tuplas, donde N = ' hi=1 ni.

Para construir el vector de división con carga equilibrada, se necesita determinar el valor de la tupla kth1, el

valor de la tupla kth2 y así sucesivamente, donde k1 = N/p, k2 = 2N/p etc, hasta kp-1 . El vector de división será

entonces [k1, k2, . . . , kp-1] . El valor de la tupla kthi se determina como sigue. Primero se determina el rango hj

del histograma en el que falla. Suponiendo que todos los valores en un rango son igualmente probables, elvalor kth

i será

sj + (ej - sj) � (kij / nj)donde

sj : primer valor en hj

ej : último valor en hj

kij : ki - ' j-1l=1 nl

Page 194: Manual de Apoyo Al Profesor

20.10 Descríbanse las ventajas e inconvenientes de utilizar paralelismo encauzado.

Respuesta:Ventajas:

No es necesario grabar relaciones intermedias a disco, sólo para leerlas de nuevo inmediatamente.

Inconvenientes:a. No puede aprovechar los altos grados de paralelismo, dado que las típicas consultas no tienen grannúmero de operaciones.b. No es posible encauzar los operadores que necesitan atender a todas las entradas antes de producircualquier salida.c. Dado que cada operación se ejecuta en un mismo procesador, las más costosas tardan mucho enterminar. Entonces, a pesar del paralelismo, la ganancia de velocidad será baja.

20.11 Algunos sistemas paralelos de bases de datos guardan otra copia de cada elemento de los datos endiscos conectados a un procesador diferente , para evitar la pérdida de los datos si falla uno de losprocesadores.a. ¿Por qué es conveniente dividir las copias de los elementos de los datos de un procesador entrevarios procesadores?b. ¿Cuáles son las ventajas e inconvenientes de utilizar almacenamiento RAID, en lugar de guardar otracopia de cada elemento de datos?

Respuesta:a. Las copias de los elementos de los datos de un procesador deberían estar divididas entre otrosprocesadores, en vez de almacenarse en el mismo procesador, por las siguientes razones:• para distribuir mejor entre los procesadores restantes el trabajo que debería hacerse, si el procesador fallara.• incluso en ausencia de fallos, esta técnica puede en cierto modo ocuparse de los puntos calientes creados portransacciones de sólo lectura.

b. RAID nivel 0 almacena una copia extra de cada elemento de datos (creación de imagen). Así, estoes similar a la creación de imágenes realizada por la propia base de datos, excepto que el sistema de la base dedatos no se ha de molestar por los detalles de llevar a cabo la creación de imágenes. Sólo facilita la grabaciónal sistema RAID que, automáticamente, realiza la creación de imágenes. A continuación se presentan loasventajas e inconvenientes de los otros niveles RAID, en comparación con la creación de imágenes.

Ventajas de los niveles RAID superiores:i. Menos caros que la creación de imágenes, en términos de requerimientos de espacio en disco.ii. Mejor velocidad de transferencia para grandes lecturas. De este modo, si predominan estos tipos deconsultas, RAID tiene un tiempo de respuesta más rápido que la creación de imágenes.

Inconvenientes de los niveles RAID superiores:i. Las escrituras son más caras.ii. La reconstrucción de un disco destruido es más cara.

Page 195: Manual de Apoyo Al Profesor

CAPITULO 21

DESARROLLO DE APLICACIONES Y ADMINISTRACIÓN

Ejercicios

21.1 ¿Cuál es la razón principal por la que los servlets dan mejor rendimiento que los programas queutilizan la interfaz de pasarela común (common gateway interface, CGI), pese a que los programas Java suelenejecutarse más lentamente que los programas C o C++?

Respuesta: El interface CGI inicia un proceso nuevo para atender a cada solicitud, lo que tiene unasobrecarga significativa sobre el sistema operativo. Por otro lado, los servlets se ejecutan como hebras de unproceso existente, evitando estas sobrecargas. Además, el proceso que ejecuta la hebras podría ser el propioproceso del servidor Web, evitando comunicaciones entre procesos que pueden ser costosas. Así, para tareasde tamaño moderado, la sobrecarga de Java es menor que la sobrecargas ahorradas al evitar crear y comunicarprocesos.

Para tareas que implican mucha actividad de la CPU, este puede no ser el caso, y empleando CGIcon un programa C o C++, se puede mejorar el rendimiento.

21.2 Indíquense algunas de las ventajas y de los inconvenientes de los protocolos sin conexión frente a losprotocolos que mantienen las conexiones.

Respuesta: La mayoría de los ordenadores pueden aceptar un número limitado de conexiones simultáneas.Con los protocolos sin conexión las conexiones se interrumpen tan pronto como se atiende la petición y, deesta manera, otros clientes pueden abrir conexiones. De esta manera, se pueden atender más clientes al mismotiempo. Una petición se puede dirigir a cualquier servidor para equilibrar la carga y, si un servidor cae, otropuede tomar el control sin que el cliente se percate del problema.

El inconveniente de los protocolos sin conexiones es que, cada vez que se envía una petición, ha dereestablecerse la conexión. También se ha de enviar cada vez información sobre la sesión, en forma decookies o campos ocultos. Esto los hace más lentos que los protocolos que mantienen la conexión, en caso deque se requiera información de estado.

21.3 Indíquense tres maneras en que se puede utilizar el almacenamiento en caché para acelerar elrendimiento de los servidores Web.

Respuesta: El almacenamiento caché se puede emplear para mejorar el rendimiento, explotando lassimilitudes entre las transacciones.a. Si el código de la aplicación para la atención de cada solicitud necesita abrir una conexión a la basede datos, que consume tiempo, se puede haber creado con antelación un fondo de conexiones abiertas paraque cada petición utilice una de ellas.b. Los resultados de una consulta generada por una petición se pueden almacenar en caché. Si lamisma petición llega de nuevo, o se genera la misma consulta, se puede emplear el resultado caché en vez deestablecer una nueva conexión a la base de datos.c. Se puede almacenar en caché la página Web final, generada en respuesta a la petición. Si la mismapetición llega de nuevo, se puede sacar la página almacenada en la memoria caché.

Page 196: Manual de Apoyo Al Profesor

21.4 a. ¿Cuáles son los tres niveles principales en los que se puede ajustar un sistema de bases dedatos para mejorar su rendimiento?

b. Apórtense dos ejemplos del modo en que se puede realizar el ajuste para cada uno de losniveles.

Respuesta:a. Se hace referencia al ajuste del rendimiento de un sistema de base de datos, como es el caso de lamodificación de algunos componentes del sistema para mejorar los tiempos de respuesta de las transacciones,o la productividad de las transacciones en su conjunto. Los sistemas de bases de datos se pueden ajustar adiferentes niveles para aumentar el rendimiento; a saber:

i. Diseño del esquema y las transaccionesii. Gestión de la memoria intermedia y de las transaccionesiii Estructuras de acceso y almacenamientoiv Hardware: discos, CPU, busses etc.

b. Se describen algunos ejemplos, para ajustar el rendimiento, de algunos de los principalescomponentes de un sistema de base de datos.i. Ajuste del esquema:

En este capítulo se han visto dos ejemplos de ajustes de esquema; a saber; división vertical de unarelación (recíprocamente, reunión de dos relaciones) y desnormalización (recíprocamente, normalización).Estos ejemplos reflejan el escenario general y las ideas que contiene se pueden aplicar para ajustar otrosesquemas.

ii. Ajuste de las transacciones:Un enfoque empleado para acelerar la ejecución de las consultas es mejorar su planificación.

Supóngase que se necesita la reunión naturas de dos relaciones, por ejemplo cuenta e impositor, desde elejemplo de la base de datos de un banco. Una reunión por mezcla-ordenación (Apartado 13.5.4) sobre elatributo número-cuenta puede ser más rápida que una simple reunión en bucle anidado sobre las relaciones.

Otras maneras de ajustar transacciones son, descomponiendo las transacciones de actualización delarga duración y combinando conjuntos de consultas relacionadas en una sola consulta. Ejemplos genéricos deestos enfoques se dan en este capítulo.

Para los sistemas cliente servidor, en donde la consulta ha de transmitirse desde el cliente al servidor,el propio tiempo de transmisión de la consulta puede suponer una parte importante del coste total de laconsulta. Empleando procedimientos almacenados se puede reducir significativamente el tiempo de respuestade las consultas.

iii Ajuste del gestor de la memoria intermedia:El gestor de la memoria intermedia puede incrementar o disminuir el número de páginas de la

memoria intermedia, para modificar las tasas de fallo de página. Sin embargo, debe notarse que un grannúmero de páginas puede significar altos costes en la gestión de pestillos y en el mantenimiento de otrasestructuras de datos, como las listas libres y las tablas de mapas de páginas.

iv Ajuste del gestor de las transacciones:La planificación de las transacciones afecta al rendimiento del sistema. Una consulta que calcula

estadísticas para los clientes de cada sucursal del banco, necesitará explorar las relaciones cuenta e impositor.Durante estas exploraciones no se permitirá actualizar el saldo de ningún cliente. Así, el tiempo de respuestapara las transacciones de actualización es alto. Las consultas largas se ejecutan mejor cuando hay pocastuplas, como es el caso de la noche.

Los puntos de revisión también suponen un coste. Si el tiempo de recuperación no es crítico, espreferible examinar un registro histórico grande (durante la recuperación), en vez de gastar mucho tiempo(puntos de revisión) durante la operación normal. Por lo tanto, puede merecer la pena ajustar los intervalos delos puntos de revisión, de acuerdo con la tasa de caídas y los tiempos de recuperación requeridos

v Ajuste de las estructuras de acceso y almacenamiento:El tiempo de respuesta de una consulta se puede mejorar creando un índice apropiado sobre la

relación. Por ejemplo, considérese una consulta en la que una impositora pregunta sobre su saldo en una

Page 197: Manual de Apoyo Al Profesor

determinada cuenta. Esta consulta implicaría la exploración de la relación cuenta, si no tiene ningún índicesobre número-cuenta. Consideraciones similares sobre la indexación también aplican al cálculo de reuniones,es decir, un índice sobre número-cuenta en la relación cuenta, evita explorar cuenta cuando una se realiza conimpositor una reunión natural de cuenta.

En cambio, la indexación puede perjudicar el rendimiento de las transacciones de actualización.Supóngase que es necesario actualizar el saldo frecuentemente.

Supóngase también que hay un índice sobre saldo (presumiblemente pata consultas por rangos) encuenta. Ahora, por cada actualización del valor del saldo, el índice también habrá de actualizarse. Además, lasactualizaciones concurrentes sobre la estructura de índices requerirán una sobrecarga adicional por bloqueos.Nótese que ,si no hubiera índice sobre saldo, el tiempo de respuesta de cada actualización no sería mayor. Eltipo de índice elegido también afecta al rendimiento. En una consulta por rangos, un índice conservando elorden (como los árboles B) es mejor que un índice asociativo.

Los agrupamientos de datos afecta al tiempo de respuesta de algunas consultas. Por ejemplo,supóngase que las tuplas de la relación cuenta están agrupadas por nombre-sucursal. Entonces, el tiempomedio de ejecución para una consulta que encuentra el saldo total depositado en una determinada sucursal,puede mejorar. Tener un índice agrupado sobre nombre-sucursal aporta más ventajas.

Si el sistema de la base de datos tiene más de un disco, los desagrupamientos de datos posibilitaráaccesos paralelos. Supóngase que se tienen cinco discos y una hipotética situación donde cada cliente tienecinco cuentas y cada cuenta tiene gran cantidad de información histórica a la que se necesita acceder.

Almacenando una cuenta por cliente por disco, se dispondrá de acceso paralelo en todas las cuentasde un determinado cliente. Así, la velocidad de una exploración sobre impositor aumentará alrededor de cincoveces

vi Ajuste del hardware:El hardware del sistema de la base de datos generalmente se compone de discos, procesador y la

arquitectura de interconexiones (busses, etc.). Cada uno de estos componentes puede ser un cuello de botella yaumentando el número de discos o el tamaño de sus bloques, o empleando un procesador más rápido omejorando la arquitectura del bus, se puede obtener una mejora en el rendimiento del sistema.

21.5 ¿Cuál es el motivo para separar una transacción de larga duración en una serie de transacciones másbreves? ¿Qué problemas pueden surgir como consecuencia y cómo pueden evitarse?

Respuesta: Las transacciones de actualización de larga duración hacen que se grabe mucha informaciónsobre el registro histórico y, por lo tanto, amplían el intervalo de puntos de revisión así como el tiempo derecuperación después de una caída. Una transacción que realiza numerosas actualizaciones puede, incluso,originar el desbordamiento del registro histórico del sistema antes de que se comprometa la transacción.

Para evitar estos problemas con las transacciones de actualización de larga duración, puede seraconsejable descomponer la transacción en otras más pequeñas. Esto se puede ver como una transacción degrupo, se divide en muchas transacciones pequeñas de mini lotes. Se obtiene el mismo efecto ejecutando latransacción de grupo y las transacciones de mini lotes, las cuales están planificadas en el orden en queaparecen sus operaciones en la transacción de grupo.

Sin embargo, ejecutar las transacciones de mini lotes en lugar de la transacción de grupo tienealgunos costes, como es el caso de un esfuerzo extra cuando falla el sistema de recuperación.

También, incluso si la transacción de grupo cumple el requerimiento de aislamiento, el mini lotepuede que no lo haga. Así, el gestor de transacciones puede liberar los bloqueos mantenidos por los minilotes, sólo cuando la última transacción del mini lote complete su ejecución.

21.6 Supóngase que un sistema ejecuta tres tipos de transacciones. Las transacciones de tipo A se ejecutana razón de cincuenta por segundo, las transacciones de tipo B se ejecutan a cien por segundo y lastransacciones de tipo C se ejecutan a doscientas por segundo. Supóngase que la mezcla de transacciones tieneun veinticinco por ciento del tipo A, otro veinticinco por ciento del tipo B y un cincuenta por ciento del tipoC.

a. ¿Cuál es el flujo promedio de transacciones del sistema, suponiendo que no hay interferencia entre

Page 198: Manual de Apoyo Al Profesor

las transacciones?b. ¿Qué factores pueden generar interferencias entre las transacciones de los diferentes tipos, haciendoque el flujo calculado sea incorrecto?

Respuesta:a. Supóngase que hay 100 transacciones en el sistema. La mezcla de transacciones podría ser de 25transacciones de cada tipo A y B, junto con 50 transacciones del tipo C. De este modo, el tiempo empleado enejecutar sólo las transacciones del tipo A es 0,5 segundos y el de las transacciones sólo del tipo B o sólo deltipo C, es de 0,25 segundos. Dado que las transacciones no interfieren, el tiempo total empleado en ejecutarlas 100 transacciones es 0,5+0,25+0,25 = 1 segundo, es decir, la productividad media sobre todas lastransacciones en de 100 transacciones por segundo.

b. Una de las más importantes causas de interferencias en las transacciones es la contención debloqueos. En el ejemplo anterior, supóngase que las transacciones de los tipos A y B son transacciones deactualización y que las del tipo C son consultas. Debido a la falta de correspondencia de la velocidad entre elprocesador y el disco, es posible que una transacción del tipo A esté manteniendo un bloqueo sobre unelemento de datos “caliente” y esté esperando a que se complete una escritura sobre el disco, mientras otratransacción (posiblemente del tipo B o C) está esperando que A libere el bloqueo. En este escenario semalgastan algunos ciclos de CPU. Por lo tanto, la productividad observada sería menor que la calculada.

Por el contrario, si las transacciones de tipos Ay B están en el límite del disco y las del tipo C en ellímite de la CPU y no hay contención de bloqueos, la productividad observada puede ser incluso mejor que lacalculada.

La contención de bloqueos puede conducir a interbloqueos, en cuyo caso se abortarán algunastransacciones. Los abortos y reinicios de transacciones (que pueden emplearse por una técnica optimista decontrol de concurrencia) contribuyen a que la productividad observada sea menor que la calculada.

Factores tales como los límites en los tamaños de las estructuras de los datos y la variación en eltiempo empleado por las funciones de contabilidad del gestor de transacciones, pueden causar también unadiferencia entre los valores de la productividad observada y calculada.

21.7 Supóngase que el precio de la memoria cae a la mitad y la velocidad de acceso al disco (número deaccesos por segundo) se dobla, mientras el resto de los factores permanecen iguales. ¿Cuál sería el efecto deeste cambio en las reglas de los cinco minutos y del minuto?

Respuesta: Estos cambios no tendrán ningún efecto sobre las reglas de los cinco minutos y del minuto. Elvalor de n, es decir, la frecuencia de los accesos a página en el punto de ni ganar ni perder es proporcional,manteniendo constantes otros factores, al producto del precio de la memoria por la velocidad del acceso adisco. Así, cuando el precio de la memoria baja a la mitad y se dobla la velocidad de acceso, n permanececonstante.

21.8 Indíquense algunas de las características de las pruebas TPC que ayudan a hacer las medidas realistasy dignas de confianza.

Respuesta: Algunas de las características que hacen a las pruebas TPC realistas y fiables son:a. Asegurar el pleno soporte de las propiedades ACID de las transacciones.b. Calcular la productividad observando el rendimiento de extremo a extremo.c. Haciendo proporcionales los tamaños de las relaciones a las tasas esperadas de llegada detransacciones yd. Midiendo en euros el coste por unidad de producción.

Page 199: Manual de Apoyo Al Profesor

21.9 ¿Por qué se sustituyó al índice TPC-D por los pruebas TPC-H y TPC-R?

Respuesta: Varias consultas TPC-D pueden acelerarse significativamente empleando vistas materializadas yotra información redundante, pero deberían tenerse en cuenta la sobrecarga de emplearlas. Por lo tanto, TPC-Ry TPC-H se introdujeron como modificaciones al TPC-D; los dos emplean el mismo esquema y la misma cargade trabajo. TPC-R modela consultas de informes periódicos y se permite que la base de datos que ejecuta elíndice utilice vistas materializadas. Por otro lado, TPC-H modela consultas ad hoc y prohíbe las vistasmaterializadas y otra información redundante.

21.10 Indíquense algunas ventajas e inconvenientes de las normas anticipativas frente a las normasreaccionarias.

Respuesta: En ausencia de una norma anticipativa, puede resultar difícil compatibilizar los diferentesproductos desarrollados por varias organizaciones. Así, puede ser duro formular una norma reaccionaria, sinsacrificar alguno de los proyectos de desarrollo de productos. Este problema ha sido afrontado por la normaODMG, al normalizar la sintaxis de punteros y los mecanismos de acceso.

Por otro lado, una norma reaccionaria es usual que se forme después de utilizar el productointensamente y, por lo tanto, tiene una ventaja sobre una norma anticipativa, que se construye a partir deexperiencias pragmáticas. En la práctica, se ha encontrado que algunas normas anticipativas tienden a serdemasiado ambiciosas. SQL-3 es un ejemplo de una norma que es compleja y tiene un gran número decaracterísticas. Algunas de estas características se pueden implementar en ningún sistema durante muchotiempo y otras, sin duda, se encontrarán inadecuadas.

21.11 Supóngase que alguien suplanta a una empresa y obtiene un certificado de una autoridad emisora decertificados. ¿Cuál es el efecto sobre las cosas (como las órdenes de compra o los programas) certificadas porla empresa suplantada y sobre las certificadas por otras empresas?

Respuesta: El problema clave con los certificados digitales (cuando se usan fuera de línea, sin contactar conel emisor del certificado) es que no hay manera de eliminarlos.

Por ejemplo (esto ha sucedido realmente, pero se han cambiado los nombres de las partes) unapersona C dice ser un empleado de la compañía X y obtiene un nuevo certificado de clave pública de laautoridad de certificación A. Supóngase que la autoridad A pensó equivocadamente que C estaba actuando ennombre de la compañía X, entrega a C un certificado cert. Ahora, C puede comunicar con la persona Y, quienverifica el certificado cert presentado por C y cree que la clave pública contenida en cert pertenece realmentea X. Ahora C se comunicaría con Y empleando la clave pública, e Y cree que la comunicación es de lacompañía X.

La persona Y ahora puede revelar información confidencial a C, o aceptar ordenes de compra de C, oejecutar programas certificados por C basados en la clave pública, pensando que él se esta comunicandorealmente con la empresa X. En cada caso hay un daño potencial hacia Y.

Incluso si A detecta la suplantación, mientras que Y no compruebe con A (el protocolo no exige estacomprobación), no hay manera de que Y averigüe que el certificado está falsificado.

Si X era la propia autoridad de certificación, se pueden crear aún más niveles de certificados falsos.Pero los certificados que no son parte de esta cadena no estarían afectados.

Page 200: Manual de Apoyo Al Profesor

CAPITULO 21

CONSULTAS AVANZADAS Y RECUPERACIÓN DE LAINFORMACIÓN

Este capítulo trata las técnicas de consultas avanzadas para bases datos y la recuperación de la información.Las técnicas de consultas avanzadas incluyen sistemas de apoyo a las decisiones, procesamiento en conexiónanalítica, incluyendo el soporte de SQL:1999 para OLAP y la extracción inteligente de datos.

Aunque la recuperación de la información ha sido considerada por los investigadores como uncampo independiente de las bases de datos, hay fuertes conexiones. Está aumentando la importancia de larecuperación de la información distribuida, con la explosión de documentos en la Web y la importanciaresultante de las técnicas de búsquedas en la Web.

Considerando la creciente importancia de todos los tópicos que se tratan en este capítulo, algunos delos apartados del mismo se pueden asignar como material de lectura suplementario, incluso en un curso deintroducción. Estos podrían incluir OLAP, algunas partes de la extracción inteligente de datos y de larecuperación de la información. La materia del capítulo es también adecuada para sentar las bases de un cursoavanzado o para mantener a los profesionales en contacto con los desarrollos recientes.

Cambios a la tercera edición:

• Se ha ampliado el tratamiento de OLAP con la cobertura de jerarquías y se han introducido nuevas materiassobre soporte a OLAP en SQL:1999, incluyendo agregación extendida, clasificación y ventanas.• El apartado sobre extracción inteligente de datos se ha ampliado significativamente con nuevas materiassobre los diferentes tipos de extracción, incluyendo clasificación, asociación y agrupamiento, así comodiferentes métodos para la clasificación y la regresión. También se ha introducido el tratamiento dealgoritmos para la construcción de árboles de decisión y para encontrar reglas de asociación.• Se ha ampliado la cobertura de los almacenes de datos con el tratamiento de esquemas de estrellas.• Se ha ampliado la cobertura de la recuperación de la información con un mejor tratamiento de larecuperación de la información básica y el tratamiento de la recuperación de la información en la Web,aprovechando la información de hiperenlaces.

Page 201: Manual de Apoyo Al Profesor

Ejercicios

22.1 Por cada una de las funciones de agregación SQL sum, count, min y max, muéstrese como calcularel valor agregado para el conjunto múltiple S1 U S2, dados los valores agregados en los conjuntos múltiples S1y S2.

Basado en lo anterior, dense expresiones para calcular valores agregados con agrupamiento en unsubconjunto S, de los atributos de una relación r(A, B, C, D, E), dados los valores agregados paraagrupamiento de los atributos T ( S, para las funciones de agregación siguientes:a. sum, count, min y maxb. avgc. desviación estándar

Respuesta: Dados valores agregados en los conjuntos múltiples S1 y S2, se pueden calcular loscorrespondientes valores agregados sobre el conjunto múltiple S1 � S2 como sigue:a. sum(S1 � S2) = sum(S1) + sum(S2)b. count(S1 � S2) = count(S1) + count(S2)c. min(S1 � S2) = min(min(S1), min(S2))d. max(S1 � S2) = max(max(S1), max(S2))

Supóngase los conjuntos de atributos T = (A, B, C, D) y S = (A, B). Supóngase que la agregaciónsobre el conjunto T se almacena en la tabla t-on-agregación con columnas de agregación t-suma, t-contador,min, y t-max almacenando respectivamente sum, count, min y max.

a. Las agregaciones t-suma, t-contador, min, y t-max sobre el conjunto de atributos S se calculan porla consulta:

(select A, B, sum(t-suma) as s-suma, sum(t-contador) as s-contador,min(t-min) as s-min, max(t-max) as s-max

from t-on-agregacióngroupby A, B)

b. La agregación avg sobre el conjunto de atributos S se calcula por la consulta:

(select A, B, sum(t-suma)/sum(t-contador) as s-avgfrom t-on-agregacióngroupby A, B)

c. Para calcular la desviación estándar se emplea la fórmula alternativa:

lo cual se obtiene expandiendo la fórmula

Si S está dividido en n conjuntos S1, S2, . . . Sn se mantiene la siguiente relación:

Page 202: Manual de Apoyo Al Profesor

Empleando esta fórmula, la agregación stddev se calcula por la consulta:

select A, B,[sum(t-contador � (t-stddev2+ t-avg2))/sum(t-contador)] -

[sum(t-suma)/sum(t-contador)]from t-on-agregacióngroupby A, B

22.2 Muéstrese la manera de expresar group by cube(a, b, c, d) usando rollup; la respuesta debe tenersólo una cláusula group by .

Respuesta:groupby rollup(a), rollup(b), rollup(c), rollup(d)

22.3 Se da un ejemplo de un par de agrupamientos que no puedan expresarse empleando sólo una cláusulagroup by con cube y rollup.

Respuesta: Considérese un ejemplo de jerarquías de las dimensiones de la Figura 22.4.No se puede expresar una consulta para buscar agregaciones en grupos (Ciudad, Hora del día) y (Ciudad,Fecha) empleando sólo una cláusula group by con cube y rollup.

Cualquier cláusula sencilla groupby con cube y rollup que calcule estos dos grupos, tambiéncalcularía otros grupos.

22.4 Dada una relación E(estudiante, asignatura, notas), escríbase una consulta para encontrar los nestudiantes con mejores notas, empleando la clasificación.

Respuesta: Se supone que varios estudiantes no tienen las mismas notas dado que, de lo contrario, lapregunta no es unívoca; la consulta siguiente devuelve unívocamente todos los estudiantes con las mismasnotas como los n estudiantes, de manera que puede devolver más de n estudiantes.

select estudiante, sum(notas) as total,rank() over (order by (total) desc) as trankfrom Sgroupby estudiantehaving trank � n

22.5 Dada la relación r(a, b, c, d), muéstrsese la manera de usar las características ampliadas del SQLpara generar un histograma de d frente a a, dividiendo a en 20 partes iguales (es decir, cada parte contiene un5% de las tuplas en r, ordenadas por a).

Respuesta:select tile20, sum(d)from (select d, ntile(20) over (order by (a)) as tile20

from r) as sgroupby tile20

Page 203: Manual de Apoyo Al Profesor

22.6 Escríbase una consulta para hallar saldos acumulativos, equivalente a la mostrada en el Apartado22.2.5, pero sin utilizar las estructuras ampliadas para la creación de ventanas de SQL.

Respuesta:select t1.número-cuenta, t1.fecha-hora, suma(t2.valor)from transaction as t1, transaction as t2where t1.número-cuenta = t2.número-cuenta and

t2.fecha-hora < t1.fecha-horagroupby t1.número-cuenta, t1.fecha-horaorder by t1.número-cuenta, t1.fecha-hora

22.7 Considérese el atributo saldo de la relación cuenta. Escríbase una consulta en SQL para calcular unhistograma de los valores de saldo, dividiendo el rango desde cero hasta el máximo saldo de una cuentapresente, en tres rangos iguales.

Respuesta:(select 1, count(�)from cuentawhere 3� saldo <= (select max(saldo)

from cuenta))union(select 2, count(�)from cuentawhere 3� saldo > (select max(saldo)

from cuenta)and 1,5�� saldo <= (select max(saldo)

from cuenta))union(select 3, count(�)from cuentawhere 1,5�� saldo > (select max(saldo)

from cuenta))

22.8 Considérese la relación ventas del Apartado 22.2. Escríbase una consulta en SQL para calcular laoperación cubo para la relación, dada la relación de la Figura 22.2. No se debe utilizar la constructora withcube.

Respuesta:(select color, tamaño, sum(número)from ventasgroupby color, tamaño)union(select color, ’all’, sum(número)from ventasgroupby color)union(select ’all’, tamaño, sum(número)from ventas

Page 204: Manual de Apoyo Al Profesor

groupby tamaño)union(select ’all’, ’all’, sum(número)from ventas)

22.9 Constrúyase un clasificador de árboles de decisión con divisiones binarias en cada nodo, utilizandolas tuplas de la relación r(A, B, C) que se muestra más abajo como datos de formación; el atributo C denota laclase. Muéstrese el árbol final y, con cada nodo, la mejor división para cada atributo junto con su valor deganancia de la información.

(1, 2, a), (2, 1, a), (2, 5, b), (3, 3, b), (3, 6, b), (4, 5, b), (5, 5, c), (6, 3, b), (6, 7, c)

Respuesta:

22.10 Supóngase que hay dos reglas de clasificación, una que dice que la gente con sueldos entre 10.000 €y 20.000 € tienen una calificación de crédito de buena y otra que dice que la gente con sueldos entre 20.000 €y 30.000 € tienen una calificación de crédito de buena. Hay que indicar las condiciones para las que se puedensustituir las reglas, sin pérdida de información, por una sola regla que diga que las personas con sueldos entre10.000 € y 30.000 € tienen una calificación de crédito de buena.

Respuesta: Considérese el siguiente par de reglas y sus niveles de confianza:

Número Regla Confianza1. � personas P, 10.000 < P.sueldo � 20.000 �

P.crédito = bueno60%

2. � personas P, 20.000 < P.sueldo � 30.000 �P.crédito = bueno

90%

La nueva regla ha de estar asignada a un nivel de confianza que se encuentre entre los niveles deconfianza de las reglas 1 y 2. Al reemplazar las reglas originales por la nueva regla se originará una pérdidadel nivel de confianza en la clasificación de las personas, dado que no se puede distinguir entre los niveles deconfianza de las personas que ganan entre 10.000 y 20.000, de aquellas que ganan entre 20.000 y 30.000. Porlo tanto, se pueden combinar ambas reglas sin pérdida de información, sólo si sus niveles de confianza son losmismos.

22.11 Supóngase que la mitad de las transacciones en una tienda de ropa adquieren vaqueros y que unatercera parte adquieren camisetas. Supóngase además que la mitad de las transacciones que adquierenvaqueros también adquieren camisetas. Escríbanse todas las reglas de asociación (no triviales) que se puedandeducir de la información anterior, indicando el soporte y la confianza de cada regla.

Respuesta: Las reglas son como sigue. La última regla se puede deducir de las anteriores.

Regla Apoyo Confianza� transacciones T, true � compra(T, vaqueros) 50% 50%� transacciones T, true � compra(T, camisetas) 33% 33%� transacciones T, compra(T, vaqueros) � compra(T, camisetas) 25% 50%� transacciones T, compra(T, camisetas) � compra(T, vaqueros) 25% 75%

22.12 Considérese el problema de hallar conjuntos de artículos de gran tamaño.

Page 205: Manual de Apoyo Al Profesor

a. Descríbase la manera de encontrar el soporte para una colección dada de conjuntos de elementos,utilizando sólo una exploración de los datos. Supóngase que los conjuntos de artículos y la informaciónasociada, como los recuentos, caben en la memoria.b. Supóngase un conjunto de artículos que tiene un soporte menor que j. Pruébese que ningúnsuperconjunto de este conjunto de artículos puede tener soporte mayor o igual que j.

Respuesta:a. Sea {S1, S2, . . . , Sn} la colección de conjuntos de artículos para los que se quiere encontrar elsoporte. Asóciese un contador contadorSi) con cada conjunto de artículos Si.

Inicialícese el contador a cero. Examínense ahora las transacciones, una por una. Sea S(T ) elconjunto de artículos de una transacción T . Por cada conjunto de artículos Si que es un subconjunto de S(T ),increméntese el contador correspondiente, contador(Si).

Cuando se hayan rastreado todas las transacciones, los valores de contador(Si) darán, para cada i, elsoporte para el conjunto de artículos Si.

b. Sea A un conjunto de artículos. Considérese cualquier conjunto de artículos B, que sea unsuperconjunto de A. Sean �A y �B los conjuntos de transacciones que adquieren todos los artículos en A y B,respectivamente. Por ejemplo, supóngase que A es {a, b, c} y B es {a, b, c, d}.

Una transacción que adquiera todos los artículos de B debe haber adquirido todos los artículos de A(dado que A � B). De este modo, cada transacción en �A está también en �B. Esto implica que el número detransacciones en �B es, a lo sumo, el número de transacciones en �A. En otras palabras, el soporte para B es,como máximo, el soporte para A.

Entonces, si cualquier conjunto de artículos tiene un soporte menor que j, todos los súper conjuntosde este conjunto de artículos tienen soporte menor que j.

22.13 Descríbanse las ventajas e inconvenientes de una arquitectura dirigida por el origen para larecolección de datos en los almacenes de datos, en comparación con una arquitectura dirigida por el destino.

Respuesta: En una arquitectura dirigida por el destino para la recolección de datos, las transferencias de datosdesde la fuente al almacén de datos se basan en la demanda del almacén, mientras que en una arquitecturadirigida por el origen, las transferencias se inician por cada fuente de datos.

Las ventajas de una arquitectura dirigida por el origen son:

• Los datos se pueden propagar al destino tan pronto como están disponibles.En una arquitectura dirigida por el destino, para capturar los datos en cuanto estén disponibles, el almacéntendría que comprobar frecuentemente las fuentes, originando una alta sobrecarga.

• La fuente no ha de mantener información histórica. Tan pronto como se actualizan los datos, la fuente puedeenviar un mensaje de actualización al destino y olvidarse el histórico de las actualizaciones. Por el contrario,en una arquitectura dirigida por el destino, cada fuente ha de mantener un histórico de los datos que aún nohan sido recogidos por el almacén de datos. Así, los requerimientos de almacenamiento de las fuentes sonmenores para una arquitectura dirigida por la fuente.

Por otro lado, una arquitectura dirigida por el destino tiene las siguientes ventajas.

• En una arquitectura dirigida por el origen, la fuente ha de estar activa y debe gestionar condiciones de error,tales como el no ser capaz de contactar con el almacén durante un tiempo. Es más fácil implementar fuentespasivas y un solo almacén activo. En una arquitectura dirigida por el destino, cada fuentes es requerida paraque aporte sólo una funcionalidad básica de ejecución de consultas.

• El almacén tiene más control cuando, para llevar a cabo actividades de recolección de datos y procesarconsultas de usuarios, no es una buena idea desarrollar simultáneamente ambos, dado que pueden entrar enconflictos de bloqueos.

Page 206: Manual de Apoyo Al Profesor

22.14 Considérese el esquema dibujado en la Figura 22.9. Se da una consulta de SQL:1999 para resumir lascifras de ventas y los precios por tienda y por fecha, junto con las jerarquías para tienda y fecha.

Respuesta:select id-almacén, ciudad, provincia, país,

fecha, mes, trimestre, año,sum(número), sum(precio)

from ventas, almacén, fechawhere ventas.id-almacén = almacén.id-almacén and

ventas.fecha = fecha.fechagroupby rollup(país, provincia, ciudad, id-almacéb),

rollup(año, trimestre, mes, fecha)

22.15 Calcúlese la importancia (mediante las definiciones adecuadas de la frecuencia de los términos y dela frecuencia inversa de los documentos) de cada una de las preguntas de este capítulo para la consulta“relación SQL”.

Respuesta: No se consideran las preguntas que no contienen ninguna de la palabras clave, dado que suimportancia para la palabra clave es cero. El número de palabras en una pregunta incluye las palabras deparada. Se emplean las ecuaciones dadas en el Apartado 22.5.1.1 para calcular la importancia; el registrohistórico de términos en la ecuación se asume que está para la base 2.

Q.# # # # “SQL” “relación” “SQL” “relación” Totalpalabras “SQL”

“relatción”

térm freq. térm freq. relv. relv. relv.

1 84 1 1 0,0170 0,0170 0,0002 0,0002 0,00044 22 0 1 0,0000 0,0641 0,0000 0,0029 0,00295 46 1 1 0,0310 0,0310 0,0006 0,0006 0,00136 22 1 0 0,0641 0,0000 0,0029 0,0000 0,00297 33 1 1 0,0430 0,0430 0,0013 0,0013 0,00268 32 1 3 0,0443 0,1292 0,0013 0,0040 0,00549 77 0 1 0,0000 0,0186 0,0000 0,0002 0,000214 30 1 0 0,0473 0,0000 0,0015 0,0000 0,001515 26 1 1 0,0544 0,0544 0,0020 0,0020 0,0041

22.16 Explíquese la diferencia entre un falso positivo y un rechazo falso. Si es fundamental que lasconsultas de recuperación de la información no pierdan ninguna información importante, explicar si esaceptable tener falsos positivos o rechazos falsos. ¿Por qué?

Respuesta: Los sistemas de recuperación de la información localizan documentos que contienen unadeterminada palabra clave, utilizando un índice que asocia esta palabra clave sobre un conjunto deidentificadores de documentos contenidos en él. Cada palabra clave puede estar contenida en un gran númerode documentos. Para ahorrar espacio de almacenamiento para los identificadores de los documentoscorrespondientes a una palabra clave, el índice, a veces, se almacena de tal manera que la recuperación esaproximada. El error en esta aproximación puede conducir a una de las dos situaciones: un rechazo falsosucede cuando algunos documentos importantes no se recuperan; un falso positivo tiene lugar cuando serecuperan algunos documentos sin importancia. De este modo, para las consultas de recuperación de lainformación que tienen la obligación de no perder información relevante, es aceptable tener falsos positivos,pero no rechazos falsos.

22.17 Supóngase que se desea hallar documentos que contengan como mínimo k palabras clave de un

Page 207: Manual de Apoyo Al Profesor

conjunto dado de n. Supóngase también que se dispone de un índice de palabras clave que da una lista(ordenada) de identificadores de documentos que contienen una palabra clave dada. Se da un algoritmoeficiente para hallar el conjunto de documentos deseado.

Respuesta: Sea S un conjunto de n palabras clave. Un algoritmo para encontrar todos los documentosque contienen al menos k de estas palabras clave, se presenta a continuación:

Este algoritmo calcula un contador de referencia por cada identificador de documentos. Un contadorde referencia de i para un identificador de documentos d significa que, al menos, i de las palabras claves en Sestán presentes en el documento identificadas por d. El algoritmo mantiene una lista de registros, cada unocon dos campos: un identificador de documentos y el contador de referencia para este identificador. Esta listase mantiene ordenada sobre el campo identificador de documentos.

inicializar la lista L a la lista vacía;for (cada palabra clave c en S) dobegin

D := la lista de identificadores de documentos correspondientes a c;for (cada identificador de documentos d en D) do

if (un registro R con identificador de documentos como d está en la listaL) then

R.contador_referencia := R.contador_referencia + 1;else begin

grabar un nuevo registro R;R.id_documento := d;R.contador_referencia := 1;sumar R a L;

end;end;for (cada registro R en L) do

if (R.contador_referencia >= k) thenproducir R;

Nótese que la ejecución de la segunda instrucción for hace que la lista D se “fusione” con la lista L . Dado quelas listas L y D están ordenadas, el tiempo empleado en esta fusión es proporcional a la suma de las longitudesde las dos listas. Así, el algoritmo se ejecuta en tiempo (como máximo) proporcional a n veces la suma totalde los números de identificadores de documentos correspondientes a cada palabra clave en S.

Page 208: Manual de Apoyo Al Profesor

CAPITULO 23

TIPOS DE DATOS AVANZADOS Y NUEVAS APLICACIONES

Este capítulo cubre los tipos de datos automáticos y las nuevas aplicaciones, incluyendo bases de datostemporales, bases de datos espaciales, geográficas y bases de datos portátiles y personales. En concreto, en losúltimos años ha aumentado la importancia de los tipos de datos mencionados anteriormente y los sistemas debases de datos comerciales están incrementando la provisión de complementos para tales tipos de datos, pormedio de ampliaciones a los sistemas de bases de datos, denominadas de diferentes maneras cartuchos oextenders.

Este capítulo es adecuado como una herramienta para sentar las bases de un curso avanzado.Algunas de las materias, como los tipos de datos espaciales y temporales, pueden ser adecuados para eltrabajo individual de un primer curso.

Cambios a la tercera edición:

En la edición anterior esta materia formaba parte del capítulo 21, pero en esta edición ese capítulo se divididoen dos, los capítulos 22 y 23.

El tratamiento de los árboles R se ha ampliado con una descripción informal sobre los algoritmos deinserción y borrado. Se han actualizado las comunicaciones móviles de datos.

Page 209: Manual de Apoyo Al Profesor

Ejercicios

23.1 Indíquense los dos tipos de tiempo y en lo que se diferencian. Indíquese el motivo de que haya dostipos de tiempo asociados con cada tupla.

Respuesta: Una base de datos temporal modela los cambios en los estados de algunos aspectos del mundoreal. Los intervalos de tiempo que relacionan los datos almacenados en una base de datos temporal pueden serde dos tipos: momento válido y momento de transacción. El momento válido de un hecho es el conjunto deintervalos de tiempo en el que el hecho es cierto en el mundo real. El momento de transacción de un hecho esel conjunto de intervalos de tiempo en el que el hecho es actual en el sistema de la base de datos. Sólo elmomento de transacción depende del sistema y se genera por el sistema de la base de datos.

Supóngase que se considera el ejemplo de la base de datos del banco para que sea bitemporal. Sólo elconcepto de momento válido permite al sistema responder a consultas tales como: ¿Cuál era el saldo deSantos hace dos días? Por otro lado se pueden responder, basándose en el momento de transacción, aconsultas como: ¿Qué se grabó hace dos días como saldo de Santos? La diferencia entre los dos momentos esimportante. Por ejemplo, supóngase que hace tres días el cajero cometió un error al introducir el saldo deSantos y que hasta ayer no se corrigió el error. Este error significa que hay una diferencia entre los resultadosde las dos consultas ( si ambas se ejecutasen hoy).

23.2 Indíquese si se conservarán las dependencias funcionales si se convierte una relación en una relacióntemporal añadiéndole un atributo temporal. Indíquese el modo en que se resuelve el problema en las bases dedatos temporales.

Respuesta: Las dependencias funcionales pueden violarse cuando se amplia una relación para que incluya unatributo temporal. Por ejemplo, supóngase que se añade un atributo temporal a la relación cuenta, en elejemplo de la base de datos bancaria. La dependencia número-cuenta � saldo puede ser violada, dado que elsaldo de un cliente cambiaría con el tiempo.

Para solucionar este problema los sistemas de bases de datos temporales tienen un nociónligeramente diferente de dependencia funcional, denominada dependencia funcional temporal. Por ejemplo, ladependencia funcional temporal número-cuenta �T saldo sobre el esquema-cuenta significa que, por cadainstancia cuenta de esquema-cuenta, todas las instantáneas de cuenta cumplen la dependencia funcionalnúmero-cuenta � saldo; es decir que en cualquier momento, cada cuenta tendrá un solo saldo bancariocorrespondiente a él.

23.3 Supóngase que se tiene una relación que contiene las coordenadas x, y junto con los nombres devarios restaurantes. Supóngase también que las únicas consultas que se plantearán serán de la forma siguiente:La consulta especifica un punto y pregunta si hay algún restaurante exactamente en ese punto. Indíquese eltipo de índice que sería preferible, árbol R o árbol B. Indíquese el motivo.

Respuesta: La consulta dada no es una consulta por rangos, dado que sólo requiere buscar por un punto. Estaconsulta se puede responder de forma eficiente mediante un índice árbol B sobre el par de atributos (x, y).

23.4 Considérense datos vectoriales bidimensionales en que los elementos de datos no se solapan.Indíquese si es posible convertir esos datos vectoriales en datos lineales. En caso de que sea posible,indíquense los inconvenientes de almacenar los datos lineales obtenidos de esa conversión en lugar de losdatos vectoriales originales.

Respuesta: Para convertir datos vectoriales que no se solapan en datos lineales, se definen los valores parajustamente esos píxeles que se encuentran sobre cualquiera de los elementos de datos (regiones); los otrospíxel tienen un valor por defecto.

Los inconvenientes de este enfoque son: pérdida de precisión en la información de la localización (dado que los datos lineales pierden resolución), un requerimiento de almacenamiento mucho mayor y la

Page 210: Manual de Apoyo Al Profesor

pérdida de información de resumen (como la forma de una región).

23.5 Supóngase que se dispone de una base de datos espacial que soporta consultas regionales (conregiones circulares) pero no consultas de vecino más próximo. Descríbase un algoritmo para encontrar elvecino más próximo haciendo uso de varias consultas regionales.

Respuesta: Supóngase que se desea buscar el vecino más próximo de un punto P, en una base de datos depuntos en el plano. La idea es emitir múltiples consultas regionales centradas en P. Cada consulta regionalcubre una área de puntos mayor que la consulta anterior. El procedimiento se detiene cuando el resultado deuna consulta regional no está vacío. Se calcula la distancia desde P a cada punto dentro de esta región y sepublica el conjunto de puntos más cercanos.

23.6 Supóngase que se desean almacenar segmentos rectilíneos en un árbol R. Si un segmento rectilíneono es paralelo a los ejes, su caja límite puede ser grande y contener una gran área vacía.

• Descríbase el efecto en el rendimiento de tener cajas límite de gran tamaño en las consultas que piden lossegmentos rectilíneos que interceptan una región dada.• Descríbase brevemente una técnica para mejorar el rendimiento de esas consultas y apórtese un ejemplo desus ventajas. Sugerencia: se pueden dividir los segmentos en partes más pequeñas.

Respuesta:

Figura 21.17 a) : Representación de un segmento mediante un rectángulo

Figura 21.17 b) : División de cada segmento en cuatro partes.

La cajas límite de gran tamaño tienden a solapar incluso donde la región de solape no contieneninguna información. La Figura 21.17 a) muestra una región R dentro de la cual se ha de localizar unsegmento. Nótese que, aunque ninguno de los cuatro segmentos se encuentra en R, debido a las cajas límitegrandes, se han de verificar cada una de las cuatro cajas límite para confirmar esto. Se observa una mejorasignificativa en la Figura 21.17 b), donde cada segmento está dividido en múltiples partes, cada una con supropia caja límite. En el segundo caso, la caja R no forma parte de las cajas indexadas por el árbol R. En

Page 211: Manual de Apoyo Al Profesor

general, el dividir un segmento en partes más pequeñas origina que las cajas límite lo sean también,malgastándose menos el área.

23.7 Se da un procedimiento recursivo para calcular de manera eficiente la mezcla espacial de dosrelaciones con índices de árbol R. (Sugerencia: Utilícense cajas límite para verificar si las entradas de hojasbajo un par de nodos internos pueden interseccionar.)

Respuesta: Lo que sigue es un procedimiento recursivo para calcular reuniones espaciales de dos árboles R.

SpJoin(nodo n1, nodo n2)begin

if(las cajas límite de n1 y n2 no interseccionan)return;

if(tanto n1 como n2 son hojas)output todos los pares de entradas (e1, e2) tales quee1�n1 e2�n2 y e1 e2solapan

if(n1 no es una hoja)NS1 = conjunto de hijos de n1;

elseNS1 = { n1 };

if(n2 no es una hoja)NS2 = conjunto de hijos de n2;

elseNS2 = { n2 };

for each ns1 en NS1 y ns2 en NS2;SpJoin(ns1, ns2);

end

23.8 Estúdiese el soporte de los datos espaciales ofrecido por el sistema de bases de datos que se estáutilizando e impleméntese lo siguiente:a. Un esquema para representar la ubicación geográfica de los restaurantes y características como lacocina que se sirve en cada restaurante y su nivel de precios.b. Una consulta para hallar los restaurantes económicos que sirven comida india y que se hallan amenos de nueve kilómetros de casa del lector (supóngase cualquier ubicación para la casa del lector).c. Una consulta para hallar, para cada restaurante, su distancia al restaurante más cercano que sirve lamisma cocina y con el mismo nivel de precios.

Respuesta: PENDIENTE DE RESOLVER

23.9 Indíquense los problemas que se producen en un sistema de medios continuos si los datos seentregan demasiado lentamente o demasiado rápidamente.

Respuesta: Los sistemas de medios continuos generalmente manejan un gran número de datos, que se han dellevar a una velocidad constante. Supóngase que el sistema aporta los fotogramas de las imágenes para unatelevisión. La velocidad de entrega de los datos desde el sistema, debería corresponderse con la velocidad devisualización de los fotogramas de la televisión. Si la velocidad de entrega fuese demasiado lenta, la pantallaperiódicamente se paralizaría o se quedaría en blanco dado que, durante un tiempo, no habría nuevos datosque visualizar. Por el contrario, si la velocidad de entrega fuese demasiado rápida, la memoria intermedia dedatos con destino al televisor se desbordaría, causando una pérdida de datos; los datos perdidos no sevisualizarían nunca.

23.10 Descríbase el modo en que las ideas subyacentes a la organización RAID (Apartado 11.3) pueden

Page 212: Manual de Apoyo Al Profesor

utilizarse en un entorno de datos de difusión, donde puede que haya ocasionalmente ruido que impida larecepción de parte de los datos que se están transmitiendo.

Respuesta: Los conceptos de RAID se pueden emplear para mejorar la fiabilidad de la difusión de datos através de sistemas inalámbricos. Cada bloque de datos que se va a transmitir se divide en unidades de igualtamaño. Se calcula un valor de suma de chequeo para cada unidad y se añade a la unidad. Ahora se calculanlos datos de paridad para estas unidades. Una suma de chequeo para el dato de paridad se añade al dato, paraformar una unidad de paridad. Tanto las unidades de datos como las de paridad se difunden, una tras otra,como una sola transmisión.

En la recepción de la difusión, el receptor emplea las sumas de chequeo para verificar si cada unidadse recibe sin errores. Si se encuentra una unidad con errores, se puede reconstruir desde las otras unidades.

El tamaño de la unidad se debe elegir cuidadosamente. Las unidades pequeñas no sólo requierencalcular más sumas de chequeo, sino que la posibilidad de que una explosión de ruido corrompa más de unaunidad, es también alta. El problema de emplear unidades grandes es que aumenta la probabilidad de que elruido afecte a una unidad; por lo tanto, ha de haber un equilibrio.

23.11 Indíquense tres características principales de la informática móvil en redes inalámbricas que sondiferentes de las de los sistemas distribuidos tradicionales.

Respuesta: Algunas de las principales características que los diferencian son las siguientes.

• En los sistemas distribuidos, el que un anfitrión se desconecte de la red se considera un fallo, mientras quese permite como una característica de los sistemas portátiles.

• Los sistemas distribuidos se administran generalmente de forma centralizada mientras que, en lascomputadoras portátiles, cada ordenador personal que forma parte del sistema se administra por el usuario(propietario) de la máquina y hay, si acaso, una pequeña administración central.

• En los sistemas distribuidos convencionales, cada máquina tiene una localización determinada y unadirección de red. Esto no es cierto para las computadoras portátiles y, de hecho, es lo opuesto al propósito dela informática móvil.

• Las consultas hechas sobre un sistema de computación móvil pueden implicar la localización y velocidad deun ordenador anfitrión.

• En un sistema distribuido, se permite a cada ordenador un tamaño arbitrario y puede consumir gran cantidadde energía eléctrica (casi) ininterrumpidamente. Los sistemas móviles generalmente tienen pequeñosordenadores que funcionan a baja potencia, con pequeñas baterías.

23.12 Indíquense tres factores que haya que considerar en la optimización de las consultas para lainformática móvil que no se consideren en los optimizadores de consultas tradicionales.

Respuesta: El factor de influencia más importante sobre el coste del procesamiento de consultas, en unsistema tradicional de bases de datos, es la E/S a disco. Sin embargo, en la informática móvil, el minimizar lacantidad de energía requerida para ejecutar una consulta es una tarea importante en un optimizador deconsultas. Para reducir el consumo de energía (la carga de las baterías) el optimizador de consultas en unordenador móvil minimiza el tamaño y el número de las consultas a transmitir a computadoras remotas, asícomo el tiempo que está girando el disco.

En los sistemas de bases de datos tradicionales, el modelo de costes generalmente no incluye eltiempo de conexión y la cantidad de datos transferidos. Sin embargo, los usuarios de computadoras portátilesgeneralmente cargan con el coste de acuerdo a estos parámetros. Por ello, se deberían minimizar estosparámetros mediante un optimizador de consultas de la computadora portátil.

Page 213: Manual de Apoyo Al Profesor

23.13 Defínase un modelo en que se difundan repetidamente los datos, donde el medio de transmisión semodele como un disco virtualDescríbase el modo en que el tiempo de acceso y la velocidad de transferencia de datos del disco virtual sediferencian de los valores correspondientes a un disco duro normal.

Respuesta: Se pueden distinguir dos modelos de difusión de datos. En el caso de un medio de difusión puro,donde el receptor no puede comunicar con el difusor, este transmite datos con ciclos de transmisiónperiódicos del conjunto de datos, de tal manera que los nuevos receptores puedan ponerse al corriente de todala información difundida. Por ello, los datos se difunden en un ciclo continuo. Este período del ciclo se puedeconsiderar semejante al peor caso de latencia rotacional en una unidad de disco. Aquí no hay concepto deltiempo de búsqueda. El valor para la latencia del ciclo depende de la aplicación, pero es posible que sea almenos del orden de segundos, lo cual es muy superior que la latencia en una unidad de disco.

En un modelo alternativo, el receptor puede devolver peticiones al difusor. En este modelo tambiénse puede añadir un equivalente de latencia de acceso a disco, entre el receptor enviando una petición y eldifusor recibiendo la petición y respondiéndola. La latencia es una función del volumen de peticiones y delancho de banda del medio de difusión. A su vez, las consultas pueden cumplirse sin ni siquiera enviar unapetición, dado que el difusor da la casualidad que envía los datos en un ciclo, o basados en alguna otrapetición de los receptores. A pesar de todo, la latencia es probable que sea al menos del orden de segundos, denuevo muy superior que los correspondientes valores para un disco duro.

Un típico disco duro puede transferir datos a la velocidad de 1 a 5 mega bytes por segundo. Por elcontrario, el ancho de banda de una canal de difusión es generalmente de sólo unos pocos kilo bytes porsegundo. La latencia total es probablemente del orden de segundos a cientos o incluso miles de segundos, encomparación con los pocos mili segundos de un disco duro.

23.14 Considérese una base de datos de documentos en la que todos los documentos se conserven en unabase de datos central. En las computadoras portátiles se guardan copias de algunos documentos. Supóngaseque la computadora portátil A actualiza una copia del documento 1 mientras está desconectada y que, almismo tiempo, la computadora portátil B actualiza una copia del documento 2 mientras está desconectada.Muéstrese el modo en que el esquema del vector versión puede asegurar la actualización adecuada de la basede datos central y de las computadoras portátiles cuando se vuelva a conectar una computadora portátil.

Respuesta: Sea C la computadora sobre la que se carga la base de datos central. Cada computadora portátil(anfitrión) i almacena, con su copia de cada documento d, una versión - vector – que es un conjunto denúmeros de versión Vd,i,j con una entrada por cada otro anfitrión j, que almacena una copia del documento dque posiblemente pudo actualizar.

El anfitrión A actualiza el documento 1 mientras está desconectado de C. Por ello, de acuerdo alesquema del vector versión, el número de versión V1,A,A se incrementa en uno.

Supóngase ahora que el anfitrión A se reconecta a C. Esta pareja intercambia el vector versión yencuentra que el número de versión V1,A,A es, en uno, mayor que V1,C,A (asumiendo que la copia del documento1 almacenada en el anfitrión A, fue actualizada muy recientemente sólo por el anfitrión A). Siguiendo elesquema del vector versión, la versión del documento 1 en C se actualiza y se refleja el cambio mediante unincremento en el número de versión V1,C,A. Nótese que estos son los únicos cambios hechos por el anfitrión.

Análogamente, cuando el anfitrión B se conecta al anfitrión C, se intercambian los vectores versión yel anfitrión B encuentra que V1,B,A es, en uno, menor que V1,C,A . De este modo, el número de versión V1,B,A seincrementa en uno y la copia del documento 1 se actualiza en el anfitrión B.

Así se ve que el esquema del vector versión asegura la adecuada actualización de la base de datoscentral, justamente para el caso considerado. Este argumento se puede generalizar fácilmente para el caso enque se realicen, fuera de línea, múltiples actualizaciones a copias del documento 1 sobre el anfitrión A, asícomo sobre el anfitrión B y el C. Es similar el argumento para las actualizaciones fuera de línea deldocumento 2.

23.15 Se da un ejemplo para mostrar que el esquema del vector versión no asegura la secuenciabilidad.(Sugerencia: Utilícese el ejemplo del Ejercicio 23.14 con la suposición de que los documentos 1 y 2 estándisponibles en las dos computadoras portátiles A y B, y téngase en cuenta la posibilidad de que un documento

Page 214: Manual de Apoyo Al Profesor

pueda leerse aunque no se actualice).

Respuesta: Considérese el ejemplo dado en el ejercicio anterior. Supóngase que los anfitriones A y B noestán conectados entre sí. A su vez, supóngase que copias idénticas de los documentos 1 y 2 estánalmacenadas en los anfitriones A y B.

Sea {X = 5} el contenido inicial del documento 1 y {X = 10} el del documento 2. Si pérdida degeneralidad, supóngase que se inicializan a cero todos los vectores versión.

Supóngase que el anfitrión A actualiza el número de su copia del documento 1 con el de su copia deldocumento 2. Entonces, el contenido de ambos documentos (en el anfitrión A) son ahora {X = 10} . El númerode versión V1,A, A se ha incrementado en 1.

Mientras el anfitrión B está desconectado del anfitrión A, actualiza el número en su copia deldocumento 2 con el de su copia en el documento 1. Así, los contenidos de ambos documentos (en el anfitriónB) son ahora {X = 5} . El número de versión V2,A, A se ha incrementado en 1.

Posteriormente, cuando se conecten entre sí los anfitriones A y B, intercambiarán vectores versión.El esquema del vector versión actualiza la copia del documento 1en el anfitrión B a {X = 10} y la copia deldocumento 2 en el anfitrión A a {X = 5} . Así, las dos copias de cada documento son idénticas, a saber, eldocumento 1 contiene {X = 10} y el documento 2 {X = 5}.

Sin embargo, nótese que una planificación secuencial de ambas actualizaciones (una sobre elanfitrión A y otra sobre el B), implicaría que ambos documentos tendrían el mismo contenido.Por lo tanto, este ejemplo muestra que el esquema del vector versión no asegura la secuencialidad.

Page 215: Manual de Apoyo Al Profesor

CAPITULO 24

PROCESAMIENTO AVANZADO DE TRANSACCIONES

En este capítulo se va mas allá de los esquemas de procesamiento básico de transacciones discutidospreviamente, tratando conceptos de procesamiento de transacciones más avanzados, incluyendo monitores deprocesamiento de transacciones, sistemas de flujos de trabajo, bases de datos en memoria principal, sistemasde transacciones en tiempo real y gestión de transacciones de larga duración por medio de transaccionesanidadas, transacciones multinivel y niveles débiles de consistencia. El capítulo finaliza tratando los nivelesdébiles de consistencia empleados para gestionar los sistemas de bases de datos múltiples.

Este capítulo es adecuado para un curso avanzado. La secciones sobre monitores TP y flujos detrabajo pueden tratarse también en un curso de introducción, como material de trabajo individual.

Cambios a la tercera edición:

El tratamiento de los sistemas de copia de seguridad remotos se ha trasladado desde al capítulo sobrerecuperación, mientras que el procesamiento de transacciones, en bases de datos múltiples, se ha trasladado aeste capítulo desde la posición anterior, en el capítulo de bases de datos distribuidas.

Page 216: Manual de Apoyo Al Profesor

Ejercicios

24.1 Explíquese el modo en que los monitores TP administran los recursos de la memoria y delprocesador, de manera más efectiva que los sistemas operativos habituales.

Respuesta: En un sistema operativo típico, cada cliente se representa por un proceso que ocupa muchamemoria. Así mismo, las sobrecargas de los procesos multitarea son elevadas.

Un monitor TP tiene más de proveedor de servicios que de entorno para la ejecución de procesoscliente. Los procesos cliente se ejecutan en sus propios sitios y envían solicitudes al monitor TP, siempre quedesean aprovecharse de algún servicio. El mensaje se encamina al servidor adecuado por medio del monitorTP, devolviendo al cliente los resultados del servicio.

La ventaja de este esquema es que el mismo proceso servidor puede servir simultáneamente a variosclientes, empleando múltiples hebras. Esto ahorra espacio de memoria y reduce los costes de CPU en laconservación de las propiedades ACID y en la planificación de procesos enteros. Incluso sin múltiples hebras,el monitor TP puede cambiar dinámicamente el número de servidores en ejecución, en función de cualquierfactor que afecte al buen rendimiento. Todo esto no es posible con una configuración de sistema operativotípico.

24.2 Compárense las características de los monitores TP con las proporcionadas por los servidores Webque soportan servlets (estos servidores se han denominado TP-lite).

Respuesta: PENDIENTE.

24.3 Considérese el proceso de admisión de nuevos alumnos en la universidad (o de nuevos empleados enla organización).a. Se da una imagen de alto nivel del flujo de trabajo, comenzando por el procedimiento de matrículade los estudiantes.b. Indíquense los estados de terminación aceptables y los pasos que implican intervención de personas.c. Indíquense los posibles errores (incluido el vencimiento del tiempo límite) y el modo en que setratan.d. Estúdiese la cantidad de flujo de trabajo que se ha automatizado en la universidad.

Respuesta: PENDIENTE.

24.4 Al igual que los sistemas de bases de datos, los sistemas de flujo de trabajo también necesitan lagestión de la concurrencia y de la recuperación. Indíquense tres motivos por los que no se puede aplicarsimplemente un sistema relacional de bases de datos empleando bloqueo de dos fases, registro histórico deoperaciones físicas de deshacer y el bloqueo de dos fases.

Respuesta:a. Las tareas en un flujo de trabajo tienen dependencias basadas en su estado Por ejemplo, el inicio deuna tarea puede estar condicionado al resultado (tales como comprometido o abortado) de algunas otrastareas. Todas las tareas no se pueden ejecutar independiente y concurrentemente, empleando compromiso dedos fases sólo para compromisos atómicos.

b. Cuando termine una tarea, habrá de exponer sus actualizaciones para que otras tareas, ejecutando lasmismas entidades de procesamiento, no tengan que esperar mucho. El bloqueo de dos fases es una formademasiado estricta de control de concurrencia y no es apropiada para los flujos de trabajo.

c. Los flujos de trabajo tiene sus propios requerimientos de consistencia, es decir atomicidad antefallos. Una ejecución de flujo de trabajo debe finalizar en un estado de terminación aceptable. Por esto y porla exposición temprana de actualizaciones no comprometidas, el procedimiento de recuperación será bastante

Page 217: Manual de Apoyo Al Profesor

diferente. Habrán de emplearse algunas formas de registro histórico lógico y transacciones de compensación.Además, para realizar una recuperación en avance de un flujo de trabajo fallido, las rutinas de recuperaciónnecesitan restaurar la información sobre el estado del planificador y las tareas, no sólo los elementos de datosactualizados. Por esto no se puede usar un simple registro histórico de escritura anticipada.

24.5 Si toda la base de datos cabe en la memoria principal, indíquese si continúa haciendo falta un sistemade bases de datos para administrar los datos. Explíquese la respuesta.

Respuesta: Incluso si toda la base de datos cabe en memoria principal, se necesita un sistema de gestión debases de datos para realizar tareas como control de concurrencia, recuperación, registro histórico, etc., a lahora de conservar las propiedades ACID de las transacciones.

24.6 Considérese un sistema de bases de datos en memoria principal que se recupera de un fallo delsistema.Explíquense las ventajas relativas de• Volver a cargar toda la base de datos en memoria principal, antes de reanudar el procesamiento de lastransacciones• Cargar los datos a medida que los soliciten las transacciones

Respuesta:• Cargar toda la base de datos en memoria, por adelantado, puede facilitar transacciones que necesiten altavelocidad o accesos a datos en tiempo real con la garantía de que, una vez que se inicien, no tendrán queesperar por accesos a disco para coger los datos.Sin embargo, ninguna transacción puede ejecutarse hasta que toda la base de datos esté cargada.

• La ventaja de cargar bajo demanda es que el procesamiento de las transacciones puede iniciarseinmediatamente; sin embargo, las transacciones pueden ver largos e impredecibles retrasos en los accesos adisco, hasta que toda la base de datos se cargue en memoria.

24.7 En la técnica de compromiso en grupo, ¿cuántas transacciones deben formar parte de cada grupo?Explíquese la respuesta.

Respuesta: Como los registros del registro histórico se escriben para almacenamiento estable en múltiplos deun bloque, se deberían comprometer los grupos de transacciones de tal manera que el último bloque,conteniendo los registros del registro histórico del grupo actual, esté casi lleno.

24.8 Indíquese si un sistema de transacciones de alto rendimiento es necesariamente un sistema de tiemporeal. ¿Por qué sí, o por qué no?

Respuesta: Un sistema de alto rendimiento no es necesariamente un sistema de tiempo real. En un sistema dealto rendimiento la principal finalidad es ejecutar cada transacción tan rápido como sea posible, teniendo másrecursos y utilizándolos mejor. De este modo la velocidad media y el tiempo de respuesta son las principalescosas a optimizar. En un sistema en tiempo real, la velocidad no es el tema central. Aquí, cada transaccióntiene una fecha límite y tener cuidado de que finalice dentro de la fecha límite o emplee un tiempo extra, tanpequeño como sea posible, es el tema crítico.

24.9 En un sistema de bases de datos que utilice el registro histórico de escritura adelantada indíquese, enel peor caso posible, el número de accesos a disco necesarios para leer un elemento de datos. Explíquese elmotivo por el que esto supone un problema para los diseñadores de sistemas de bases de datos de tiempo real.

Respuesta: En el peor de los casos, una lectura puede causar que una página del búfer se escriba en disco

Page 218: Manual de Apoyo Al Profesor

(precedida por los correspondientes registros del histórico), seguido por la lectura desde disco de la páginaque contiene los datos a acceder. Esto emplea dos o más accesos a disco y el tiempo requerido es variosordenes de magnitud mayor que la referencia de memoria principal, requerida en el mejor de los casos. Por lotanto, la variancia del tiempo de ejecución de una transacción es muy alta y sólo se puede estimarpobremente. Por eso es difícil planificar los calendarios que necesitan finalizar en una fecha límite.

24.10 Explíquese el motivo por el que puede que no resulte práctico exigir la secuencialidad para lastransacciones de larga duración.

Respuesta: En presencia de transacciones de larga duración, el tratar de asegurar secuencialidad tiene variosinconvenientes:a. Con un esquema de espera para el control de concurrencias, las transacciones de larga duraciónforzarán largos tiempos de espera. Esto significa que el tiempo de respuesta será alto, la concurrencia serábaja, con lo que sufrirá el rendimiento. También se incrementa la probabilidad de impases.

b. Con un esquema basado en marcas temporales, mucho trabajo hecho por una transacción de largaduración se perderá si se ha de abortar.

c. Las transacciones de larga duración son generalmente interactivas y es muy difícil imponersecuencialidad con interactividad.Así, el requerimiento de secuencialidad no es práctico. Alguna otra noción de consistencia de base de datos hade emplearse para soportar transacciones de larga duración.

24.11 Considérese un proceso con varias hebras que entrega mensajes desde una cola duradera de mensajespersistentes. Pueden ejecutarse de manera concurrente diferentes hebras, que intentan entregar mensajesdiferentes. En caso de fallo en la entrega, el mensaje debe restaurarse en la cola. Modélense las acciones quelleva a cabo cada hebra como una transacción multinivel, de manera que no haga falta mantener los bloqueosen la cola hasta que se entregue cada mensaje.

Respuesta: Cada hebra puede modelarse como una transacción T que toma un mensaje desde la cola y lodirige. Se pueden escribir transacciones T como una transacción multinivel, con subtransacciones T1 y T2. Lasubtransacción T1 saca un mensaje de la cola y la subtransacción T2 lo dirige. Cada subtransacción liberabloqueos una vez que se completa, permitiendo a otras transacciones acceder a la cola. Si falla la transacciónT2 en la conducción del mensaje, la transacción T1 se deshará mediante la invocación de una transaccióncompensadora, que restaurará el mensaje en la cola.

24.12 Discútanse las modificaciones que hay que hacer en cada uno de los esquemas de recuperacióntratados en el Capítulo 17, si se permiten las transacciones anidadas. Explíquense también las diferencias quese producen si se permiten las transacciones multinivel.

Respuesta:• El algoritmo de recuperación avanzada del Apartado17.9 :

La operación rehacer, que repite la historia, es igual que antes. A continuación se discute la maneraen que se gestiona la operación rehacer.

Recuperación con transacciones anidadas:

Cada subtransacción necesita tener un único TID, porque una subtransacción fallida podría tener que serindependientemente retrocedida y reinicializada. Si una subtransacción falla, las acciones de recuperacióndependen de si la transacción de nivel superior no terminada debe abortar o continuar. Si debe abortar, todaslas subtransacciones, terminadas o no, se deshacen mediante una lectura hacia atrás del registro histórico (estoes posible porque los bloqueos, sobre los elementos de datos modificados, no se liberan tan pronto comofinaliza una subtransacción). Si la transacción anidada va a continuar, solo se deshace la transacción fallida y

Page 219: Manual de Apoyo Al Profesor

después continua la transacción de nivel superior.En el caso de un fallo del sistema, dependiendo de la aplicación, puede ser necesario abortar la transacciónanidada entera o (por ejemplo en el caso de transacciones de larga duración) las subtransacciones incompletasy reanudar la transacción anidada. Si se debe abortar la transacción anidada, la vuelta atrás puede hacerse dela manera usual mediante el algoritmo de recuperación, durante la operación deshacer. Si la transacciónanidada debe reiniciarse, cualquier subtransacción incompleta que necesite ser retornada puede hacerlo comoantes. Para reiniciar la transacción anidada, la información sobre el estado de la transacción, tal como losbloques mantenidos y el estado de la ejecución, debe haberse anotado en el histórico y se debe restaurardurante la recuperación. Las transacciones por lotes pequeños (discutidas en el Apartado 21.2.7) son unejemplo de transacciones anidadas que se deben reiniciar.

Recuperación con transacciones multinivel:

Además de lo hecho en el caso anterior, se han de gestionar los problemas causados por la exposición deactualizaciones realizadas por subtransacciones comprometidas, de transacciones de nivel superiorincompletas. Una subtransacción comprometida puede tener bloqueos liberados que almacena, para que latransacción compensadora los adquiera. Esto es claro en el caso de fallos de transacciones, pero es máscomplicado en el caso de fallos del sistema.El problema es que una subtransacción de nivel inferior a, de una transacción de nivel superior A, puede tenerbloqueos liberados que han de ser readquiridos para compensar a A durante la recuperación.Desafortunadamente, puede haber alguna otra subtransacción de nivel inferior b, de una transacción de nivelsuperior B, que arranque y adquiera los bloqueos liberados por a, antes de que finalice A. De este modo, losregistros deshacer para b pueden preceder la operación del registro comprometido por A. Pero si b no hubieraterminado en el momento en que falla el sistema, primero debe ser retrocedida y liberada de sus bloqueos,para permitir a la transacción compensadora de A readquirir los bloqueos.Esto complica la operación deshacer, ya no puede hacerse en una lectura hacia atrás del registro histórico. Larecuperación multinivel se describe con detalle en David Lomet, “MLR: Un método de recuperación parasistemas multinivel”, ACM SIGMOD Conf. on the Management of Data 1992, San Diego.

• Recuperación en un esquema de paginación en la sombra :En un esquema basado en la paginación en la sombra, la implementación se complicará mucho si las

subtransacciones se van a ejecutar de manera concurrente. Si se van a ejecutar secuencialmente, la tabla depáginas actual se copia a la tabla de páginas en la sombra, al final de cada subtransacción. La idea general derecuperación es, entonces, similar al esquema basado en registros históricos, excepto en que las operacionesdeshacer y rehacer se hacen mucho más fácilmente, como en el Apartado 17.5.

24.13 Indíquese la finalidad de las transacciones compensadoras. Preséntense dos ejemplos de suutilización.

Respuesta: Una transacción compensadora se emplea para realizar un deshacer semántico de los cambioshechos previamente por transacciones comprometidas. Por ejemplo, una persona podría ingresar un cheque ensu cuenta de ahorro. Entonces la base de datos se actualizaría para reflejar el nuevo saldo. Dado que llevaunos pocos días dar el visto bueno al cheque, podría descubrirse más tarde que el cheque se rechazó, en cuyocaso se ejecutaría una transacción de compensadora para restar el importe del cheque rechazado desde lacuenta del impositor. Otro ejemplo de cuando se emplearía una transacción compensadora es en un programade evaluación. Si la calificación de un estudiante en una tarea se va a cambiar después de haberse registrado,un programa compensador (generalmente una opción del propio programa de evaluación) se ejecuta paracambiar la calificación y rehacer los promedios, etc.

Page 220: Manual de Apoyo Al Profesor

24.14 Considérese un sistema con varias bases de datos en el que se garantice que, como máximo, estáactiva una transacción global en un momento dado y que cada sistema local asegura la secuencialidad local.a. Sugiéranse maneras de que el sistema con varias bases de datos pueda asegurar que haya comomáximo una transacción global activa, en cualquier momento dado.b. Demuéstrese, mediante un ejemplo, que resulta posible que se produzca una planificación global nosecuenciable, pese a estas suposiciones.

Respuesta:a. Se puede tener un elemento de datos especial en algún sitio sobre el que, antes de iniciar unatransacción global, se tenga un bloqueo. El bloqueo debería liberarse después que se complete la transacción.Esto asegura el requerimiento de una sola transacción global activa. Para reducir la dependencia sobre el sitioparticular en que tiene lugar, se puede generalizar la solución seleccionando el esquema para elegir uno de lossitios actuales que sea el coordinador, y requerir que el bloqueo se solicite sobre el elemento de datos quereside en el coordinador elegido actualmente.

b. La siguiente planificación implica dos sitios y cuatro transacciones. T1 y T2 son transacciones localesejecutándose en los sitios 1 y 2 respectivamente. TG1 y TG2 son transacciones globales ejecutándose en ambossitios. X1, Y1 son elementos de datos en el sitio 1, y X2, Y2 están en el sitio 2.

T1 T2 TG1 TG2

write(Y1)read(Y1)write(X2)

read(X2)write(Y2)

read(Y2)write(X1)

read(X1)

En esta planificación , TG2 se inicia sólo después de que TG1 termine. Dentro de cada sitio hay secuencialidadlocal. En el sitio 1, TG2 � T1 � TG1 es un orden secuencial.En el sitio 2, TG1 � T2 � TG2 es un orden secuencial. Todavía la planificación global no es secuenciable.

24.15 Considérese un sistema con varias bases de datos en el que cada sitio local asegura la secuencialidadlocal y todas las transacciones globales son sólo de lectura.a. Demuéstrese mediante un ejemplo que pueden producirse ejecuciones no secuenciables en estesistema.b. Muéstrese la manera en que se podría utilizar un esquema de billete para asegurar la secuencialidadglobal.

Respuesta:a. Se supone el mismo sistema que el de la respuesta del Ejercicio 24.14, excepto en que ahora las dostransacciones globales son de sólo lectura. Considérese la planificación siguiente.

T1 T2 TG1 TG2

read(X1)write(X1)

read(X1)read(X2)

write(X2)read(X2)

Page 221: Manual de Apoyo Al Profesor

Aunque hay secuencialidad local en ambos sitios, la planificación global no es secuenciable.

b. Dado que la secuencialidad está garantizada, cualquier ciclo en el amplio sistema del grafoprecedente debe implicar,al menos, dos sitios y dos transacciones globales diferentes. El esquema de billeteasegura que siempre que dos transacciones globales tengan acceso a los datos de un sitio, entran en conflictocon los datos (el billete) de cada sitio. El gestor de transacciones globales controla el acceso del billete, de talmanera que las transacciones globales se ejecutan con el mismo orden secuencial en todos los sitios. Así seelimina la probabilidad de su participación en un ciclo del amplio sistema del grafo precedente