Sunteți pe pagina 1din 221

CONTENIDOS

PREFACIO ____________________________________________________ 4 INTRODUCCIN _______________________________________________ 5 MODELO ENTIDAD-RELACIN ____________________________________ 9 MODELO RELACIONAL _________________________________________ 28 SQL _______________________________________________________ 38 OTROS LENGUAJES RELACIONALES_______________________________ 51 INTEGRIDAD Y SEGURIDAD _____________________________________ 64 DISEO 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 OPTIMIZACIN DE CONSULTAS_________________________________ 142 TRANSACCIONES ____________________________________________ 151 CONTROL DE CONCURRENCIA __________________________________ 157 SISTEMAS DE RECUPERACIN __________________________________ 168 ARQUITECTURAS DE SISTEMAS DE BASES DE DATOS _______________ 175 BASES DE DATOS DISTRIBUDAS _______________________________ 180 BASES DE DATOS PARALELAS __________________________________ 189

DESARROLLO DE APLICACIONES Y ADMINISTRACIN _______________ 195 CONSULTAS AVANZADAS Y RECUPERACIN DE LA INFORMACIN _____ 200 TIPOS DE DATOS AVANZADOS Y NUEVAS APLICACIONES ____________ 208 PROCESAMIENTO AVANZADO DE TRANSACCIONES _________________ 215

PREFACIO
Este volumen es un manual del profesor para la cuarta edicin de Fundamentos de Bases de Datos por Abraham Silberschatz, Henry F. Korth y S. Sudarshan. Contiene las respuestas a los ejercicios del final de cada captulo del libro. Antes de aportar las respuestas a los ejercicios de cada captulo, se incluyen unos comentarios sobre cada uno. La naturaleza de estos cometarios es variable. Incluyen explicaciones sobre la inclusin u omisin de ciertas materias y se hace notar la manera en que se ensea el captulo en nuestros propios cursos. Los comentarios tambin incluyen sugerencias sobre las materias a omitir, si el tiempo es escaso, consejos prcticos sobre el software y el material que se puede emplear para los ejercicios de programacin. El inicio de esta edicin se han dispuesto en la Web las soluciones de algunos problemas. Estos problemas se han marcado con un * en el manual del profesor. La pgina web del libro, http://www.bell-labs.com/topic/books/db-book, contiene una variedad de informacin til, incluyendo la actualizacin de erratas, apndices en lnea que describen modelos de datos en red, modelos de datos jerrquicos, diseo avanzado de bases de datos relacionales y el modelo del plan de estudios del curso. Peridicamente se actualizar esta pgina con material suplementario que pueda ser til a profesores 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 enve un email a db-book@research.bell-labs.com indicando su nombre, afiliacin, puesto y direccin de correo electrnico. Le agradeceramos que nos hiciera llegar los errores u omisiones del libro, as como del manual del profesor. Aunque hemos intentado escribir un manual del profesor que ayude a los usuarios de nuestro libro tanto como sea posible, siempre se puede mejorar. Se podran incluir respuestas mejoradas, preguntas adicionales, ejemplos de preguntas de test, proyectos de programacin, sugerencias sobre ordenes alternativos de presentacin de las materias, referencias adicionales y otros. Si desea sugerir cualquier mejora al libro o al manual del profesor, estaremos encantados de escucharle. El correo electrnico por Internet debe dirigirse a db-book@research.bell-labs.com. El correo fsico debe enviarse a Avi Silberschatz, Laboratorios Bell, Room 2T-310, 600 Mountain Avenue,Murray Hill, NJ 07974, USA. Todas las aportaciones que tengan lugar sern, naturalmente, convenientemente reconocidas a sus autores. Nilesh Dalvi, Sumit Sanghai, Gaurav Bhalotia y Arvind Hulgeri hicieron la mayor parte del trabajo de preparacin para la cuarta edicin del manual del profesor. Este manual se ha elaborado a partir de los manuales de las ediciones anteriores. El manual de la tercera edicin fue preparado por K. V. Raghavan con la ayuda de Prateek R. Kapadia, Sara Strandtman ayud con el manual del profesor para las ediciones segunda y tercera, mientras que Greg Speegle y Dawn Bezviner ayudaron a preparar el manual del profesor para la primera edicin. A.S. H.F.K. S.S. Manual de apoyo al profesor, Versin 4.0.0

CAPITULO

INTRODUCCIN
El Captulo 1 aporta una visin general sobre la naturaleza y el propsito de los sistemas de bases de datos. El concepto ms importante de este captulo es que los sistemas de bases de datos permiten tratar los datos con un alto nivel de abstraccin. As, los sistemas de bases de datos se diferencian significativamente de los sistemas de ficheros y de los entornos de programacin de propsito general, con los cuales ya estn familiarizados los estudiantes. Otro aspecto importante del captulo es animar al empleo de los sistemas de bases de datos, en lugar de los programas de aplicaciones construidos sobre sistemas de ficheros. As, el captulo motiva lo que el estudiante estudiar el resto del curso. La idea de la abstraccin en los sistemas de bases de datos merece ser enfatizada en todo el proceso, no slo en la discusin del Apartado 1.3. La visin general de la estructura de las bases de datos que arranca en el Apartado 1.4 es, forzosamente, ms bien breve y pretende solamente dar al estudiante una idea aproximada de algunos conceptos. Puede que los estudiantes no sean capaces, inicialmente, de apreciar completamente los conceptos que aqu se describen, pero deberan serlo al final del curso. Las especificaciones de los modelos E-R, relacional y orientados a objeto, se cubren en captulos posteriores. Estos modelos se pueden emplear en el Captulo 1 para reforzar el concepto de abstraccin, mientras los detalles sintcticos se postergan para ms tarde en el curso. Si los estudiantes ya han realizado un curso sobre sistemas operativos, vale la pena mostrar como se relacionan las bases de datos -DBMS- y los sistemas operativos -OS-. Tambin es til diferenciar entre la concurrencia, tal y como es enseada en los cursos sobre sistemas operativos (con una orientacin hacia ficheros, procesos y recursos fsicos) y el control de concurrencia en las bases de datos (con una orientacin hacia una granularidad ms sutil que el nivel de ficheros, las transacciones de recuperacin y los recursos accedidos asociativamente, ms que fsicamente). Si los estudiantes estn familiarizados con un sistema operativo en particular, el enfoque de esos S.O. a un acceso de ficheros concurrentes pude emplearse como ejemplo.

Ejercicios
1.1 Cules son las cuatro diferencias principales entre un sistema de procesamiento de archivos y un SGBD? Respuesta: Algunas de las diferencias ms importantes entre un sistema de gestin de bases de datos y uno de procesamiento de archivos son: Ambos sistemas contienen una coleccin de datos y un conjunto de programas que acceden a ellos. Un sistema de gestin de bases de datos coordina los accesos fsicos y lgicos a los datos, mientras que un sistema de procesamiento de ficheros coordina slo el acceso fsico. Un sistema de gestin de bases de datos reduce la cantidad de datos duplicados, asegurando que una seccin fsica de datos est disponible para todos los programas autorizados a accederla, mientras que los datos escritos por un programa sobre un sistema de procesamiento de ficheros pueden no ser accesibles por otro programa. Un sistema de gestin de bases de datos est diseado para permitir acceso flexible a los datos (es decir, consultas), mientras que un sistema de procesamiento de ficheros est diseado para permitir predeterminados accesos a los datos(es decir, programas compilados). Un sistema de gestin de bases de datos est diseado para coordinar a mltiples usuarios accediendo a los mismos datos en el mismo momento. Un sistema de procesamiento de ficheros generalmente se disea para permitir que uno o ms programas accedan a diferentes ficheros de datos al mismo tiempo. En un sistema de procesamiento de ficheros, dos programas pueden acceder concurrentemente a un fichero slo si ambos tienen acceso de slo lectura sobre el fichero. 1.2 En este captulo se han descrito las diferentes ventajas principales de un sistema gestor de bases de datos. Cules son dos de los inconvenientes? Respuesta: A continuacin se indican dos inconvenientes asociados con los sistemas de bases de datos. a. La instalacin de un sistema de bases de datos requiere ms conocimiento, dinero, habilidad y tiempo. b. La complejidad de una base de datos puede originar una disminucin del rendimiento. 1.3 Explquese la diferencia entre independencia fsica y lgica de los datos.

Respuesta: La independencia fsica de los datos es la capacidad para modificar el esquema fsico, sin necesidad de rescribir los programas de las aplicaciones. Tales modificaciones incluyen cambiar el almacenamiento de registros desbloqueados a bloqueados, o de ficheros de acceso secuencial a random. La independencia lgica de los datos es la capacidad para modificar el esquema conceptual, sin necesidad de rescribir los programas de las aplicaciones. Una de estas modificaciones podra ser la adicin de un campo a un registro; una vista de los programas de la aplicacin oculta este cambio desde los programas.

1.4 Lstense cinco responsabilidades de un sistema de gestin de bases de datos. Para cada responsabilidad, explquense los problemas que ocurriran si no se realizara esta funcin. Respuesta: Un gestor de bases de datos de propsito general (DBM) tiene cinco responsabilidades: a. interaccionar con el gestor de ficheros. b. poner en prctica la integridad c. poner en prctica la seguridad d. copias de seguridad y recuperacin e. controlar las concurrencias. Si estas responsabilidades no fueran asumidas por un determinado DBM (y los textos indican que en ocasiones se omite alguna responsabilidad en el diseo, como es el caso del control de concurrencia en un DBM mono puesto para un microordenador) podran ocurrir, respectivamente, los siguientes problemas: a. Ningn DBM puede hacer nada sin esto; si no hay interaccin con el gestor de ficheros no se puede recuperar nada que est almacenado en los ficheros. b. Pueden no cumplirse las restricciones de integridad, los saldos de las cuentas podan estar por debajo del mnimo permitido, los empleados podran ganar demasiadas horas extraordinarias (por ejemplo, horas > 80) o los pilotos de las compaas areas podran volar ms horas de las que permite la ley. c. Usuarios no autorizados podran acceder a la base de datos, o usuarios autorizados para acceder a determinadas partes de la base de datos podran ser capaces de acceder a otras, para las que carecen de autorizacin. Por ejemplo, un estudiante de escuela superior podra tener acceso a los cdigos secretos de la defensa nacional, o los empleados podran averiguar lo que ganan sus jefes. d. Los datos se podran perder de forma permanente en vez de, al menos, estar disponibles en el estado de consistencia que exista antes del fallo. e. Se podran violar la restricciones de integridad a pesar del cumplimiento de la propia integridad en cada transaccin. Por ejemplo, se podran reflejar saldos bancarios incorrectos debido a retiradas y depsitos simultneos, etctera. 1.5 Cules 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 definicin del esquema Definir la estructura de almacenamiento y los mtodos de acceso Modificar el esquema y/o la organizacin fsica cuando sea necesario Conceder autorizacin para acceder a los datos Definir las restricciones de integridad 1.6 Lstense siete lenguajes de programacin que sean procedimentales y dos que no lo sean. Qu grupo es ms fcil de aprender y de usar? Justifquese la respuesta. Respuesta: Clasificacin de lenguajes de programacin: Procedimentales: C, C++, Java, Basic, Fortran, Cobol, Pascal No procedimentales: Lisp y Prolog Nota: Lisp y Prolog soportan algunas construcciones procedimentales, pero el ncleo de ambos lenguajes es no procedimental. En teora los lenguajes no procedimentales son ms fciles de aprender porque permiten al programador concentrarse en lo que necesita ser hecho, en vez de en cmo hacerlo. En la prctica esto no siempre es cierto, especialmente si los lenguajes procedimentales se aprenden primero.

1.7 Lstense los seis pasos principales que se deberan dar en la definicin de una base de datos para una empresa particular. Respuesta: Los seis pasos principales en la definicin de una base de datos para una determinada empresa particular son: Definir los requerimientos de alto nivel de la empresa (este paso genera un documento conocido como las especificaciones 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 fsico. Por cada problema conocido que haya de resolverse regularmente (por ejemplo, las tareas a realizar por usuarios Web o auxiliares) definir una interface de usuario para llevar a cabo la tarea y escribir los programas de aplicacin necesarios para implantar la interface del usuario. Crear/inicializar la base de datos. 1.8 Considrese un array de enteros bidimensionales de tamao n m que se va a usar en su lenguaje de programacin preferido. Usando el array como ejemplo, ilstrese la diferencia (a) entre los tres niveles de abstraccin y (b) entre un esquema e instancias. Respuesta: Sea tgrid un array de enteros bidimensionales de tamao n m. a. El nivel fsico seran simplemente m n (probablemente consecutivas) localizaciones de almacenamiento de cualquier tamao especificado para la implantacin (por ejemplo, 32 bits cada una). El nivel conceptual es un cuadrcula de cajas, cada una conteniendo posiblemente un entero, la cul es n cajas de alto por m de ancho. Hay 2m x n vistas posibles. Por ejemplo, una vista podra ser el array entero o una fila particular del array o todas las n filas, pero solamente columnas de 1 a i. Considrense 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 son instancias. Para ilustrarlo an ms, considrese el esquema array[1..2, 1..2] of integer. Dos instancias de este esquema son: 1 7 16 89 17 90 412 89 b.

CAPITULO

MODELO ENTIDAD-RELACIN
Este captulo introduce el modelo entidad-relacin en detalle. El captulo abarca numerosas caractersticas del modelo, varias de las cuales se pueden omitir dependiendo del alcance del curso que se ha planificado. Conjuntos de entidades dbiles (Apartado 2.6), diseo de restricciones (Apartado 2.7.4) y agregacin (Apartado 2.7.5), junto con los correspondientes sub apartados del Apartado 2.9 (Reduccin de un Esquema E-R a Tablas) se pueden omitir si se dispone de poco tiempo. Se recomienda tratar la especializacin (Apartado 2.7.1), al menos con algn detalle, dado que es un concepto importante en las bases de datos orientadas a objeto (Captulo 8). El propio modelo E-R y los diagramas E-R se emplean a menudo en el texto. Es importante que los estudiantes se encuentren cmodos con ellos. El modelo E-R es un excelente contexto para introducir a los estudiantes en la complejidad del diseo de las bases de datos. Para una empresa dada hay, a menudo, una extensa variedad de diseos E-R. Aunque algunas elecciones son arbitrarias, frecuentemente sucede que un diseo es intrnsecamente mejor que los restantes. Varios de los ejercicios ilustran este punto. La evaluacin de las bondades de un diseo E-R requiere un conocimiento de la empresa a modelar y de las aplicaciones a ejecutar. A menudo es posible dirigir a los estudiantes a un debate sobre los mritos relativos de diseos contrapuestos y as ilustrar, por ejemplo, como la comprensin de la aplicacin es frecuentemente la parte ms dura del diseo de la base de datos. Un nfasis considerable se ha puesto en la construccin de tablas a partir de diagramas E-R. Esto sirve para desarrollar la intuicin en la discusin del modelo relacional en los captulos siguientes. Tambin es til para convertir los conceptos abstractos, de las entidades y sus relaciones, en los ms concretos de las relaciones. Diversos textos sitan esta materia junto al modelo de datos relacional, en lugar de hacerlo el captulo del modelo E-R. Nuestra intencin, al situar esta materia aqu, es ayudar a los estudiantes a apreciar como se emplean, en la realidad los modelos de datos E-R, mientras se estudia el modelo E-R, en vez de hacerlo ms tarde. La materia sobre la conversin de diagramas E-R en tablas es bastante breve en algunos puntos del libro, aportando las transparencias un mejor tratamiento de los detalles que el implcitamente dejado en el libro. Cambios a la tercera edicin: En la cuarta edicin se han actualizado varios ejemplos, incluyendo relaciones ternarias (empleados, sucursales, trabajo en lugar de cliente, prstamo, sucursal) y agregaciones (administracin en lugar de responsable de prstamos), para hacerlos ms realistas. Tambin se han aadido ms ejemplos, as en la especializacin se emplean persona, cliente y empleado como ejemplo principal, en lugar de cuenta, cuentas control y cuentas de ahorro, que tambin hace el ejemplo ms realista. Se ha reemplazado D.N.I. por el ms global (y realista) id-cliente e id-empleado. Se han aadido notaciones para hacer restricciones sin conexin y aclarar la participacin total (solapamiento y participacin parcial estn por defecto). Se han introducido notaciones E-R alternativas, dado que numerosas aplicaciones del mundo real las emplean. Tambin se ha aportado una breve introduccin a los diagramas de clase UML, que estn empezando a emplearse cada vez ms en lugar de los diagramas E-R, en herramientas tales como el diseador de Oracle. Se ha abandonado el alcance de las dependencias de existencia, dado que las restricciones de participacin total aportan una restriccin muy parecida. La distincin entre participacin total y dependencias de existencia es demasiado pequea como para ser tenida en cuenta y slo confunde a los estudiantes. Las cuestiones de diseo se discuten en mayor detalle.

Figura 2.1

Diagrama E-R para una compaa de seguros de coches.

Ejercicios
2.1 Explquense las diferencias entre los trminos clave primaria, clave candidata y superclave.

Respuesta: Una superclave es un conjunto de uno o ms atributos que, tomados colectivamente, permiten identificar de forma nica una entidad en el conjunto de entidades. Una superclave puede contener atributos ajenos. Si K es una superclave, entonces tambin lo es cualquier superconjunto de K. Una superclave para la que ningn subconjunto propio es tambin superclave, se denomina clave candidata. Es posible que varios conjuntos diferentes de atributos puedan servir como claves candidatas. La clave primaria es una de las claves candidatas que se elige, por el diseador de la base de datos, como el elemento principal para identificar las entidades dentro un conjunto de entidades. 2.2 Constryase un diagrama E-R para una compaa de seguros de coches cuyos clientes poseen uno o ms coches. Cada coche tiene asociado un nmero, de cero a cualquier valor, que almacena el nmero de accidentes. Respuesta: Vase la Figura 2.1 2.3 Constryase un diagrama E-R para un hospital con un conjunto de pacientes y un conjunto de mdicos. Asciese con cada paciente un registro de las diferentes pruebas y exmenes realizados. Respuesta: Vase la Figura 2.2 2.4 Una oficina de registro de una universidad mantiene datos acerca de las siguientes entidades: (a) cursos, incluyendo nmero, ttulo, crditos, programa de estudios y requisitos previos; (b) ofertas de cursos, incluyendo nmero del curso, ao, semestre, nmero de seccin, profesor(es), horarios y aulas; (c) estudiantes, incluyendo id-estudiante, nombre y programa; y (d) profesores, incluyendo nmero de identificacin, nombre, departamento y ttulo. Adems, se deben modelar adecuadamente la matriculacin de los estudiantes en los cursos y las calificaciones otorgadas en cada uno. Constryase un diagrama E-R para la oficina de registro. Documntense todas las suposiciones que se hagan acerca de las restricciones de correspondencia.

Respuesta: Vase la Figura 2.3. En la respuesta dada aqu, los principales conjuntos de entidades son estudiantes, cursos, ofertas-cursos y profesores. El conjunto de entidades ofertas-cursos es un conjunto de entidad dbil dependiente de curso. Las suposiciones hechas son: a. una clase slo se rene en un lugar y en un momento preciso. Este diagrama E-R no puede modelar una clase que se rena en diferentes lugares y en diferentes momentos. b. No hay garanta de que la base de datos no tenga dos clases reunindose en el mismo lugar y al mismo tiempo.

Figura 2.2

Diagrama E-R para un hospital.

Figura 2.3

Diagrama E-R para una universidad.

2.5 Considrese una base de datos cuyo objeto es registrar las notas que obtienen los estudiantes en los distintos exmenes de los diferentes cursos ofertados. a. Constryase un diagrama E-R que modele los exmenes como entidades y haga uso de una relacin ternaria para la base de datos anterior. b. Constryase un diagrama E-R alternativo que emplee slo una relacin binaria entre estudiantes y ofertas-cursos. Asegrese de que slo existe una relacin entre un determinado estudiante y un par ofertascursos, y que an se pueden representar las notas que obtiene un estudiante en los diferentes exmenes de un curso ofertado. Respuesta: a. Vase la Figura 2.4 b. Vase la Figura 2.5

Figura 2.4 2.6

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

Constryanse 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, direccin) coche (matrcula, ao, modelo) accidente (nmero-informe, fecha, lugar) participado (id-conductor, matrcula, nmero-informe, cantidad-daos) b. Tablas de hospitales: pacientes (id-paciente, nombre, seguro, fecha-admisin, 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)

c.

Tablas del registro de la universidad: estudiante (id-estudiante, nombre, programa) curso (nmero-curso, ttulo, programa-estudios, crditos) ofertas-cursos (nmero-curso, nmero-seccin, ao, semestre, hora, aula) profesor (id-profesor, nombre, departamento, ttulo) matrculas (id-estudiante, nmero-curso, nmero-seccin, semestre, ao, calificacin) ensea (nmero-curso, nmero-seccin, semestre, ao, id-profesor) requerimientos (curso-principal, requisitos-previos)

Figura 2.5

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

2.7 Disese un diagrama E-R para seguir la pista de las hazaas de su equipo de deportes favorito. Se deberan almacenar los partidos jugados, los resultados de cada partido, los jugadores y las estadsticas individuales de cada jugador, para cada partido. Las estadsticas de resumen se deberan modelar como atributos derivados. Respuesta: Vase la Figura 2.6 2.8 Extindase el diagrama E-R del ejercicio anterior, a fin de almacenar la misma informacin para todos los equipos de una liga. Respuesta: Vase la Figura 2.7. Ntese que un jugador slo puede pertenecer a un equipo durante una temporada. 2.9 Explquense las diferencias entre conjunto de entidades dbiles y fuertes.

Respuesta: Un conjunto de entidades fuertes tiene una clave primaria. Todas las tuplas del conjunto se distinguen por medio de esa clave. Un conjunto de entidades dbiles no tiene clave primaria, a menos que se incluyan los atributos del conjunto de entidades fuertes del que depende. En un conjunto de entidades dbiles las tuplas estn divididas segn su relacin con las de la entidad fuerte. Las tuplas de cada divisin se

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

Figura 2.6

Diagrama E-R para las estadsticas del equipo favorito.

Figura 2.7

Diagrama E-R para las estadsticas de todos los equipos.

2.10 Se puede convertir cualquier conjunto de entidades dbiles en un conjunto de entidades fuertes, simplemente aadiendo los atributos apropiados. Por qu, entonces, se tienen conjuntos de entidades dbiles? Respuesta: Se tienen entidades dbiles por varias razones: Se desea evitar la duplicidad de datos y las consiguientes posibles inconsistencias causadas por las claves duplicadas de la entidad fuerte. Las entidades dbiles reflejan la estructura lgica de una entidad que es dependiente de otra. Las entidades dbiles se pueden borrar automticamente cuando se borra la entidad fuerte de la que dependen. Las entidades dbiles se pueden almacenar fsicamente con sus entidades fuertes.

2.11

Defnase el concepto de agregacin. Propnganse dos ejemplos para los que este concepto es til.

Figura 2.8

Ejemplo 1 de diagrama E-R de agregacin.

Figura 2.9

Ejemplo 2 de diagrama E-R de agregacin.

Respuesta: La agregacin es una abstraccin a travs de la cual las relaciones se tratan como entidades de nivel ms alto. As, la relacin entre las entidades A y B se trata como si fuera una entidad C. Algunos ejemplos de esto son: a. Empleados que trabajan por proyectos. Un empleado trabajando para un proyecto en particular utiliza diversa maquinaria. Vase la Figura 2.8 b. Los fabricantes tienen asociaciones con distribuidores para la distribucin de productos. Cada asociacin tiene especificado el conjunto de productos que se van a distribuir. Vase la Figura 2.9

Figura 2.10

Diagrama E-R para el Ejercicio 2.12.

2.12 Considrese el diagrama E-R de la Figura 2.29, que modela una librera en lnea. a. Lstense los conjuntos de entidades y sus claves primarias. b. Supngase que la librera aade casetes de msica y discos compactos a su coleccin. El mismo elemento musical puede estar presente en formato de casete o de disco compacto con diferentes precios. Extindase el diagrama E-R para modelar este aadido, ignorando el efecto sobre las cestas de la compra. c. Extindase ahora el diagrama E-R usando generalizacin para modelar el caso en que una cesta de la compra pueda contener cualquier combinacin de libros, casetes de msica o discos compactos. Respuesta: 2.13 Considrese un diagrama E-R en el que el mismo conjunto de entidades aparece varias veces. Por qu est permitida esta redundancia, una mala prctica que se debera evitar siempre que sea posible? Respuesta: Al utilizar un conjunto de entidades muchas veces se estn 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 son atletas, pero este modelo no lo mostrar.

Figura 2.11

Diagrama E-R con duplicidad de entidades.

2.14 Considrese la base de datos de una universidad para la planificacin de las aulas para los exmenes finales. Esta base de datos se modelara mediante un nico conjunto de entidades examen, con atributos nombre-curso, nmero-seccin, nmero-aula y hora. Alternativamente, se podran definir uno o ms conjuntos de entidades, con conjuntos de relaciones para sustituir algunos de los atributos del conjunto de entidades examen, como curso con atributos nombre, departamento y nmero-c seccin con atributos nmero-s y matriculados, que es un conjunto de entidades dbiles dependiente de curso aula con atributos nmero-a, capacidad y edificio a. Mustrese en un diagrama E-R el uso de los tres conjuntos de entidades adicionales listados. b. Explquense qu aplicaciones caractersticas influiran en la decisin de incluir o no, cada uno de los conjuntos de entidades adicionales. Respuesta: a. Vase la Figura 2.12 b. Los conjuntos de entidades adicionales son tiles si se desea almacenar sus atributos como parte de la base de datos. Para el conjunto de entidades curso se han elegido tres atributos a incluir. Si se incluyera solamente la clave primaria (nmero-c) y si los cursos tuvieran slo una seccin, entonces sera apropiado reemplazar los conjuntos de entidades curso (y seccin) por un atributo (nmero-c) de examen. La razn de que no sea aconsejable tener mltiples atributos de curso como atributos de examen es que, entonces, sera difcil el mantenimiento de los datos en los cursos, en concreto si un curso tuviera varios exmenes o ninguno. Comentarios similares aplican al conjunto de entidades aula.

Figura 2.12

Diagrama E-R para el calendario de exmenes.

2.15 Cuando se disea un diagrama E-R para un desarrollo particular se tienen varias alternativas entre las que hay que decidir. a. Qu criterio se deber considerar para hacer la eleccin apropiada? b. Disense tres diagramas E-R alternativos para representar la oficina de registro de la universidad del Ejercicio 2.4. Lstense las ventajas de cada uno. Decdase por una de las alternativas. Respuesta: a. Los criterios a emplear son diseos intuitivos, expresiones fieles del concepto de mundo real y eficiencia. Un modelo que esboza claramente los objetos y las relaciones de una forma intuitiva es mejor que uno que no lo hace, porque es ms fcil de usar y de cambiar. Decidirse entre un atributo y conjunto de entidades para representar un objeto y decidirse entre un conjunto de entidades y un conjunto de relaciones, influye en la precisin con que se representan los conceptos del mundo real. Si no se hace la eleccin de diseo correcta, resultarn inconsistencias y /o prdidas de informacin. Es preferible, por razones obvias, un modelo que se pueda implantar de una forma eficiente. b. Considrense tres alternativas diferentes para el problema del Ejercicio 2.4.

Vase la Figura 2.13 Vase la Figura 2.14 Vase la Figura 2.15 Cada alternativa tiene ventajas, dependiendo del uso previsto de la base de datos. El esquema 2.13 se ha visto anteriormente. El esquema 2.15 no requiere una entidad independiente para requisitos-previos. Sin embargo, ser difcil almacenar todos los requisitos previos(siendo un atributo multivalorado). El esquema 2.14 trata los requisitos previos, as como las aulas, como entidades independientes, siendo til para la recogida de datos sobre los requisitos previos y el uso las habitaciones. El esquema 2.13 est entre medias de los otros, trata los requisitos previos como entidades independientes, pero las aulas no. Dado que una oficina de registro probablemente ha de responder preguntas generales sobre el nmero de clases que tiene un estudiante, los requisitos previos de un curso o acerca de los lugares concretos en que tienen lugar las clases, el esquema 2.14 es seguramente la mejor eleccin.

Figura 2.13

Diagrama E-R para una universidad (a).

Figura 2.14

Diagrama E-R para una universidad (b).

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 trminos de estructura en un esquema de desarrollo? a. El grafo es inconexo. b. El grafo es acclico. Respuesta: a. Si un par de conjuntos de entidades estn conectados por una lnea en un diagrama E-R, los conjuntos de entidades estn relacionados, aunque sea indirectamente. Un grafo desconectado implica que hay parejas de conjuntos de entidades que no estn relacionadas entre s. Si se divide el grafo en los componentes conectados se tiene, en efecto, una base de datos independiente. b. Como se ha indicado en la respuesta del apartado anterior, una conexin en el grafo entre un par de conjuntos de entidades indica una relacin (posiblemente indirecta) entre ellos. Si hay un ciclo en el grafo, entonces cada par de conjuntos de entidades del ciclo estn relacionadas entre s en, al menos, dos maneras distintas. Si el diagrama E-R es acclico hay slo una conexin entre cada par de conjuntos de entidades y, por lo tanto, slo una relacin. 2.17 En el Apartado 2.4.3 se represent una relacin ternaria (Figura 2.30a) usando relaciones binarias, como se muestra en la Figura 2.30b. Considrese la alternativa mostrada en la Figura 2.30c. Disctanse las ventajas relativas de estas dos representaciones alternativas entre una relacin ternaria y relaciones binarias. Respuesta: El modelo de la Figura 2.30c no ser capaz de representar todas las relaciones ternarias. Considrese el conjunto de relaciones ABC siguiente.

Figura 2.30

Diagrama E-R para el Ejercicio 2.17 (no se muestran los atributos). A 1 4 4 B 2 2 8 C 3 7 3

Si ABC est partido en tres conjuntos de relaciones AB, BC y AC, los tres implicarn que la relacin (4, 2, 3) es una parte de ABC. 2.18 Considrese la representacin de una relacin ternaria usando relaciones binarias como se describi en el Apartado 2.4.3 (mostrado en la figura 2.30b). a. Mustrese una instancia sencilla de E, A, B, C, RA, RBy RC que no pueda corresponderse con ninguna instancia de A, B, C y R. b. Modifquese el diagrama E-R de la Figura 2.30b para introducir restricciones que garanticen que cualquier ejemplar de E, A, B, C, RA, RB y RC que satisfaga las restricciones, corresponda a una instancia de A, B, C y R. c. Modifquese la traduccin anterior para manejar restricciones de participacin total sobre las relaciones ternarias. d. La representacin anterior requiere que se cree un atributo clave primaria para E. Mustrese la forma en que tratar E, como un conjunto de entidades dbiles, de manera que no se requiera un atributo clave primaria. 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 y RC.

Figura 2.31

Diagrama E-R del Ejercicio 2.31b.

Figura 2.32

Diagrama E-R del Ejercicio 2.31d.

b. Vase la Figura 2.31. La idea es introducir restricciones de participacin total entre E y las relaciones RA, RB y RC, para que cada tupla en E tenga una relacin con A, B y C. c. Supngase que A participa totalmente en la relacin R, entonces introdzcase una restriccin de participacin total entre A y RA. d. Considrese a E como un conjunto de entidades dbiles y a RA, RB y RC como su conjunto de relaciones identificadoras. Vase la Figura 2.32. 2.19 Un conjunto de entidades dbiles siempre se puede convertir en un conjunto de entidades fuertes, aadindole a sus atributos los de la clave primaria de su conjunto de entidades identificadoras. Descrbase qu tipo de redundancia resultara si se hiciese as. Respuesta: La clave primaria de un conjunto de entidades dbiles se puede deducir de su relacin con el conjunto de entidades fuertes. Si se aaden los atributos de la clave primaria al conjunto de entidades dbiles, estarn presentes tanto en el conjunto de entidades como en el de relaciones y sern lo mismo. En consecuencia, habr redundancia. 2.20 Disese una jerarqua de especializacin-generalizacin para las ventas de una compaa de vehculos a motor. La compaa vende motocicletas, coches de pasajeros, mono volmenes y autobuses. Justifquese la colocacin de los atributos en cada nivel de la jerarqua. Explquese por qu se deberan colocar en un nivel ms alto o ms bajo. Respuesta: La Figura 2.33 presenta una posible jerarqua; podra haber muy distintas soluciones. La jerarqua de especializacin-generalizacin para la compaa de vehculos a motor se muestra en la figura. Los atributos modelo, tasa-impuestos-ventas y volumen-ventas son necesarios para todos los tipos de vehculos. Los vehculos comerciales son objeto del impuesto de vehculos comerciales y cada tipo tiene una capacidad

de transporte de pasajeros especfica de l. Algunos tipos de vehculos no comerciales estn sujetos al impuesto de vehculos de lujo. Los coches solamente pueden se de varios tipos, tales como coches deportivos, sedn, familiares, etc., por tanto el atributo tipo.

Figura 2.33

Diagrama E-R de una compaa que vende vehculos a motor.

2.21 Explquese la distincin entre las restricciones de diseo definidas por condicin y las definidas por el usuario. Cules de estas restricciones se pueden comprobar automticamente? Explquese la respuesta. Respuesta: En una jerarqua de especializacin-generalizacin debe ser posible decidir qu entidades son miembros del conjunto de entidades de nivel inferior. En una restriccin de diseo definidas por condicin, la pertenencia al conjunto de entidades de nivel inferior se evala partiendo de si una entidad cumple, o no, una condicin explcita o predicado. Los conjuntos de entidades de bajo nivel definidas por usuario no estn restringidos por una condicin de pertenencia; Ms bien las entidades estn asignadas, por el usuario de la base de datos, a un conjunto de entidades determinado. Las restricciones de diseo definidas por condicin slo se pueden manejar automticamente por el sistema. Siempre que se inserta cualquier tupla en la base de datos, se puede decidir automticamente su pertenencia a los varios conjuntos de entidades de nivel inferior, mediante la evaluacin de los correspondientes predicados de pertenencia. Igualmente, cuando se actualiza una tupla, se puede volver a evaluar automticamente su pertenencia a los varios conjuntos de entidades. 2.22 Explquese la distincin entre las restricciones disjuntas y solapadas.

Respuesta: En una restriccin de diseo disjunta, una entidad no puede pertenecer a ms de un conjunto de entidades de nivel inferior. En generalizaciones solapadas la misma entidad puede pertenecer a ms de un conjunto de entidades de nivel inferior. As, en el ejemplo del libro sobre los grupos de trabajo de empleados, un jefe puede participar en ms de un grupo de trabajo.

Figura 2.34

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

Figura 2.35 2.23

UML equivalente de la Figura 2.9c

Explquese la distincin entre las restricciones totales y parciales.

Respuesta: En una restriccin de diseo total, cada entidad de nivel superior deber pertenecer a un conjunto de entidades de nivel inferior. Lo mismo no tiene por qu ser cierto en una restriccin de diseo parcial. Por ejemplo, algunos empleados pueden no pertenecer a ningn grupo de trabajo. 2.24 En la Figura 2.31 se muestra una estructura reticular de generalizacin y especializacin. Para los conjuntos de entidades A, B y C explquese cmo se heredan los atributos desde los conjuntos de entidades de nivel ms alto X e Y. Disctase cmo manejar el caso en que un atributo de X tiene el mismo nombre que un atributo de Y. Respuesta: A hereda todos los atributos de X y, adems, puede definir los suyos propios. Anlogamente C hereda, junto con sus propios atributos, todos los de Y. B hereda los atributos de X e Y. Si algunos de los atributos nombre pertenecen a X e Y, puede referirse a B mediante el nombre cualificado X.nombre o Y.nombre. 2.25 Dibjense equivalentes UML de los diagramas E-R de las Figuras 2.9c, 2.10, 2.12, 2.13 y 2.17.

Respuesta: Vanse las Figuras 2.35 a 2.39

2.26 Considrense dos bancos que deciden fusionarse. Asmase que ambos bancos usan exactamente el mismo esquema de bases de datos E-R - el de la Figura 2.22. (Esta suposicin es, naturalmente, muy irreal; se considera un caso ms realista en el Apartado 19.8). Si el banco fusionado tiene slo una base de datos, hay varios 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 nmeros de prstamo o de cuenta fueran usados en ambos bancos originales (para diferentes prstamos o cuentas, por supuesto). Por cada uno de estos problemas potenciales descrbase por qu existen de hecho dificultades potenciales. Propngase una solucin a este problema. En la solucin, explquese cualquier cambio que se tenga que hacer y descrbase cmo 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

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 los clientes, como es el caso del D.N.I. La solucin general se presenta en el siguiente ejercicio. Cada uno de los problemas mencionados tiene dificultades potenciales.

a. nombre-sucursal es la clave primaria del conjunto de entidades sucursal. Por lo tanto, al fusionar los conjuntos de entidades de los dos bancos, si ambos tienen una sucursal con el mismo nombre uno de ellos se perder. 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 se borrarn. Por consiguiente se actualizarn las relaciones, de entre los tres conjuntos mencionados, que estn involucradas con las tuplas borradas. Ntese que si la representacin tabular de un conjunto de relaciones se obtiene tomando una unin 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 prstamos o cuentas con el mismo nmero en ambos bancos, es similar al causado por las sucursales de los dos bancos con igual nombre-sucursal. Para resolver los problemas originados por la fusin no es necesario modificar el esquema. Mezclar los conjuntos de entidades cliente eliminando tuplas duplicadas con el mismo campo D.N.I. Antes de fusionar los conjuntos de entidades sucursal, prefijar el nombre del banco antiguo al atributo nombre-sucursal en cada tupla. Los conjuntos de entidades empleado y pago se pueden fusionar directamente. No hay que realizar ninguna eliminacin de duplicados. Antes de fusionar los conjuntos de entidades prstamos y cuentas, siempre que haya un nmero comn en ambos bancos, el nmero antiguo se reemplaza por un nmero nuevo nico, en uno de los bancos. Los conjuntos de relaciones siguientes se pueden fusionar. Cualquier relacin, en un conjunto de relaciones que implica una tupla que se ha modificado previamente por la fusin, se modifica para conservar el mismo significado. Por ejemplo, sea 1611 un nmero de prstamo comn en ambos bancos antes de la fusin y supongamos que se remplaza por un nuevo y nico nmero 2611 en uno de los bancos, digamos en el banco 2. Ahora todas las relaciones en prestatario, prstamo-sucursal y prstamo-pago del banco 2 que estn referidas al nmero de prstamo 1611, habrn de modificarse para referirse a 2611. Entonces la fusin con los conjuntos de relaciones correspondientes del banco 1 podrn tener lugar. 2.27 Reconsidrese la situacin descrita en el Ejercicio 2.26 bajo la suposicin de que un banco est en Espaa y el otro en Portugal. Como antes, los bancos usan el esquema de la Figura 2.22, excepto que el banco portugus usa un nmero de identificacin asignado por el gobierno portugus, mientras que el banco espaol usa el D.N.I. espaol para la identificacin de clientes. Qu problemas (adems de los identificados en el Ejercicio 2.24) ocurriran en este caso multinacional? Cmo se podran resolver? Asegrese de considerar ambos esquemas y los valores de los datos actuales en la construccin de la respuesta. Respuesta: Este es un caso en el que los esquemas de los dos bancos difieren, con lo que la fusin se hace ms difcil. El atributo de identificacin para las personas en Espaa es el D.N.I. y en Portugal el segurosocial. Por lo tanto, el esquema fusionado no puede emplear ninguno de estos. En su lugar se introduce un nuevo atributo id-persona que se usa por todos en el esquema fusionado. No es necesario ningn otro cambio en el esquema. Los valores del atributo id-persona se pueden obtener de diferentes maneras. Una forma sera prefijar un cdigo de pas 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 sera asignar nuevos nmeros, empezando en el 1 y hacia arriba, un nmero para cada valor de D.N.I. y seguro-social en las antiguas bases de datos. Una vez hecho esto, se puede proceder a la fusin de acuerdo a la respuesta de la pregunta anterior. Si un conjunto de relaciones en particular, por ejemplo prestatario, implica slo a clientes espaoles, se puede expresar en la base de datos fusionada especializando el conjunto de entidades cliente en e-cliente y p-cliente, y haciendo que slo e-cliente participe en el prestatario fusionado. Anlogamente, empleados se puede especializar si es necesario.

CAPITULO

MODELO RELACIONAL
Este captulo presenta el modelo relacional y tres lenguajes relacionales. El modelo relacional (Apartado 3.1) se emplea intensamente a travs del texto, as como el lgebra relacional (Apartado 3.2). El captulo tambin abarca el clculo relacional de tuplas (Apartado 3.6) y el clculo relacional de dominios (Apartado 3.7) (el cual es la base del lenguaje QBE descrito en el Captulo 5). Las clases que enfaticen slo el SQL pueden omitir los lenguajes de clculo relacional. Nuestra notacin para el clculo relacional de tuplas hace que resulte fcil presentar el concepto de una consulta segura. El concepto de seguridad para el clculo relacional de dominios, aunque idntico al clculo de tuplas, es mucho ms engorroso desde el punto de vista de la notacin y requiere una presentacin cuidadosa. Esta consideracin puede sugerir que se aporte un poco menos de nfasis en los clculos de dominios, para las clases que no hayan planificado tratar QBE. El Apartado 3.3 presenta operaciones de lgebra relacional extendidas, tales como reuniones externas y agregaciones. La evolucin de los lenguajes de consultas, tales como SQL, indica claramente la importancia de estas operaciones extendidas. Algunas de estas operaciones, como las reuniones externas, pueden ser expresadas por medio del clculo relacional de tuplas / dominios, mientras las extensiones son requeridas para otras operaciones, como es el caso de la agregacin. Hemos decidido no presentar tales extensiones al clculo relacional y, en cambio, restringir nuestra atencin a las extensiones del lgebra.

Figura 3.38. Diagrama E-R

Ejercicios
3.1 Disese una base de datos relacional para la oficina de registro de una universidad. La oficina conserva datos sobre cada curso, incluyendo el profesor, el nmero de estudiantes matriculados y la hora y el lugar de las clases. Por cada pareja estudiante curso, se guarda una calificacin. Respuesta: Los atributos subrayados indican la clave primaria. estudiante (id-estudiante, nombre, programa) curso (nmero-curso, ttulo, programa-estudios, crditos) ofertas-cursos (nmero-curso, nmero-seccin, ao, semestre, hora, aula) profesor (id-profesor, nombre, departamento, ttulo) matrculas (id-estudiante, nmero-curso, nmero-seccin, semestre, ao, calificacin) ensea (nmero-curso, nmero-seccin, semestre, ao, id-profesor) requerimientos (curso-principal, requisitos-previos) 3.2 Descrbanse las diferencias de significado entre los trminos relacin y esquema de la relacin. Ilstrese la respuesta haciendo referencia a la solucin propuesta para el Ejercicio 3.1. Respuesta: Un esquema de la relacin es una definicin de tipos y una relacin es una instancia de ese esquema. Por ejemplo, estudiante (ss#, nombre) es un esquema de la relacin y ss# nombre es una relacin basada en ese esquema.
ss#

123-45-6789 456-78-9123

nombre Tom Jones Joe Brown

3.3

Disese 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 continuacin. persona (id-conductor, nombre, direccin) coche (matrcula, ao, modelo) accidente (nmero-informe, lugar, fecha) posee (id-conductor, matrcula) participado (nmero-informe, id-conductor, matrcula, importe-daos) empleado (nombre-persona, calle, ciudad) trabaja (nombre-persona, nombre-compaa, sueldo) compaa (nombre-compaa, 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 Captulo 2 se mostr la manera de representar los conjuntos de relaciones de varios a varios, de varios a uno, de uno a varios y de uno a uno. Explicar la manera en que las claves primarias ayudan a representar estos conjuntos de relaciones en el modelo relacional. Respuesta: Supngase que la clave primaria del esquema de la relacin R es {Ai1, Ai2 , ...,Ain} y que la clave primaria del esquema de la relacin S es {Bi1, Bi2 , ...,Bim}. Entonces una relacin entre los dos conjuntos se puede representar como una tupla (Ai1, Ai2 , ...,Ain, Bi1, Bi2 , ...,Bim). En una relacin de uno a uno, cada valor en {Ai1, Ai2 , ...,Ain} aparecer en una tupla e igualmete para {Bi1, Bi2 , ...,Bim}. En una relacin de varios a uno (por ejemplo 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 relacin de varios a varios, los valores en ambos {Ai1, Ai2 , ...,Ain} y {Bi1, Bi2 , ...,Bim}aparecern 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 ms de una vez. 3.5 Considrese la base de datos relacional de la Figura 3.39, donde las claves primarias estn subrayadas. Formlese una expresin del lgebra relacional, otra del clculo relacional de tuplas y una tercera del clculo relacional 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 Banco Importante. c. Averiguar el nombre, la calle y ciudad de residencia, de todos los empleados que trabajan para el Banco 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 que la compaa para la que trabajan. e. Averiguar el nombre de todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes. f. Averiguar el nombre de todos los empleados de esta base de datos que no trabajan para el Banco Importante. g. Averiguar el nombre de todos los empleados que ganan ms que cualquier empleado del Banco Pequeo. h. Supngase que las compaas pueden estar ubicadas en varias ciudades. Buscar todas las empresas con sede en todas las ciudades en las que tiene sede el Banco Pequeo.

Respuesta: a. nombre-persona (snombre-compaa = Banco Importante (trabaja)) b. nombre-persona (empleado |x| (snombre-compaa = Banco Importante (trabaja))) nombre-persona, calle, ciudad (s(nombre-compaa = Banco Importante sueldo > 2.000.000) trabaja |x| empleado)
1

c.

d. e.
1

nombre-persona (empleado |x| trabaja |x| compaa) nombre-persona ((empleado |x| jefe) |x| (nombre-jefe = empleado2.nombre-persona empleado.calle = empleado2.calle empleado.ciudad = empleado2.ciudad)(r empleado2 (empleado)))

f. Las soluciones siguientes asumen que todas las personas trabajan para una compaa. 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. Ms adelante se dan soluciones para este caso ms realista. nombre-persona (snombre-compaa Banco Importante (trabaja)) Si las personas no pueden trabajar para cualquier compaa: nombre-persona (empleado) - nombre-persona (s(nombre-compaa = Banco Importante) (trabaja)) g.
1

nombre-persona (trabaja) - trabaja.nombre-persona (trabaja |x| (trabaja.sueldo trabaja2.sueldo trabaja2.cpnmbre-compaa =Banco Pequeo) r trabaja2 (trabaja))) Nota: El Banco Pequeo se incluir en cada respuesta. nombre-compaa (compaa (ciudad (snombre-compaa = Banco Pequeo (compaa))))

h.

3.6 Considrese la relacin de la Figura 3.21, que muestra el resultado de la consulta Avergese el nombre de todos los clientes que tienen un prstamo en el banco. Escrbase de nuevo la consulta para incluir no solamente el nombre, sino tambin la ciudad de residencia de cada cliente. Obsrvese que ahora el cliente Sotoca ya no aparece en el resultado, aunque en realidad tiene un prstamo del banco. a. Explquese por qu Sotoca no aparece en el resultado. b. Supngase que desea que Sotoca aparezca en el resultado. Cmo habra que modificar la base de datos para conseguirlo? c. Nuevamente, supngase que desea que Sotoca aparezca en el resultado. Escrbase una consulta empleando una reunin externa que cumpla esta condicin sin que haya que modificar la base de datos. Respuesta: La nueva consulta es nombre-cliente,ciudad-cliente,importe(prestatario |x| prstamo |x| cliente)
1 1

a. Aunque Sotoca tenga un prstamo, en la relacin cliente no aparece ninguna direccin para Sotoca. Dado que ninguna tupla de cliente se une con la tupla Sotoca de prestatario, Sotoca no puede aparecer en el resultado. b. La mejor solucin es insertar la direccin de Sotoca en la relacin cliente. Si se desconoce la direccin, se pueden emplear valores nulos. Si el sistema de base de datos no soporta nulos, se puede emplear un valor especial (tal como desconocido) para la ciudad y la calle de Sotoca. El valor especial escogido no

debe ser un nombre que se pueda corresponder con el de una calle o ciudad real. c. nombre-cliente,ciudad-cliente,importe((prestatario |x| prstamo) ]x| cliente)
1 1 l

3.7 Las operaciones de reunin externa amplan la operacin reunin natural, de manera que las tuplas de las relaciones participantes no se pierdan en el resultado de la reunin. Descrbase la manera en que la operacin reunin zeta puede ampliarse para que las tuplas de la relacin de la izquierda, derecha, o ambas, no se pierdan en el resultado de una reunin zeta. Respuesta: a. La reunin zeta externa por la izquierda de r(R) y s(S) (r ]x|q s) se puede definir como (r |x|q s) ((r - R(r |x|q s)) (nulo,nulo, . . ., nulo)) La tupla de nulos es de tamao igual al nmero de atributos en S. b. La reunin zeta externa por la derecha de r(R) y s(S) (r |x[q s) se puede definir como (r |x|q s) ((nulo,nulo, . ., nulo) (s - s(r |x|q s))) La tupla de nulos es de tamao igual al nmero de atributos en R. c. La reunin zeta externa completa de r(R) y s(S) (r ]x[q s) se puede definir como (r |x|q s) ((nulo,nulo, . . ., nulo) (s - s(r |x|q s))) ((r - R(r |x|q s)) (nulo,nulo, . . ., nulo)) La primera tupla de nulos es de tamao igual al nmero de atributos en R y la segunda es de tamao igual al nmero de atributos en S. 3.8 Considrese la base de datos relacional de la Figura 3.39. Se da una expresin del lgebra relacional para cada peticin: 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 slo un 3%. e. Borrar todas las tuplas de la relacin trabaja para los empleados del Banco Pequeo. Respuesta: a. empleado Pnombre-persona,calle,Tres Cantos (snombre-persona =Santos(empleado)) (empleado - snombre-persona =Santos(empleado)) b. trabaja Pnombre-persona,nombre-compaa, 1.1 * salario ( (s(nombre-compaa = Banco Importante) (trabaja)) (trabaja - snombre-compaa = Banco Importante (trabaja))

c. La sintaxis de actualizacin permite referenciar slo a una relacin sencilla. Dado que esta actualizacin 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 relacin temporal (t1) Despus, crear una relacin temporal (t2) que contenga las nuevas tuplas. Finalmente borrar las tuplas en t1, desde trabaja, e insertar las tuplas t2. t1 Ptrabaja.nombre-persona, nombre-compaa, salario (strabaja.nombre-persona = nombre-jefe (trabaja jefe)) t2 Pnombre-persona,nombre-compaa, 1.1 * salario (t1) trabaja(trabaja - t1) t2 d. La misma situacin surge aqu. Como antes, t1, contiene las tuplas que se han de actualizar y t2 contiene estas tuplas en su forma actualizada.

t1 Ptrabaja.nombre-persona, nombre-compaa, salario (strabaja.nombre-persona = nombre-jefe (trabaja jefe)) t2 Ptrabaja.nombre-persona, nombre-compaa, salario*1.03 (st1.salario * 1.1 > 100.000(t1)) t2 t2 (Ptrabaja.nombre-persona, nombre-compaa, salario*1.1 (st1.salario * 1.1 100.000(t1)) trabaja(trabaja - t1) t2 e. trabaja trabaja - snombre-compaa = Banco Pequeo (trabaja) 3.9 Utilizando el ejemplo bancario, escrbanse consultas del lgebra relacional para averiguar las cuentas por ms de dos clientes: a. Utilizando una funcin de agregacin. b. Sin utilizar funciones de agregacin. Respuesta: a. t1 nmero-cuenta Gcount nombre-cliente (impositor) nmero-cuenta (snmero-titulares>2 (rtitulares-cuenta (nmero-cuenta,nmero-titulares)(t1))) b. t1 (rd1(impositor) rd2(impositor) rd3(impositor)) t2 s(d1.nmero-cuenta = d2.nmero-cuenta = d3.nmero-cuenta)(t1) d1.nmero-cuenta (s(d1.nombre-cliente d2.nombre-cliente d2.nombre-cliente d3.nombre-cliente d3.nombre-cliente d1.nombre-cliente )(t2))

3.10 Considrese la base de datos relacional de la Figura 3.39. Se da una expresin del lgebra relacional para cada una de las consultas siguientes: a. Averiguar la compaa con mayor nmero de empleados. b. Averiguar la compaa con nmina (suma de sueldos de sus empleados) ms reducida. c. Averiguar las compaas cuyos empleados ganan un sueldo ms alto, en media, que el sueldo medio del Banco Importante. Respuesta: a. t1 nombre-compaa G count-distinct nombre-persona (trabaja) t2 max nmero-empleados(r fuerza-compaa (nombre-compaa,nmero-empleados)(t1)) nombre-compaa(r t3 (nombre-compaa,nmero-empleados)(t1) |x| r t4 (nmero-empleados)(t2)) b. t1 nombre-compaa G sum sueldo (trabaja) t2 min nmina (r nmina-compaa (nombre-compaa,nmina)(t1)) nombre-compaa(r t3 (nombre-compaa,nmina)(t1) |x| r t4 (nmina)(t2)) t1 nombre-compaa G avg sueldo (trabaja) t2 snombre-compaa = Banco Importante (t1) t3.nombre-compaa((r t3(nombre-compaa,salario-medio)(t1)) x| t3.salario-medio > banco-importante.salario-medio (r banco-importante (nombre-compaa,salario-medio)(t2))) Dense dos motivos por los que se puede decidir definir una vista.

c.

| 3.11

Respuesta: a. Las condiciones de seguridad pueden requerir que la base de datos lgica no sea totalmente visible para todos los usuarios. b. Puede que se desee crear un conjunto personalizado de relaciones que se adapte mejor que el modelo lgico a la intuicin de un usuario concreto.

3.12 Ctense dos problemas importantes del procesamiento de la operacin actualizacin, expresadas en trminos 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 trminos de vistas, deben traducirse en modificaciones de las relaciones reales en el modelo lgico de la base de datos. a. Dado que la vista puede no tener todos los atributos de las tablas subyacentes, la insercin de una tupla en la vista insertar tuplas en las tablas subyacentes, tomando valores nulos los atributos no participan de la vista. Esto puede no ser conveniente, especialmente si el atributo en cuestin es parte de la clave primaria de la tabla. b. Si una vista es una reunin de varias tablas subyacentes y una insercin da como resultado tuplas con nulos en las columnas de la reunin, no se lograr el efecto deseado de la insercin. En otras palabras, una actualizacin para una vista puede no ser capaz de expresar, en absoluto, como actualiza para las relaciones de base. Para un ejemplo explicativo, consultar el de la actualizacin de informacin-crdito, en el Apartado 3.5.2. 3.13 Sean los siguientes esquemas de relacin: R = (A, B, C) S = (D, E, F) Sean las relaciones r(R) y s(S). Se da una expresin del clculo relacional de tuplas que sea equivalente a cada una de las expresiones siguientes: a. b. c. d. PA(R) sB = 17 (r) rxs PA, F (sC = D(r x s))

Respuesta: a. {t | $ q r (q[A] = t[A])} b. c. {t | t r t[B] = 17} {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])} {t | $ p r $ q s (t[A] = p[A] t[F] = q[F] p[C] = q[D]}

d.

3.14 Sea R = (A, B, C) y sean r1 y r2 relaciones del esquema R. Se da una expresin del clculo relacional de dominios que sea equivalente a las expresiones siguientes: a. PA(r1) b. sB = 17 (r1) c. . r1 r2 d. . r1 r2 e. . r1 - r2 f. PA, B(r1) |x| PB, C(r2) Respuesta: a. {< t > | $ p, q (< t, p, q > r1)} b. {< a, b, c > | < a, b, c > r1 b = 17}

c. d. e. f. 3.15

{< a, b, c > | < a, b, c > r1 < a, b, c > r2} {< a, b, c > | < a, b, c > r1 < a, b, c > r2} {< a, b, c > | < a, b, c > r1 < a, b, c > r2} {< a, b, c > | $ p, q (< a, b, p > r1 < q, b, c > r2)} Reptase el Ejercicio 3.5 usando el clculo 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-compaa] = 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 Banco Importante: i.{t |$ r empleado $ s trabaja (t[nombre-persona] = r[nombre-persona] t[ciudad] = r[ciudad] r[nombre-persona] = s[nombre-persona] s[nombre-compaa] = 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 trabajan para el Banco Importante y ganan ms de 10.000 anuales. i. {t | t empleado ($ s trabaja ( s[nombre-persona] = t[nombre-persona] s[nombre-compaa] = 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 que la compaa para la que trabajan: i. {t | $ e empleado $ w trabaja $ c compaa (t[nombre-persona] = e[nombre-persona] e[nombre-persona] = w[nombre-persona] w[nombre-compaa] = c[nombre-compaa] e[ciudad] = c[ciudad])} ii. {< p > | $ st, c, co, sa (< p,st,c > empleado < p,co,sa > trabaja < co,c > compaa)} e. Averiguar el nombre de todos los empleados que viven en la misma ciudad y en la misma calle que sus 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

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. Ms adelante se dan soluciones para este caso ms realista. i. { t | $ w trabajas ( w[nombre-compaa] 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 compaa: i. { t | $ e empleado ( t[nombre-persona] = e[nombre-persona] $ w trabaja (w[nombre-compaa] = 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 ms que cualquier empleado del Banco Pequeo: i. { t | $ w trabaja ( t[nombre-persona] = w[nombre-persona] " s trabaja (s[nombre-compaa] = Banco Pequeo w[sueldo] > s[sueldo]))} ii. {< p > | $ c, s (< p, c, s > trabaja " p2, c2, s2 (< p2, c2, s2 > trabaja c2 Banco Pequeo s > s2))} h. Supngase que las compaas pueden estar ubicadas en varias ciudades. Buscar todas las empresas con sede en todas las ciudades en las que tiene sede el Banco Pequeo. Nota: El Banco Pequeo se incluir en cada respuesta. i. {t | " s compaa (s[nombre-compaa] = Banco Pequeo $ r compaa (t[nombre-compaa] = r[nombre-compaa] r[ciudad] = s[ciudad]))} ii. {< co > | " co2, ci2 (< co2, ci2 > compaa co2 Banco Pequeo < co,ci2 > compaa)} 3.16 Sean R = (A,B) y S = (A,C), y sean las relaciones r(R) y s(S). Escribir expresiones del lgebra relacional equivalentes a las siguientes expresiones del clculo 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 (sB = 17 (r)) b. c. d. r |x| s A(r) (r sB(C(s))) r.A ((r |x| s) |x| c=r2.A? r.B >r2.B (rr2(r)))
1 1

Es interesante notar que (d) es una abstraccin de la clebre consulta Averiguar los empleados que ganan ms 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, escrbanse expresiones del clculo relacional de tuplas equivalentes a cada una de las siguientes: a. r |x[ s

b. c.

r ]x[ s 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)} {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)} Dense dos motivos por los que se puedan introducir valores nulos en la base de datos.

c.

3.18

Respuesta: Se pueden introducir nulos en la base de datos porque el valor actual es desconocido o no existe. Por ejemplo, un empleado cuya direccin ha cambiado y cuya nueva direccin todava no se conoce, debera conservarse con una direccin nula. Si las tuplas de empleados tienen un atributo compuesto dependencias y un empleado en concreto no tiene dependencias, entonces el atributo de ese empleado deberan tener un valor nulo. 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 aplicacin de valores nulos marcados debe permitir ciertas actualizaciones mediante el uso de vistas. Considrese la vista informacin-prstamo (Apartado 3.5). Mustrese la manera en que se puedan utilizar valores nulos marcados para permitir la insercin de la tupla (Gonzlez, 1900) mediante informacin-prstamo. Respuesta: Para insertar la tupla (Gonzlez, 1900) en la vista informacin-prstamo, se puede hacer lo siguiente: prestatario (Gonzlez,^k) prestatario prstamo (^k ^, 1900) prstamo de tal manera que ^k es un nuevo nulo marcado, que todava no existe en la base de datos.

CAPITULO
SQL

El captulo 4 abarca el lenguaje relacional SQL. la discusin est basada en el SQL-92, dado que el SQL ms reciente:1999 an no est ampliamente soportado. Las aplicaciones aportadas por SQL:1999 estn cubiertas en los Captulos 9 y 22. Las restricciones de integridad y las caractersticas de autorizacin del SQL-92 se describen en el Captulo 6. Al ser SQL un lenguaje muy amplio, muchas de sus caractersticas no se abarcan aqu, al no ser apropiadas para un curso de introduccin de bases de datos. Libros estndar sobre SQL, tales como Date y Darwen [1993] y Melton y Simon [1993], o manuales de sistemas de bases de datos, se pueden emplear como suplemento por aquellos estudiantes que quieran ahondar ms profundamente en la problemtica del SQL. Aunque es posible cubrir este captulo haciendo slo los ejercicios escritos, se recomienda enormemente el acceso a un sistema de bases de datos actual, que soporte SQL. El modelo de ejercicios empleado tiene por objeto crear una base de datos moderadamente extensa y dar a los estudiantes una lista de consultas en Ingls, para escribirlas y ejecutarlas mediante SQL. Publicamos las respuestas apropiadas (esto es, el resultado de las relaciones que deberan tener lugar, Este enfoque permite que los estudiantes comprueben sus propias respuestas para corregirlas inmediatamente, sin tener que esperar a su evaluacin y, por lo tanto, hace que el proceso de aprendizaje sea ms rpido. Unos pocos de tales ejemplos estn disponibles en la pgina Web de este libro. Los ejercicios correspondientes al diseo de la base de datos se han pospuesto mejor hasta despus del Captulo7. Dando por hecho que los protocolos ODBC y JDBC se han convertido rpidamente en el medio principal de acceso a bases de datos, se ha extendido significativamente la cobertura de estos dos protocolos, incluyendo algunos ejemplos. Sin embargo, nuestro alcance es slo una introduccin y omite muchos detalles que son tiles en la prctica. Los manuales / tutoras online o los libros de texto que tratan estos protocolos, se deberan emplear como suplementos para ayudar a que los estudiantes hagan un uso completo de estos protocolos. Cambios a la tercera edicin: La cobertura del SQL se ha extendido para incluir la clusula with, ODBC, JDBC y esquemas, catlogos y entornos (Apartado 4.14).

Ejercicios
4.1 Considrese la base de datos de seguros de la Figura 4.12, donde las claves primarias estn subrayadas. Formlense las siguientes consultas SQL para esta base de datos relacional. a. Buscar el nmero total de las personas cuyos coches se han visto involucrados en un accidente en 1989. b. Buscar el nmero de accidentes en los cuales se ha visto involucrado un coche perteneciente a Santos. c. Aadir un nuevo accidente a la base de datos; supngase cualquier valor para los atributos necesarios. d. Borrar el Mazda de Santos. e. Actualizar el importe de daos del coche de matrcula "2002BCD" en el accidente con nmero de informe "AR2197" a 3.000 . Respuesta: Nota: La relacin participado relaciona conductores, coches y accidentes. a. Buscar el nmero total de las personas cuyos coches se han visto involucrados en un accidente en 1989. Nota: esto no es lo mismo que el nmero total de accidentes en 1989. Las personas con varios accidentes slo se deben contar una vez. select count (distinct nombre) from accidente, participado, persona where accidente.nmero-informe = participado.nmero-informe and participado.id-conductor = persona.id-conductor and fecha between date 1989-00-00 and date 1989-12-31 b. Buscar el nmero de accidentes en los que se ha visto involucrado un coche perteneciente a Santos. select count (distinct *) from accidente where exists (select * from participado, persona where participado.id-conductor = persona.id-conductor and persona.nombre = Santos and accidente.nmero-informe = participado.nmero-informe) c. Aadir un nuevo accidente a la base de datos; supngase cualquier valor para los atributos necesarios. Se supone que el conductor era Santos, aunque podra haber sido cualquier otro. Tambin se supone que Santos tiene un Toyota. En primer lugar se debe encontrar la matrcula del coche en cuestin. Entonces, las relaciones participado y accidente se deben actualizar con el fin de registrar el accidente y asociarlo al coche dado. Se asumen los valores Berkeley para lugar, 2001-09-01 para fecha, 4007 para nmero-informe y 3.000 para el importe de los daos. persona (id-conductor, nombre, direccin) coche (matrcula, modelo, ao) accidente (nmero-informe, fecha, lugar) posee (id-conductor, matrcula) participado (id-conductor, coche, nmero-informe, importe-daos) Figura 4.12. Base de datos de seguros.

insert into accidente values (4007, 2001-09-01, Berkeley) insert into participado select o.id-conductor, c.matrcula, 4007, 3.000 from persona p, posee o, coche c where p.nombre = Santos and p.id-conductor = o.id-conductor and o.matrcula = c.matrcula and c.modelo = Toyota d. Borrar el Mazda de Santos. Dado que modelo no es una clave de la relacin coche, se puede asumir que slo uno de los coches de Santos es un Mazda, o borrar todos los Mazda de Santos (la consulta es la misma). De nuevo se supone que nombre es una clave de persona. delete coche where modelo = Mazda and matrcula in (select matrcula from persona p, posee o where p.nombre = Santos and p.id-conductor = o.id-conductor) Nota: Los registros accidente y participado asociados con el Mazda todava existen. e. Actualizar el importe de daos del coche de matrcula "2002BCD" en el accidente con nmero de informe "AR2197" a 3.000 . update participado set importe-daos = 3.000 where nmero-informe = AR2197 and id-conductor in (select id-conductor from posee where matrcula = 2002BCD) 4.2 Considrese la base de datos de empleados de la Figura 4.13, donde las claves primarias estn subrayadas. Proporcinese una expresin 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 Banco Importante. c. Buscar los nombres, direcciones y ciudades de residencia de todos los empleados que trabajan en el Banco Importante y que ganan ms 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 ms que cualquier empleado del Banco Pequeo. h. Supngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas con sede en todas las ciudades en las que tiene sede el Banco Pequeo. i. Buscar todos los empleados que ganan ms que el sueldo medio de los empleados de su empresa. j. Buscar la empresa que tiene el mayor nmero de empleados. k. Buscar la empresa que tiene el menor sueldo medio. l. Averiguar las compaas cuyos empleados ganan un sueldo ms alto, en media, que el sueldo medio del Banco Importante.

Respuesta: a. Averiguar los nombres de todos los empleados que trabajan para el Banco Importante. select nombre-empleado from trabaja where nombre-compaa = Banco Importante b. Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el Banco Importante. select e.nombre-empleado, ciudad from empleado e, trabaja w where w.nombre-compaa = Banco Importante and w.nombre-empleado = e.nombre-empleado c. Averiguar los nombres, direcciones y ciudades de residencia de todos los empleados que trabajan para el Banco Importante y ganan ms de 10.000 anuales. Si las personas pueden trabajar para varias compaas la solucin siguiente slo listar aquellas que ganen ms de 10.000 anuales slo del Banco importante. select * from empleado where nombre-empleado in (select nombre-empleado from trabaja where nombre-compaa = Banco Importante and sueldo 10.000) Al igual que en la solucin de la consulta anterior, tambin se puede emplear una reunin para resolver esto. d. Buscar todos los empleados que viven en la ciudad de la empresa para la que trabajan. select e.nombre-empleado from empleado e, trabaja w, compaa c where e.nombre-empleado = w.nombre-empleado and e.ciudad = c.ciudad and w.nombre-compaa = c.nombre-compaa e. Buscar todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes. select P.nombre-empleado from empleado P, empleado R, jefe M where P.nombre-empleado = M.nombre-empleado and M.nombre-jefe = R.nombre-empleado and P.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 slo para una compaa. select nombre-empleado from trabaja where nombre-compaa Banco Importante Si se permite que aparezcan personas en la base de datos (por ejemplo en empleado) pero que no aparezcan en trabaja, o si las personas pueden trabajar para ms de una compaa, la solucin es un poco ms complicada. select nombre-empleado from empleado where nombre-empleado not in (select nombre-empleado from trabaja where nombre-compaa = Banco Importante) g. Buscar todos los empleados que ganan ms que cualquier empleado del Banco Pequeo. Las soluciones siguientes asumen que todas las personas trabajan slo para una compaa.

select nombre-empleado from trabaja where sueldo > all (select sueldo from trabaja where nombre-compaa = Banco Pequeo) Si las personas pueden trabajar para varias compaas y se desea considerar el sueldo total de cada persona, el problema es ms complejo. Aunque puede resolverse empleando una subconsulta anidada, seguidamente se presenta la manera de hacerlo con la clusula with. with sueldo-total-empleado as (select nombre-empleado, sum(sueldo) as sueldo-total from trabaja group by nombre-empleado ) select nombre-empleado from sueldo-total-empleado where sueldo-total > all (select sueldo-total from sueldo-total-empleado, trabaja where trabaja.mombre-compaa = Banco Pequeo and sueldo-total-empleado.nombre-empleado = trabaja.nombre-empleado ) h. Supngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas con sede en todas las ciudades en las que tiene sede el Banco Pequeo. La solucin ms simple emplea la comparacin contains que fue incluida en Sistem R original, lenguaje Sequel, pero que no est presente en las posteriores versiones SQL. select T.nombre-compaa from compaa T where (select R.ciudad from compaa R where R.nombre-compaa = T.nombre-compaa) contains (select S.ciudad from compaa S where S.nombre-compaa = Banco Pequeo) Lo que sigue es una solucin en SQL estndar. select S.nombre-compaa from compaa S where not exists ((select ciudad from compaa where nombre-compaa = Banco Pequeo) except (select ciudad from compaa T where S.nombre-compaa = T.nombre-compaa))

i. Buscar todos los empleados que ganan ms que el sueldo medio de los empleados de su empresa. La solucin siguiente supone que todas las personas trabajan, a lo sumo, para una compaa. empleado (nombre-empleado, calle, ciudad) trabaja (nombre-empleado, nombre-compaa, sueldo) compaa (nombre-compaa, ciudad) jefe (nombre-empleado, nombre-jefe) Figura 4.13. Base de datos de empleados.

select nombre-empleado from trabaja T where sueldo > (select avg (sueldo) from trabaja S where T.nombre-compaa = S.nombre-compaa) j. Buscar la empresa que tiene el mayor nmero de empleados. select nombre-compaa from trabaja group by nombre-compaa having count (distinct nombre-empleado) >= all (select count (distinct nombre-empleado) from trabaja group by nombre-compaa) Buscar la empresa que tiene el menor sueldo medio. select nombre-compaa from trabaja group by nombre-compaa having sum (sueldo) <= all (select sum (sueldo) from trabaja group by nombre-compaa)

k.

l. Encontrar las compaas cuyos empleados ganan un salario mayor, en promedio, que el salario medio del Banco Importante. select nombre-compaa from trabaja group by nombre-compaa having avg (sueldo) > (select avg (sueldo) from trabaja where nombre-compaa = Banco Importante)

4.3 Considrese la base de datos relacional de la Figura 4.13. Formlese una expresin SQL para cada una de las consultas siguientes. a. Modificar la base de datos de forma que Santos viva en vila b. 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 sueldo pase a ser mayor que 100.000 ,en cuyo caso, se incrementar su sueldo slo en un 3%. e. Borrar todas las tuplas de la relacin trabaja correspondientes a los empleados del Banco Pequeo. Respuesta: La solucin para la parte a supone que cada persona slo tiene una tupla en la relacin empleado. Las soluciones para las partes c y d suponen que cada persona trabaja, cmo mximo, para una

compaa. a. Modificar la base de datos de forma que Santos viva en Tres Cantos. update empleado set ciudad = Tres Cantos where nombre-persona = Santos b. Incrementar en un 10% el sueldo de todos los empleados del Banco Importante. update trabaja set sueldo = sueldo * 1.1 where nombre-compaa = Banco Importante Incrementar en un 10% el sueldo de todos los jefes del Banco Importante. update trabaja set sueldo = sueldo * 1.1 where nombre-empleado in (select nombre-jefe from jefe) and nombre-compaa = Banco Importante

c.

d. Incrementar en un 10% el sueldo de todos los jefes del Banco Importante, a menos que su sueldo pase a ser mayor que 100.000 , en tal caso, incrementarlo slo en un 3%. update trabaja T set T.sueldo = T.sueldo * 1.03 where T.nombre-empleado in (select nombre-jefe from jefe) and T.sueldo * 1.1 > 100.000 and T.nombre-compaa = Banco Importante update trabaja T set T.sueldo = T.sueldo * 1.1 where T.nombre-empleado in (select nombre-jefe from jefe) and T.sueldo * 1.1 <= 100.000 and T.nombre-compaa = Banco Importante SQL-92 aporta una operacin case (consultar el Ejercicio 4.11), usando la cul se presenta una solucin ms concisa: update trabaja T set T.sueldo = T.sueldo (case when (T.sueldo . 1.1 > 100.000) then 1.03 else 1.1 ) where T.nombre-empleado in (select nombre-jefe from jefe) and T.nombre-compaa = Banco Importante e. Borrar todas las tuplas de la relacin trabaja para los empleados del Banco Pequeo. delete trabaja where nombre-compaa = Banco Pequeo

4.4

Sean los siguientes esquemas de relaciones: R = (A, B, C) S = (D, E, F)

Adems, considrense las relaciones r(R) y s(S). Obtngase la expresin SQL equivalente a las consultas siguientes: a. PA(r) b. s B = 17 (r) c. r x s d. PA,F (s C = D (r x s)) Respuesta: a. A(r)

select distinct A from r select * from r where B = 17 select distinct * from r, s

b.

sB = 17 (r)

c.

rs

d.

A,F (sC =D(r s))

select distinct A, F from r, s where C = D

4.5 Sea R = (A, B, C) y sean r1 y r2 relaciones sobre el esquema R. Proporcinese una expresin SQL equivalente a cada una de las siguientes consultas: a. r1 U r2 b. r1 r2 c. r1 - r2 d. PAB (r1) |x| PBC (r2) Respuesta: a. r1 r2

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

b. r1 r2 Se puede escribir esto empleando la operacin intersect, que es el enfoque preferido pero, por variar, se presenta una solucin empleando una subconsulta anidada. select * from r1 where (A, B, C) in (select * from r2)

c.

r1 - r2 select . from r1 where (A, B, C) not in (select . from r2)

Esto tambin se puede resolver empleando la clusula except. d. AB(r1) |x| BC(r2) select r1.A, r2.B, r3.C from r1, r2 where r1.B = r2.B

4.6 Sean R = (A, B) y S = (A ,C) y sean las relaciones r(R) y s(S). Formlese una expresin SQL equivalente 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)}

b.

c. b2))}

select distinct A from r where B = 17 {<a, b, c> | <a, b> r <a, c> s} select distinct r.A, r.B, s.C from r, s where r.A = s.A {<a> | $ c (<a, c> s $ b1 , b2 (<a, b1> r <c, b2> r b1 > select distinct s.A from s, r e, r m where s.A = e.A and s.C = m.A and e.B > m.B

4.7

Demustrese 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). Anlogamente, supngase que hay un determinado valor x2 que cumple (x2 not in S). No puede ser igual a ningn elemento w que pertenezca a S y, por tanto, se cumplir (x2 <> all S). Por lo tanto las dos expresiones son equivalentes. 4.8 Considrese la base de datos relacional de la Figura 4.13. Utilizando SQL, defnase una vista que contenga 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 debera permitir que las actualizaciones se expresaran en trminos de esta vista.

Respuesta: create view salinfo as select nombre-jefe, avg(sueldo) from jefe m, trabaja w where m.nombre-empleado = w.nombre-empleado group by nombre-jefe No se debera permitir actualizar en esta vista, porque no hay manera de determinar como cambiar los datos subyacentes. Por ejemplo, supngase que el requerimiento es cambiar el sueldo medio de los empleados que trabajan para Santos a 200. Se debera modificar el sueldo, de cualquiera que trabajara para Santos, a 200? O debera ,el primer (o ms, si es necesario) empleado encontrado que trabaja para Santos, tener su salario ajustado para que la media sea de 200? Ninguno de estos enfoques tiene realmente sentido. 4.9 Considrese la consulta SQL select p.a1 from p, r1, r2 where p.a1 = r1.a1 or p.a1 = r2.a1

Bajo qu condiciones la consulta anterior devuelve los valores de p.a1 que estn tanto en r1 como en r2 ? Examnense cuidadosamente los casos en que r1 o r2 pueden estar vacos. Respuesta: La consulta selecciona aquellos valores de p.a1 que son iguales a algunos valores de r1.a1 o r2.a1 si y slo si ambos, r1 y r2, no estn vacos. Si estn vacos uno o ambos, r1 y r2 , el producto cartesiano de p, r1 y r2 est vaco, por lo que el resultado de la consulta tambin lo es. Naturalmente, si el propio p est vaco, el resultado es el esperado, es decir, vaco. 4.10 Escrbase una consulta SQL, sin emplear la clusula with, para encontrar todas las sucursales donde la cantidad total de depsitos sea menor que la cantidad total media depositada en todas las sucursales usando: a. Una consulta anidada en la clusula from. b. Una consulta anidada en una clusula having. Respuesta: Se obtienen los nombres de las sucursales adems de la cantidad total de depsitos de la sucursal. a. Empleando una consulta anidada en la clusula from. select nombre-sucursal, saldo-total from (select nombre-sucursal, sum (saldo) from cuenta group by nombre-sucursal) as total-sucursal (nombre-sucursal, saldo-total) where saldo-total ( select avg (saldo-total) from (select nombre-sucursal, sum (saldo) from cuenta group by nombre-sucursal) as total-sucursal (nombre-sucursal, saldototal) )

b.

Empleando una consulta anidada en una clusula having. select nombre-sucursal, sum (saldo) from cuenta group by nombre-sucursal having sum (saldo) ( select avg (saldo-total) from (select nombre-sucursal, sum (saldo) from cuenta group by nombre-sucursal) as total-sucursal (nombre-sucursal, saldo-

total) ) 4.11 Supngase que se tiene una relacin notas(id-estudiante, puntuacin) y que se quiere clasificar a los estudiantes en funcin de la puntuacin del modo siguiente: SS: si la puntuacin es menor que 5 AP: si la puntuacin es mayor o igual que 5 y menor que 7, NT: si la puntuacin es mayor o igual que 7 y menor que 8,5 SB: si la puntuacin es mayor o igual que 8,5. Escrbanse consultas para hacer lo siguiente: a. Mostrar la clasificacin de cada estudiante, en trminos de la relacin notas. b. Encontrar el nmero de estudiantes por clasificacin. Respuesta: Se emplea la operacin case aportada por SQL-92: a. Para mostrar la clasificacin de cada estudiante: select id-estudiante, (case when puntuacin < 5 then SS, when (puntuacin 5 and puntuacin < 7) then AP, when (puntuacin 7 and puntuacin < 8,5) then NT, else SB end) as clasificacin from notas b. Para encontrar el nmero de estudiantes por clasificacin se usa la siguiente consulta, donde clasificacin es el resultado de la consulta dada como solucin de la parte a. select clasificacin, count(id-estudiante) from clasificacin group by clasificacin 4.12 SQL-92 proporciona una operacin 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 los A1,A2, . . .,An son nulos. Mustrese cmo expresar la operacin coalesce usando la operacin case. Respuesta: case when A1 is not nulo then A1 when A2 is not nulo then A2 ... when An is not nulo then An else nulo end

4.13 Sean a y b relaciones con los esquemas A(nombre, direccin, puesto) y B(nombre, direccin, sueldo), respectivamente. Indquese como expresar a natural full outer join b, utilizando la operacin full outer join con una condicin on y la operacin coalesce. Comprubese que la relacin resultado no contiene dos copias de los atributos nombre y direccin y que la solucin es vlida, incluso si dichos atributos de alguna tupla en a o b toman valor nulo para los atributos nombre o direccin. Respuesta: select coalesce(a.nombre, b.nombre) as nombre, coalesce(a.direccin, b.direccin) as direccin, a.puesto, b.sueldo from a full outer join b on a.nombre = b.nombre and a.direccin = b.direccin 4.14 Dada una definicin de esquema SQL para la base de datos de empleados de la Figura 4.13, eljase un dominio apropiado para cada atributo y una clave primaria para cada esquema de relacin. Respuesta: create domain nombres-compaa 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-compaa nombres-compaa, sueldo numeric(8, 2), primary key (nombre-empleado)) create table compaa (nombre-compaa nombres-compaa, ciudad nombres-ciudad, primary key (nombre-compaa)) create table jefe (nombre-empleado nombres-persona, nombre-jefe nombres-persona, primary key (nombre-empleado)) 4.15 a. b. Escrbanse condiciones check para el esquema del ejercicio anterior para asegurar que: Cada empleado trabaja para una empresa con sede en la ciudad de residencia del empleado. Ningn empleado gana un sueldo mayor que el de su jefe.

Respuesta: a. condicin check para la tabla trabaja: check((nombre-empleado, nombre-compaa) in (select e.nombre-empleado, c.nombre-compaa from empleado e, compaa c where e.ciudad = c.ciudad ) ) b. condicin check para la tabla trabaja: check( sueldo < all (select sueldo-jefe from (select nombre-jefe, jefe.nombre-empleado as nombre-emp, sueldo as sueldo-jefe from trabaja, jefe where trabaja.nombre-empleado = jefe.nombre-jefe) where nombre-empleado = nombre-emp ) )

La solucin es ligeramente complicada por el hecho de que dentro del mbito de la expresin select, la relacin externa trabaja, dentro de la cul se realiza la insercin, es inaccesible. De ah, el cambio de nombre del atributo nombre-empleado a nombre-emp. Bajo estas circunstancias es ms natural emplear declaraciones, las cuales se introducen en el Captulo 6. 4.16 Descrbanse las circunstancias en que se debera utilizar SQL incorporado, en lugar de SQL o de un lenguaje de programacin de propsito general. Respuesta: Escribir consultas en SQL es generalmente ms fcil que codificar las mismas consultas en un lenguaje de programacin de propsito general. No obstante, no todos los tipos de consultas se pueden escribir en SQL. Adems, acciones no declarativas tales como la impresin de un informe, interactuando con un usuario o enviando los resultados de una consulta a un interface de usuario grfico, no puede hacerse desde dentro de SQL. Bajo circunstancias en las que se desea el mejor de ambos mundos, se puede elegir SQL incorporado o SQL dinmico, en vez de emplear slo SQL o un lenguaje de programacin de propsito general. El SQL incorporado tiene la ventaja de que los programas son menos complicados, dado que evita el agrupamiento de las llamadas de las funciones ODBC o JDBC, pero requiere un procesador especial.

CAPITULO

OTROS LENGUAJES RELACIONALES


En este captulo se estudian dos lenguajes relacionales adicionales, QBE y Datalog. QBE, basado en el clculo relacional de dominios, constituye la base para los lenguajes de consultas, soportado por un gran nmero de sistemas de bases de datos y diseado para ordenadores personales, tales como Microsoft Access, FoxPro, etc. Desafortunadamente no hay ningn estndar para QBE; nuestro alcance est basado en la descripcin original del QBE. La descripcin tendr que ser completada mediante el material de las guas de usuario de los sistemas de bases de datos especficos que estn siendo empleados. Uno de los puntos a tener en cuenta es la semntica precisa de las operaciones de agregacin, la cual es particularmente no estndar. El lenguaje Datalog tiene varias similitudes con Prolog, que algunos estudiantes pueden haber estudiado en otros cursos. Datalog se diferencia de Prolog en que su semntica es puramente declarativa, en oposicin a la semntica operacional de Prolog. Es importante enfatizar la diferencias, dado que la semntica declarativa es capaz de utilizar estrategias de evaluacin de consultas eficientes. Hay varias implantaciones de Datalog 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 ejercicios de programacin. El sistema Coral tambin soporta objetos complejos tales como relaciones anidadas (tratadas posteriormente en el Captulo 9). Consultar la seccin Herramientas, al final del Captulo 5, para las URLs de estos sistemas. Cambios a la tercera edicin: La sintaxis y semntica, de agregaciones y actualizaciones QBE, se han modificado para simplificar la semntica y eliminar algunas ambigedades en las semnticas anteriores. La versin de QBE soportada por Microsoft Access se ha tratado brevemente. Se ha eliminado Quel.

Ejercicios
5.1 Considrese la base de datos de seguros de la Figura 5.14, donde las claves primarias estn subrayadas. Formlense las siguientes consultas en QBE: a. Buscar el nmero total de las personas cuyos coches se han visto involucrados en un accidente en 1989. b. Buscar el nmero de accidentes en los que se ha visto involucrado un coche perteneciente a Santos. c. Aadir un nuevo accidente a la base de datos; supngase cualquier valor para los atributos necesarios. d. Borrar el Mazda de Santos. e. Actualizar a 3.000 el importe de daos del coche de matrcula "2002BCD", en el accidente con nmero de informe "AR2197". Respuesta: La relacin participado relaciona coches y accidentes. Supngase que el atributo fecha tiene el formato YYYY-MM-DD. a. Buscar el nmero total de las personas cuyos coches se han visto involucrados en un accidente en 1989. accidente nmero-informe informe coche fecha fecha lugar

participado

id-conductor P.CNT.UNQ.ALL

nmero-informe informe

importe-daos

condiciones fecha = ( 1989-00-00 and 1989-12-31 ) b. Buscar el nmero de accidentes en los que se ha visto involucrado un coche perteneciente a Santos. persona id-conductor conductor coche nombre Santos direccin

participado

id-conductor conductor

nmero-informe P.CNT.ALL

importe-daos

c. Aadir un nuevo accidente a la base de datos; supngase cualquier valor para los atributos necesarios. Se supone que el conductor era Santos, aunque podra haber sido cualquier otro. Tambin se supone que Santos slo tiene un Toyota. acidente I. nmero-informe 4007 fecha 1997-01-01 lugar Berkeley

persona (id-conductor, nombre, direccin) coche (matrcula, modelo, ao) accidente (nmero-informe, fecha, lugar) posee (id-conductor, matrcula) participado (id-conductor, coche, nmero-informe, importe-daos) Figura 5.14. Base de datos de seguros.

participado I.

id-conductor conductor posee coche

coche matrcula id-conductor conductor matrcula matrcula

nmero-informe 4007 matrcula matrcula modelo Toyota direccin

importe-daos 3000

ao ao

persona d. Borrar el Mazda de Santos. persona

id-conductor conductor

nombre Santos

id-conductor conductor

nombre Santos

direccin

posee

id-conductor conductor matrcula matrcula

matrcula matrcula modelo Mazda

coche D.

ao

e. Actualizar a 3.000 el importe de daos del coche de matrcula "2002BCD", en el accidente con nmero de informe "AR2197". posee id-conductor conductor coche matrcula "2002BCD" importe-daos U.3000

participado

id-conductor conductor

nmero-informe AR2197

5.2 Considrese la base de datos de empleados de la Figura 5.15. Proporcionar expresiones en QBE y Datalog 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 Banco Importante. c. Averiguar el nombre, direccin y ciudad de residencia, de todos los empleados que trabajan para el Banco 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 ms que cualquier empleado del Banco Pequeo. h. Supngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas con sede en todas las ciudades en las que tiene sede el Banco Pequeo.

Respuesta: a. i. Averiguar los nombres de todos los empleados que trabajan para el Banco Importante. trabaja ii. nombre-persona P._x nombre-compaa sueldo Banco Importante

consulta(X) :- trabaja(X, Banco Importante, Y)

b. Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el Banco Importante. i. trabaja nombre-persona _x nombre-compaa Banco Importante calle sueldo

empleado

nombre-persona P._x

ciudad 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 trabajan para el Banco Importante y ganan ms de 10.000 anuales. Si las personas pueden trabajar para varias compaas las soluciones siguientes nicamente listarn aquellas que ganen ms de 10.000 anuales, slo del Banco Importante. i. empleado nombre-persona P._x calle P._y ciudad P._z sueldo > 10.000

trabaja

nombre-persona _x

nombre-compaa Banco Importante

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 compaa para la que trabajan. i. empleado nombre-persona P._x calle ciudad _y sueldo

trabaja

nombre-persona _x compaa

nombre-compaa _c ciudad _y

nombre-compaa _c

ii.

consulta (X) :- empleado (X, Y, Z), trabaja(X, V, W), compaa(V, Z)

e. i.

Buscar todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes. empleado nombre-persona P._x _y nombre-persona x calle _s _s ciudad _c _c

jefe ii.

nombre-jefe y

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 siguientes asumen que todas las personas trabajan para una compaa. i. trabaja nombre-persona P._x nombre-compaa Banco Importante sueldo

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 en trabaja, o si las personas pueden trabajar para ms de una compaa, la soluciones se complican ligeramente. Se presentan a continuacin: i. empleado nombre-persona P._x calle ciudad

trabaja ii.

nombre-persona _x

nombre-compaa Banco Importante

sueldo

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 ms que cualquier empleado del Banco Pequeo. Las soluciones siguientes asumen que todas las personas trabajan, como mximo, para una compaa. i. trabaja nombre-persona P._x o trabaja nombre-persona P._x nombre-compaa Banco Pequeo sueldo _y > _y nombre-compaa Banco Pequeo sueldo _y > MAX.ALL._y

ii. consulta (X) :- trabaja (X, Y, Z), p (X) p (X) :- trabaja(X, C, Y 1), trabaja(V, Banco Pequeo, Y ), Y >Y1 h. Supngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas con sede en todas las ciudades en las que tiene sede el Banco Pequeo. Nota: El Banco Pequeo se incluir en cada respuesta. i. ubicado-en nombre-compaa Banco Pequeo P._c Banco Pequeo condiciones CNT.ALL._y = CNT.ALL._x ii. consulta (X) :- compaa(X, C), not p(X) p(X) :- compaa(X, C1), compaa(Banco Pequeo, C2), not compaa(X, C2) 5.3 Considrese la base de datos relacional de la Figura 5.15, donde las claves primarias estn subrayadas. Formlense expresiones en QBE para cada una de las consultas siguientes: a. Buscar todos los empleados que ganan ms que el sueldo medio de los empleados de su empresa. b. Buscar la empresa que tiene el mayor nmero de empleados. c. Buscar la empresa que tiene el menor sueldo medio. d. Averiguar las compaas cuyos empleados ganan un sueldo ms alto, en media, que el sueldo medio del Banco Importante. Respuesta: a. Buscar todos los empleados que ganan ms que el sueldo medio de los empleados de su empresa. Las soluciones siguientes asumen que todas las personas trabajan slo para una compaa. trabaja nombre-persona P. nombre-compaa _y _Y sueldo _x _z ciudad _x _y _y

condiciones _x > AVG.ALL._z b. Buscar la empresa que tiene el mayor nmero de empleados. trabaja nombre-persona _x _y nombre-compaa P.G. G. sueldo

condiciones CNT.UNQ._x MAX.CNT.UNQ.ALL._y

c.

Buscar la empresa que tiene el menor sueldo medio. empleado (nombre-persona, calle, ciudad) trabaja (nombre-persona, nombre-compaa, sueldo) compaa (nombre-compaa, ciudad) jefe (nombre-persona, nombre-jefe)

Figura 5.15.

Base de datos de empleados. trabaja nombre-persona nombre-compaa P.G. G. sueldo _x _y

condiciones SUM.ALL._x MIN.SUM.ALL._y d. Encontrar las compaas cuyos empleados ganan un salario mayor, en promedio, que el salario medio del Banco Importante. trabaja nombre-persona nombre-compaa P.G. Banco Importante sueldo _x _y

condiciones AVG.ALL._x> AVG.ALL._y 5.4 Considrese la base de datos relacional de la Figura 5.15. Formlense expresiones en QBE para cada una 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 slo un 3%. e. Borrar todas las tuplas de la relacin trabaja para los empleados del Banco Pequeo. Respuesta: Las soluciones suponen que cada persona slo tiene una tupla en la relacin empleado. Las soluciones para las partes c y d suponen que cada persona trabaja, cmo mximo, para una compaa. a. Modificar la base de datos de forma que Santos viva en Tres Cantos. empleado b. nombre-persona Santos calle ciudad vila

Incrementar en un 10% el sueldo de todos los empleados del Banco Importante. trabaja U. nombre-persona nombre-compaa Banco Importante sueldo _x _x * 1.1

c.

Proporcinese a todos los jefes de la base de datos un aumento salarial del 10%. jefe nombre-persona nombre-jefe _x sueldo _y _y * 1.1

trabaja U.

nombre-persona _x

nombre-compaa

d. Incremntese en un 10% el sueldo de todos los jefes del Banco Importante, a menos que su sueldo pase a ser mayor de 100.000 . En tales casos, incrementarlo slo en un 3%. Se deben realizar dos operaciones de actualizacin independientes. Cada operacin de actualizacin tiene su propio conjunto de tablas de estructura. Primera actualizacin: jefe nombre-persona nombre-jefe _x sueldo _y _y * 1.03

trabaja U.

nombre-persona _x

nombre-compaa

condiciones _y > 100000/1.1 Segunda actualizacin: jefe trabaja U. condiciones _y 100000/1.1 e. Borrar todas las tuplas de la relacin trabaja para los empleados del Banco Pequeo. trabaja D. 5.5 nombre-persona nombre-compaa Banco Pequeo sueldo nombre-persona nombre-jefe _x sueldo _y _y * 1.1

nombre-persona _x

nombre-compaa

Sean los siguientes esquemas de relacin: R = (A, B, C) S = (D, E, F)

Considrense las relaciones r(R) y s(S). Proporcinense expresiones en QBE y Datalog equivalentes a cada una de las siguientes consultas: a. PA(r) b. s B = 17 (r) c. r x s d. PA,F (s C = D (r x s)) Respuesta: a. PA(r) i. r ii. consulta (X) :- r (X, Y, Z) A P. B C

b. s B = 17 (r) i. r P. ii. c. r x s i. resultado P A _a r B _b A _a D _d C _c B _b E _e D _d C _c F _f E _e F _f consulta (X, Y, Z) :- r (X, Y, Z), Y = 17 A B 17 C

s ii.

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

d. PA,F (s C = D (r x s)) i. resultado P. r A _a D _c A _a B F _f C _c F _f

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

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

Datalog equivalentes a cada una de las siguientes consultas: a. b. c. d. r1 U r2 r1 r2 r1 - r2 PAB (r1) |x| PBC (r2)

Respuesta: a. r1 U r2 i. resultado P. P. r1 r2 ii. consulta(X, Y, Z) :- r1 (X, Y, Z) consulta(X, Y, Z) :- r2 (X, Y, Z) b. r1 r2 i. r1 P. r2 ii. c. r1 - r2 i. r1 P. r2 ii. A _a A _a B _b B _b C _c C _c A _a A _a B _b B _b C _c C _c A _a A _d A _a _d B _b B _e B _b _e C _c C _f C _c _f

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

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

d. PAB (r1) |x| PBC (r2) i. resultado P. r1 r2 ii. A _a A A _a B _b B _b B _b C C _c C _c

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). Escrbanse expresiones en QBE y Datalog 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 ii. consulta (X) :- r (X, 17) A P. B 17

b. {<a, b, c> | <a, b> r <a, c> s} i. r A _a A _a A _a B _b C _c B _b C _c

result P. 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 _a _c A P._a B >_s _s C _c

s ii.

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

5.8 Considrese la base de datos relacional de la Figura 5.12. Escrbase un programa Datalog para cada una de las siguientes consultas: a. Buscar todos los empleados que trabajan (directa o indirectamente) bajo la direccin de Santos. b. Buscar las ciudades de residencia de todos los empleados que trabajan (directa o indirectamente) bajo la direccin de Santos. c. Buscar todas las parejas de empleados que tienen (directa o indirectamente) un jefe en comn. d. Buscar todas las parejas de empleados que tienen (directa o indirectamente) un jefe en comn y que estan al mismo nmero de niveles bajo el jefe. Respuesta: a. Buscar todos los empleados que trabajan (directa o indirectamente) bajo la direccin 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 o indirectamente) bajo la direccin 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 comn. 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 comn y que esten al mismo nmero de niveles de supervisin bajo el jefe en comn. 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 Escrbase una vista del lgebra relacional extendida equivalente a la regla Datalog p(A,C,D) : q1 (A,B), q2 (B,C), q3 (4,B), D = B + 1 .

Respuesta: Asmase que q1, q2 y q3 son are ejemplares del esquema (A1, A2).La vista del lgebra relacional es create view P as q1.A1,q2.A2,q1.A2+1(sq3.A1=4
q1.A2=q2.A1 q1.A2=q3.A2(q1

q2 q3))

5.10 Descrbase cmo una regla de Datalog arbitraria puede expresarse como una vista del lgebra relacional extendida. Respuesta: Una regla de Datalog tiene dos partes, la cabeza y el cuerpo. El cuerpo es una lista de literales separados por comas. Un literal positivo tiene la forma p(t1, t2, . . . , tn ), done p es el nombre de una relacin 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 aritmticos, p ser un operador aritmtico como >, = etc. Se consideran slo reglas seguras; consultar el Apartado 5.2.4 para las definiciones de seguridad de las reglas de Datalog. Adems, se asume que cada variable que aparece en un literal aritmtico tambin lo hace en un literal no aritmtico positivo.

Considrese primero una regla sin ningn literal negativo. Para expresar la regla como una vista del lgebra relacional extendida, se escribe como una reunin de todas las relaciones referidas en los literales no aritmticos (positivos) del cuerpo, seguidos por una seleccin. La condicin de seleccin es una conjuncin que se obtiene como sigue. Si p1 (X, Y ), p2 (Y, Z) tienen lugar en el cuerpo, donde p1 es del esquema (A, B) y p2 del (C, D), entonces p1.B = p2.C debera pertenecer a la conjuncin. Los literales aritmticos pueden entonces aadirse a la condicin. 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 expresin de lgebra relacional: E1 = s(w1.nombre-compaa = w2.nombre-compaa
w1.sueldo > w2.sueldo jefe.nombre-persona = w1.nombre-persona jefe.nombre-jefe=w2.nombre-persona)

( rw1(trabaja) rw2(trabaja) jefe)

Supngase que la regla dada ahora tiene literales negativos. Primero supngase que no hay constantes en los literales negativos; recurdese que todas las variables de un literal negativo deben, tambin, aparecer en un literal positivo. Sea q(X, Y ) el primer literal negativo del esquema (E, F). Sea Ei la expresin del lgebra relacional obtenida despus de que se hayan tratado todos los literales, positivos y negativos. Para tratar este literal negativo se genera la expresin 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 e Y. Considrense ahora que aparecen constantes en un literal negativo. Supngase un literal negativo de la forma q(a, b, Y ), donde a y b son constantes. Entonces, en la expresin anterior que define Ej ,se reemplaza q por sA1=a A2=b(q). Procediendo de una misma manera, se procesan los literales negativos restantes, resultando finalmente en una expresin Ew. Finalmente, los atributos deseados se proyectan de la expresin. Los atributos en Ew, correspondientes a las variables en la cabeza de la regla, se convierten en los atributos de la proyeccin. 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 mltiples para el mismo predicado, la expresin del lgebra relacional que define la vista es la unin de las correspondientes expresiones a las reglas individuales. La conversin anterior se puede ampliar para manejar reglas que cumplan algunas formas ms dbiles de las condiciones de seguridad y, en algunos casos limitados, donde la variables en predicados aritmticos no aparezcan en un literal no aritmtico positivo.

CAPITULO

INTEGRIDAD Y SEGURIDAD
Este captulo presenta varios tipos de restricciones de integridad, incluyendo restricciones de los dominios, restricciones de integridad referencial, asertos y disparadores, as como seguridad y autorizacin. Las restricciones de integridad referencial y las restricciones de los dominios, son un importante aspecto de las especificaciones del diseo de una base de datos relacional. Los asertos estn viendo incrementar su empleo. Los disparadores se usan ampliamente, aunque cada base de datos soporta su propia sintaxis y semntica para disparadores; los disparadores estaban estandarizados como parte de SQL:1999 y es de esperar que las bases de datos faciliten soporte para disparadores SQL:1999. Las dependencias funcionales ahora se muestran como parte de la normalizacin, en vez de como parte del captulo de las restricciones de integridad, tal y como se haca en la tercera edicin. La razn del cambio es que se emplean casi exclusivamente en el diseo de bases de datos y ningn sistema de base de datos, que se sepa, soporta dependencias funcionales como las restricciones de integridad. Tratndolos en el contexto de la normalizacin, se ayuda a motivar a los estudiantes a dedicar esfuerzo para comprender la problemtica del razonamiento con dependencias funcionales. La seguridad es el principal asunto por s mismo. Dado que cualquier sistema es solamente tan seguro como lo es su componente ms dbil, un diseador de sistemas debe considerar todos los aspectos de seguridad. Este captulo se centra slo en los aspectos de seguridad que son especficos de las bases de datos. En un curso posterior, esta materia se puede completar con la discusin de cuestiones de seguridad en los sistemas operativos y en los sistemas distribuidos. Cambios a la tercera edicin: El tratamiento de los disparadores est ahora basado en el estndar SQL:1999. En el momento de la publicacin de la tercera edicin los disparadores no estaban estandarizados. La nocin de funciones para la autorizacin se ha introducido en esta edicin, ahora que es parte del estndar SQL:1999. El tratamiento de la encriptacin ha sido actualizado para cubrir los desarrollos recientes.

Ejercicios
6.1 Compltese la definicin del LDD de SQL de la base de datos de la Figura 6.2, para incluir las relaciones prstamo y prestatario. Respuesta: create table prstamo (nmero-prstamo char(10), nombre-sucursal char(15), importe integer, primary key (nmero-prstamo), foreign key (nombre-sucursal) references sucursal) create table prestatario (nombre-cliente char(20), nmero-prstamo char(10), primary key (nombre-cliente, nmero-prstamo), foreign key (nombre-cliente) references cliente, foreign key (nmero-prstamo) references prstamo) Declarar como clave primaria de la relacin prestatario a la pareja nombre-cliente, nmero-prstamo, asegura que la relacin no contenga duplicados. 6.2 Considrese la siguiente base de datos relacional: empleado (nombre-empleado, calle, ciudad) trabaja (nombre-empleado, nombre-compaa, sueldo) compaa (nombre-compaa, ciudad) jefe (nombre-empleado, nombre-jefe) Se da una definicin en el LDD de SQL de esta base de datos. Identifquense las restricciones de integridad referencial que deben cumplirse, e inclyanse en la definicin 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-compaa char(15), sueldo integer, primary key (nombre-persona), foreign key (nombre-persona) references empleado, foreign key (nombre-compaa) references compaa) create table compaa (nombre-compaa char(15), ciudad char(30), primary key (nombre-compaa)) create table jefe

(nombre-persona char(20), nombre-jefe char(20), primary key (nombre-persona), foreign key (nombre-persona) references empleado, foreign key (nombre-jefe) references empleado) Ntese que son posibles tipos de datos alternativos. Se pueden aceptar otras elecciones para los atributos not null. 6.3 Las restricciones de integridad referencial, tal y como se han definido en este captulo, implican exactamente dos relaciones. Considrese una base de datos que incluya las siguientes relaciones: trabajador-fijo (nombre, despacho, telfono, sueldo) trabajador-tiempo-parcial (nombre, sueldo-por-hora) direccin (nombre, calle, ciudad) Supngase que se desea exigir que cada nombre que aparece en direccin, aparezca en trabajador-fijo o en trabajador-tiempo-parcial, pero no necesariamente en ambos. a. Propngase una sintaxis para expresar esta restriccin. b. Disctanse las acciones que el sistema debe realizar para aplicar una restriccin de este tipo. Respuesta: a. Por sencillez, se presenta una variante de la sintaxis del SQL. Como parte de la expresin create table para direccin, 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 relacin direccin, se debe hacer una bsqueda sobre el valor nombre en la relacin trabajador-fijo y (si falla la bsqueda) en la relacin trabajador-tiempo-parcial (o viceversa). 6.4 SQL permite la dependencia de una clave externa para referirse a la misma relacin, como en el ejemplo 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 como mximo un jefe. La orden de clave externa requiere que cada jefe tambin sea un empleado. Explquese qu sucede exactamente cuando se borra una tupla de la relacin jefe. Respuesta: Las tuplas de todos los empleados del jefe, a todos los niveles, tambin se borran. Esto sucede en una serie de pasos. El borrado inicial disparar el de todas las tuplas correspondientes a los empleados directos del jefe. Estos borrados originarn los borrados de las tuplas de los empleados del segundo nivel, y as sucesivamente, hasta sean borradas, directa o indirectamente, todas las tuplas de empleados. 6.5 Supngase que hay dos relaciones r y s, tales que la clave externa B de r hace referencia a la clave primaria A de s. Descrbase la manera en que puede utilizarse el mecanismo de los disparadores para implementar la opcin on delete cascade, cuando se borra una tupla de s.

Respuesta: Se definen disparadores para cada relacin cuya clave primaria est referida por la clave externa de alguna otra relacin. El disparador se activara siempre que una tupla se borre de la relacin referenciada. La accin realizada por el disparador consistira en recorrerse todas las relaciones referenciadas y borrar todas las tuplas en aquellas cuyo valor del atributo clave externa sea el mismo que el del atributo clave primaria, de la tupla borrada en la relacin de referencia. Estos conjuntos de disparadores se ocuparn de la operacin on delete cascade. 6.6 Escrbase un aserto para la base de datos bancaria, que asegure que el valor del activo de la sucursal de 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. Ntese que al aplicar el aserto slo a la sucursal de Navacerrada, se debe restringir la atencin slo a las tuplas de Navacerrada en la relacin sucursal, en vez de escribir una restriccin sobre la relacin entera. create assertion Navacerrada check (not exists (select * from sucursal where nombre-sucursal = Navacerrada and activo (select sum (importe) from prstamo where nombre-sucursal = Navacerrada))) 6.7 Escrbase una disparador SQL que lleve a cabo la siguiente accin: Al borrar una cuenta, para cada propietario de la cuenta, comprubese si tiene algunas otras cuentas y, si no es as, brresele de la relacin impositor. Respuesta: create trigger disparador-comprobacin-borrado after delete on cuenta referencing old row as fila-antigua for each row delete from impositor where impositor.nombre-cliente not in ( select nombre-cliente from impositor where nmero-cuenta<> fila-antigua.nmero-cuenta ) end 6.8 Considrese la vista sucursal-cliente definida como sigue: create view sucursal-cliente as select nombre-sucursal, nombre-cliente from impositor, cuenta where impositor.nmero-cuenta = cuenta.nmero-cuenta Supngase que la vista esta materializada, es decir, la vista se calcula y se almacena. Escrbanse reglas activas para el mantenimiento de la vista, es decir, para mantenerla actualizada segn las inserciones 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 de datos sobre las inserciones en impositor y cuenta. Se asume que el sistema de base de datos hace uso de una vinculacin inmediata para la ejecucin de las reglas. Adems, se supone que la versin actual de una relacin se denota por el propio nombre de la relacin, mientras que el conjunto de tuplas recin insertadas se denota calificando el nombre de la relacin con el prefijo insertado. Las reglas activas para esta insercin se dan a continuacin

define trigger insertar en sucursal-cliente va impositor after insert on impositor referencing new table as insertado for each statement insert into sucursal-cliente select nombre-sucursal, nombre-cliente from insertado,cuenta where insertado.nmero-cuenta = cuenta.nmero-cuenta define trigger insertar en sucursal-cliente va cuenta after insert on cuenta referencing new table as insertado for each statement insert into sucursal-cliente select nombre-sucursal, nombre-cliente from impositor, inserted where impositor.nmero-cuenta = insertado.nmero-cuenta Ntese que si la vinculacin de la ejecucin fuese diferida (en vez de inmediata), entonces el resultado de la reunin del conjunto de las nuevas tuplas de cuenta con el de las nuevas tuplas de impositor, habra 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 insercin, excepto en que un borrado desde impositor o cuenta implicar la unin natural de estas relaciones para tener un menor nmero de tuplas. Se denota el conjunto de tuplas recin borradas calificando el nombre de la relacin con la palabra clave borrado. define trigger borrar desde sucursal-cliente va impositor after delete on impositor referencing old table as borrado for each statement delete from sucursal-cliente select nombre-sucursal, nombre-cliente from borrado,cuenta where borrado.nmero-cuenta = cuenta.nmero-cuenta define trigger borrar desde sucursal-cliente va cuenta after delete on cuenta referencing old table as borrado for each statement delete from sucursal-cliente select nombre-sucursal, nombre-cliente from impositor, borrado where impositor.nmero-cuenta = borrado.nmero-cuenta 6.9 Confeccinese una lista de los problemas de seguridad de un banco. De cada elemento de la lista, especifquese si afecta a la seguridad fsica, a la personal, a la del sistema operativo o a la de las bases de datos. Respuesta: Considrese el problema de proteger la base de datos del banco. Algunas medidas de seguridad, a cada uno de los cuatro niveles, se mencionan seguidamente a. Nivel fsico El sistema desde el que se puede acceder y modificar a las relaciones, debera situarse en una habitacin cerrada, bien guardada e inexpugnable. b. Nivel humano Una apropiada poltica de transferencia de llaves debera reforzarse, para restringir el acceso a las dependencias del sistema anteriormente mencionadas. Las contraseas para poder acceder a la base de datos deberan ser conocidas slo por los usuarios de confianza. c. Nivel de sistema operativo Las contraseas deberan ser difciles de imaginar y modificarse regularmente. Ningn usuario debera ser capaz de obtener accesos no autorizados al sistema, debido un fallo del software en el sistema operativo. d. Nivel de sistema de base de datos . Los usuarios deberan estar autorizados a acceder slo a las

partes pertinentes de la base de datos. Por ejemplo, debera permitirse al cajero de un banco modificar los valores 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, escrbase una expresin SQL para definir las siguientes vistas: a. Una vista que contenga los nmeros de cuenta y los nombres de los clientes (pero no los saldos) de todas las cuentas de la sucursal de El Escorial. b. Una vista que contenga el nombre y la direccin de todos los clientes que tengan cuenta en el banco, pero no tengan ningn prstamo. c. Una vista que contenga el nombre y el saldo medio de la cuenta de cada cliente de la sucursal de Collado Villalba. Respuesta: a. create view El-Escorial as select nmero-cuenta, nombre-cliente from impositor, cuenta where nombre-sucursal = El Escorial and impositor.nmero-cuenta = cuenta.nmero-cuenta b. create view sin-deudas as select * from cliente where nombre-cliente in (select nombre-cliente from impositor) minus (select nombre-cliente from prestatario) c. create view saldo-medio as select nombre-cliente, avg(saldo) from impositor, cuenta where impositor.nmero-cuenta = cuenta.nmero-cuenta y nombre-sucursal = Collado Villalba group by nombre-cliente 6.11 Para cada una de las vistas definidas en el Ejercicio 6.10, explquese la manera en que deben realizarse las actualizaciones (si es que se deben permitir). Sugerencia: Consultar la discusin de las vistas del Captulo 3. Respuesta: Para insertar (nmero-cuenta, nombre) en la vista El-Escorial , se inserta la tupla ( El Escorial, nmero-cuenta, nulo) en la relacin cuenta y la tupla (nombre, nmero-cuenta) en la relacin 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 insercin si el cliente tiene un prstamo. El coste de la actualizacin a travs de esta vista es tan alto, que la mayora de los sistemas lo rechazaran. La vista saldo-medio no puede actualizarse, dado que el resultado de una operacin de agregacin depende de varias tuplas, no slo de una. 6.12 En el Captulo 3 se describi el uso de las vistas para facilitar el acceso a la base de datos de los usuarios que slo necesiten ver una parte de la misma. En este captulo se ha descrito el uso de las vistas como mecanismo de seguridad. Pueden entrar en conflicto estas dos finalidades de las vistas? Explquese la respuesta. Respuesta: Generalmente un mecanismo de seguridad y vistas bien diseado, puede evitar conflictos entre la

facilidad de los accesos y la seguridad. Sin embargo, como se muestra en los ejemplos siguientes, los dos propsitos entran en conflicto si los mecanismos no se han diseado cuidadosamente. Supngase que se tiene una base de datos de empleados y un usuario cuya vista implica los datos de empleados 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 aceptarn esta actualizacin como vlida, a travs de una vista. Sin embargo, el mecanismo de seguridad impedir que el usuario acceda a borrar esta tupla errnea. 6.13 Cul es la finalidad de tener categoras diferentes para la autorizacin de ndices y para la de recursos? Respuesta: Las autorizaciones de ndices y recursos deberan ser categoras especiales que permitan a determinados usuarios crear relaciones (y los ndices para operar sobre ellas), al impedir que estas operaciones, lentas y que modifican el esquema, estn disponibles para muchos usuarios. Separar las autorizaciones de ndices y recursos permite a un usuario construir un ndice sobre relaciones existentes, por ejemplo por razones de optimizacin, pero denegarle el derecho a crear nuevas relaciones. 6.14 Los sistemas de bases de datos que guardan cada relacin en un archivo diferente del sistema operativo pueden utilizar los esquemas de seguridad y de autorizacin del sistema operativo, en lugar de definir un esquema especial propio. Disctanse las ventajas e inconvenientes de ese enfoque. Respuesta: Los sistemas de bases de datos tienen requerimientos especiales que son tpicamente ms refinados que la mayora de los sistemas operativos. Por ejemplo, un usuario sencillo puede tener diferentes privilegios 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 de los sistemas operativos es que simplifican los sistemas de bases de datos, y se pueden usar para simples (leer/escribir) medidas de seguridad. 6.15 Cules 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 otros usuarios o el administrador del sistema consigan cualquier informacin. b. La encriptacin de los datos puede simplificar o incluso fortalecer otros mecanismos de autorizacin. Por ejemplo, la distribucin de las claves criptogrficas slo entre usuarios de confianza es, tanto una manera sencilla de controlar los accesos de lectura, como una capa adicional de seguridad sobre la que ofrecen las vistas. 6.16 Quizs los elementos de datos ms importantes de cualquier sistema de bases de datos sean las contraseas que controlan el acceso a la base de datos. Propngase un esquema para guardar de manera segura las contraseas. Asegrese de que el esquema permita al sistema comprobar las contraseas proporcionadas por los usuarios que intenten iniciar una sesin en el mismo. Respuesta: Una manera de almacenar contraseas sera cifrarlas y, posteriormente, usar un ndice asociativo sobre el identificativo de usuario. El identificativo de usuario se puede emplear para acceder fcilmente a la contrasea cifrada. La contrasea empleada en un intento de conexin se cifra y compara con la encriptacin de la contrasea correcta almacenada. Una ventaja de este plan es que las contraseas no se almacenan en texto transparente y que, incluso, no es necesario que exista cdigo para el descifrado.

CAPITULO

DISEO DE BASES DE DATOS RELACIONALES


Este captulo presenta los principios del diseo de bases de datos relacionales. Los estudiantes universitarios frecuentemente encuentran difcil este captulo. Es aceptable cubrir solamente los Apartados 7.1, 7.2 y 7.4, para aquellas clases que encuentren la materia particularmente difcil. Sin embargo, un cuidadoso estudio de las dependencias y normalizaciones de los datos, es una buena manera de introducir a los estudiantes a los aspectos formales de la teora de bases de datos relacionales. Hay muchas maneras de hacer constar las definiciones de las formas normales. Se ha elegido un estilo que, pensamos, es el ms fcil de presentar y el que ms claramente transmite la intuicin de las formas normales. Cambios a la tercera edicin: Hay muchos cambios a este captulo desde la tercera edicin. La 1FN se define ahora formalmente. Las dependencias funcionales se tratan en este captulo, en lugar de hacerlo en el Captulo 6. La razn es que la normalizacin aporta la motivacin real para las dependencias funcionales, dado que se emplean sobre todo para la normalizacin. Se ha descrito un procedimiento simplificado para la inferencia de la dependencia funcional, basado en el cierre de atributos y se aportan procedimientos simplificados para la comprobacin de las formas normales. La cobertura de la teora de las dependencias multi valoradas y las formas normales ms all de la 4FN (es decir, PJNF y DKNF) ha sido trasladada al Apndice C (el cul est disponible en la Web, no en el libro impreso). El proceso de diseo de esquemas relacionales se ha descrito significativamente con mayor detalle, adems de algunos problemas de diseo que no se perciben mediante los procesos de normalizacin usuales.

Ejercicios
7.1 Explquese qu se entiende por repeticin de la informacin e imposibilidad de representacin de la informacin. Explquese el motivo por el que estas propiedades pueden indicar un mal diseo de bases de datos relacionales. Respuesta: Repeticin de informacin es una condicin en una base de datos relacional, donde los valores de un atributo se determinan por los valores de otro en la misma relacin y, ambos valores, se repiten a travs de la relacin. Esto es un mal diseo de base de datos relacional, porque incrementa el almacenamiento necesario para la relacin y hace ms difcil la actualizacin de la relacin. Incapacidad para representar informacin es una condicin donde una relacin entre slo un subconjunto propio de los atributos en una relacin. Esto es mal diseo de base de datos relacional porque todos los atributos sin relacin deben rellenarse con valores nulos, de lo contrario una tupla sin informacin de relacin no se puede insertar en la relacin. Prdida de informacin es una condicin de una base de datos relacional, que resulta de la descomposicin de una relacin en dos, que no se pueden combinar para recrear la relacin original. Es un mal diseo de base de datos relacional porque ciertas consultas que no se pueden responder empleando la relacin reconstruida, podran haber sido contestadas empleando la relacin original. 7.2 Supngase que se descompone el esquema R = (A, B, C, D, E) en (A, B, C) (A, D, E). Demustrese que esta descomposicin es una descomposicin de reunin sin prdida, si se cumple el siguiente conjunto F de dependencias funcionales: A g BC CD g E BgD EgA Respuesta: Una descomposicin {R1, R2} es una descomposicin de reunin sin prdida 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 (vase el Ejercicio 7.11), por lo tanto R1 R2 R1. 7.3 Indquese el motivo de que ciertas dependencias funcionales se denominen dependencias funcionales triviales. Respuesta: Ciertas dependencias funcionales se denominan triviales porque son cumplidas por todas las relaciones. 7.4 Indquense todas las dependencias funcionales que satisface la relacin de la Figura 7.21.

Respuesta: Las dependencias funcionales no triviales son: A B y C B y una dependencia lgica implcita: AC B . Hay 19 dependencias funcionales triviales de la forma a b, donde b a. C no determina funcionalmente a A, porque las tuplas primera y tercera tienen valores iguales de C pero diferentes de A. La mismas tuplas tambin muestran que B no determina funcionalmente a A. Igualmente, A no

determina funcionalmente a C, porque las primeras dos tuplas tienen valores iguales de A pero diferentes de C. La mismas tuplas tambin muestran que B no determina funcionalmente a C. 7.5 Utilcese la definicin de dependencia funcional para argumentar que cada uno de los axiomas de Armstrong (reflexividad, aumentatividad y transitividad) es vlido. Respuesta: La definicin de dependencia funcional es: a b contiene sobre R si en cualquier relacin legal r(R), para todos los pares de tuplas t1 y t2 en r tales que t1[a] = t2[a], es tambin el caso que t1[b] = t2[b]. Regla de la reflexividad: si a es un conjunto de atributos y b a, entonces a b. Asmase que $ t1 y t2 tales que t1[a] = t2[a] t1[b] = t2[b] dado que b a a b definicin de FD Regla de la aumentatividad: si a b y g es un conjunto de atributos, entonces ga gb. Asmase que $ t1 y t2 tales que t1[ga] = t2[ga] t1[g] = t2[g] g ga t1[a] = t2[a] a ga t1[b] = t2[b] definicin de a b t1[gb] = t2[gb] gb = g b ga gb definicin de FD Regla de la transitividad: si a b y b g, entonces a g. Asmase que $ t1 y t2 tales que t1[a] = t2[a] t1[b] = t2[b] t1[g] = t2[g] ag definicin de a b definicin de b g definicin de FD

7.6 Explquese 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.

Relacin del Ejercicio 7.4.

Respuesta: Supongamos que Pk(r) denota el atributo clave primaria de la relacin r. Las dependencias funcionales Pk(cuenta)Pk (cliente) y Pk(cliente) Pk(cuenta) indican una relacin de uno a uno porque dos tuplas cualesquiera con el mismo valor de cuenta, deben tener el mismo valor de cliente y dos tuplas cualesquiera de acuerdo en cliente, deben tener el mismo valor de cuenta. La dependencia funcional Pk(cuenta)Pk (cliente) indica una relacin de muchos a uno, dado que cualquier valor de cuenta que se repita tendr el mismo valor de cliente, pero muchos valores de cuenta pueden tener el mismo valor de cliente.

7.7 Considrese la siguiente regla propuesta para las dependencias funcionales: Si a b y g b entonces a g. Prubese que esta regla no es segura mostrando una relacin r que satisfaga a b y g b, pero no cumpla a g. Respuesta: Considrese la siguiente regla: si A B y C B, entonces A C. As, a = A, b = B, g = C. La siguiente relacin r es un contra ejemplo para la regla. r: A a1 a1 B b1 b1 C c1 c2

Nota: A B y C B, (dado que ninguna de las 2 tuplas tiene el mismo valor de C, C B es una trivialidad). Sin embargo, no es el caso que A C dado que el mismo valor de A est en dos tuplas, pero el valor de C en esas tuplas difiere. 7.8 Utilcense los axiomas de Armstrong para probar la seguridad de la regla de la unin. (Sugerencia: utilcese la regla de la aumentatividad para probar que, si a b, entonces a ab.Aplquese nuevamente la regla de la aumentatividad, empleando a g, y luego aplquese la regla de la transitividad). Respuesta: Para probar que: i a b y a g, entonces a bg. Siguiendo la sugerencia, se deduce: ab dado aa ab regla de la aumentatividad: a ab unin de conjuntos idnticos ag dado ab g b regla de la aumentatividad: a bg regla de la transitividad y conmutatividad de la unin de conjuntos 7.9 Utilcense los axiomas de Armstrong para probar que la regla de la descomposicin es correcta.

Respuesta: La regla de la descomposicin y sus derivaciones desde los axiomas de Armstrong se presentan a continuacin: si a bg, entonces a b y a g a bg bg b ab bg g ag 7.10 dado regla de la reflexividad regla de la transitividad regla reflexiva regla transitiva

Utilcense los axiomas de Armstrong para probar que la regla de la pseudotransitividad es correcta.

Respuesta: Prueba utilizando los axiomas de Armstrong de la regla de la pseudotransitividad: si a b y gb d, entonces ag d. ab ag g b g b d dado ag d dado regla de la aumentatividad y conmutatividad de la unin de conjuntos regla de la transitividad

7.11 Calclese el cierre del siguiente conjunto de dependencias funcionales F, para el esquema de la relacin R=(A, B, C, D, E). A BC CD E BD EA Indquese las claves candidatas de R. Respuesta: Clculo del cierre del siguiente conjunto de dependencias funcionales F para el esquema de la relacin R = (A, B, C, D, E). A BC CD E BD EA Listado de las claves candidatas de R. Nota: No es razonable esperar que los estudiantes enumeren todo de F+. Alguna representacin abreviada del resultado sera 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 Dado que A CD y CD E, A E Dado que A A, se tiene A ABCDE desde los pasos anteriores Dado que E A, E ABCDE Dado que CD E, CD ABCDE Dado que B D y BC CD, BC ABCDE Tambin, C C, D D, BD D, etc. (descomposicin, transitiva) (unin, descomposicin, transitiva) (reflexiva) (unin) (transitiva) (transitiva) (aumentativa, transitiva)

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. Permtase * 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* a, BC * a, CD * a, E* a donde a 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, calclese B+.

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

Considerando FDs de la forma b g en F, se encuentra que solamente dependencias que satisfacen b resultado son B B y B D. Por lo tanto resultado = {B, D}. Ninguna dependencia ms en F aplica ahora. Por eso B+ = {B, D} 7.13 Utilizando las dependencias funcionales del Ejercicio 7.11, calclese el recubrimiento cannico Fc.

Respuesta: El conjunto dado de FDs F es: A BC CD E B D E A El lado izquierdo de cada FD en F es nico. Ninguno de los atributos en el lado izquierdo o derecho de cualquiera de los FDs es ajeno. Por lo tanto, el recubrimiento cannico Fc es igual a F. 7.14 Considrese el algoritmo de la Figura 7.22 para calcular a+. Prubese que este algoritmo es ms eficiente que el mostrado en la Figura 7.7 (Apartado 7.3.3) y que calcula a+ correctamente. Respuesta: El algoritmo es correcto porque: Si se aade A a resultado hay una prueba que a A. Para ver esto obsrvese que trivialmente a a, por lo que a es parte correcta de resultado. If A a se aade a resultado, debe haber algn FD b g tal que A g y b sea todava un subconjunto de resultado. (De lo contrario fdcount sera distinto de cero y la condicin if sera falsa.) Una prueba completa puede venir dada mediante la induccin sobre la profundidad de la recursividad, para una ejecucin de addin, pero tal prueba slo se puede esperar de estudiantes con buenos conocimientos de matemticas. Si A a+, entonces se aade eventualmente A a resultado. Esto se verifica por induccin sobre la longitud de la prueba de a A empleando los axiomas de Armstrong. Primero obsrvese que si el procedimiento addin es llamado con algn argumento b, todos los atributos en b se aadirn a resultado. Tambin si un determinado fdcount de FD est a 0, todos los atributos en su cola se aadirn definitivamente a resultado. El caso de la base de la prueba, A a A a+, es obviamente cierto porque la primera llamada a addin tiene el argumento a. La hiptesis inductiva es que, si a A se puede probar en n pasos o menos, entonces A resultado. Si hay una prueba en n + 1 pasos que a A, entonces el ltimo paso era una aplicacin de reflexividad, aumentatividad o transitividad sobre un hecho a b probado en n o menos pasos.

resultado := ; /* fdcount es un array cuyo i ensimo elemento contiene el nmero de atributos en la parte izquierda del i ensimo FD, que no se conocen an para estar en a+ */ for i := 1 a |F| do begin supngase que b g denota el i ensimo FD; fdcount [i] :=|b|; 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 ensimo FD */ for each atributo A do begin aparece [A] := NIL; for i := 1 a |F| do begin supngase que b g denota el i ensimo FD; if A b then sumar i a aparece [A]; end end addin (a); return (resultado); procedure addin (a); for each atributo A en a do begin if A resultado then begin resultado := resultado {A}; for each elemento i de aparece[A] do begin fdcount [i] :=fdcount [i] - 1; if fdcount [i] := 0then begin supngase que b g denota el i ensimo FD; addin (g); end end end end Figura 7.22. Un algoritmo para calcular a+
st

Si se emple reflexividad o aumentatividad en el paso (n + 1) , A debe haber estado en resultado al final del nth paso. De lo contrario, por la hiptesis inductiva b resultado. Por lo tanto, la dependencia empleada en probar b g, A g tendr fdcount definido a 0 por el final del paso ensimo. Por tanto, A se aadir a resultado. Para ver que este algoritmo es ms eficiente que el presentado en el captulo, ntese que se busca cada FD una vez en el programa principal. El array resultante parece tiene un tamao proporcional al de los FDs dados. Las llamadas de recursividad a addin resultan en procesamiento lineal en el tamao de parece. Por tanto el algoritmo tiene complejidad temporal, que es lineal en el tamao de los FDs dados. Por otro lado, el algoritmo dado en el texto tiene complejidad temporal cuadrtica, por ello puede realizar el bucle tantas veces como el nmero de FDs, rastreando todos ellos una vez en cada bucle.

7.15 Dado el esquema de la base de datos R(a, b, c), y una relacin r del esquema R, escrbase una consulta SQL para comprobar si se cumple la dependencia funcional b g c sobre la relacin r; Escrbase tambin una declaracin SQL que haga cumplir la dependencia funcional. Supngase que no hay ningn valor nulo. Respuesta: a. La consulta se presenta a continuacin. Su resultado es no vaco si y slo si b g c no se mantiene en r. select b from r group by b having count(distinct c) > 1 b. create assertion b-hasta-c check (not exists (select b from r group by b having count(distinct c) > 1 ) ) 7.16 Demustrese que la siguiente descomposicin del esquema R, del Ejercicio 7.2, no es una descomposicin de reunin sin prdida. (A, B, C) (C, D, E). Sugerencia: Se da un ejemplo de la relacin 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 a1 a2 Con R1 = (A, B, C), R2 = (C, D, E) : a. R1 (r) sera: A a1 a2 b. R2 (r) sera: C c1 D d1 E e1 B b1 b2 C c1 c1 B b1 b2 C c1 c2 D d1 d2 E e1 e2

c.

R1 (r) |x| R2 (r) sera:

A a1 a1 a2 a2

B b1 b1 b2 b2

C c1 c1 c1 c1

D d1 d2 d1 d2

E e1 e2 e1 e2

Claramente, R1 (r) |x| R2 (r) r. Por lo tanto, esto es una reunin con prdida. 7.17 Sea R1, R2, . . . , Rn una descomposicin del esquema U. Sea u(U) una relacin y sea ri = RI (u); Demustrese que u r1 |x| r2 |x| ... |x| rn Respuesta: Considrese alguna tupla t en u. Ntese que ri = Ri (u) implica que t[Ri] ri, 1 i n. As, t[R1] |x| t[R2] |x| . . . |x| t[Rn] r1 |x| r2 |x| . . . |x| rn
1 1 1 1 1

Mediante la definicin de reunin natural, t[R1] |x| t[R2] |x| . . . |x| t[Rn] = a (sb (t[R1] t[R2] . . . t[Rn]))
1 1

donde la condicin b se cumple si los valores de los atributos con el mismo nombre en una tupla son iguales y donde a = U. El producto cartesiano de tuplas sencillas genera una tupla. El proceso de seleccin se cumple porque todos los atributos con el mismo nombre deben tener igual valor, dado que son proyecciones desde la misma tupla. Finalmente, la clusula de proyeccin elimina nombres de atributos duplicados. Mediante la definicin de descomposicin, U = R1 R2 ... . Rn, que significa que todos los atributos de t estn en t[R1] |x| t[R2] |x| ... . . |x| t[Rn]. Es decir, t es igual al resultado de esta reunin. Dado que t es una tupla cualquiera de u,
1 1 1

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


1 1 1

7.18 Demustrese que la descomposicin del Ejercicio 7.2 no es una descomposicin que preserve las dependencias. Respuesta: La dependencia B g D no est preservada. F1, la restriccin de F a (A, B, C) es A g ABC, A g AB, A g AC, A g BC, A g B, A g C, A g A, B g B, C g C, AB g AC, AB g ABC, AB g BC, AB g AB, AB g A, AB g B, AB g C, AC (igual que AB), BC (igual que AB), ABC (igual que AB). F2, la restriccin de F a (C, D, E) es A g ADE, A g AD, A g AE, A g DE, A g A, A g D, A g E, D g D, E (igual que A), AD, AE, DE, ADE (igual que A). Se ve fcilmente que (F1 F2)+ no contiene B g D, dado que el nico FD en F1 F2 con B como el lado izquierdo es B g B, un FD trivial. Se ver en el Ejercicio 7.22 que B g D est efectivamente en F+. As, B g D no est preservado. Ntese que CD g ABCDE tampoco est preservado. Un argumento sencillo es el siguiente: F1 no contiene dependencias con D en el lado derecho de la flecha. F2 no contiene dependencias con B en el lado izquierdo de la flecha. Por lo tanto, para B g D al estar preservado debe haber un FD, B g a en F+1 y a g D en F+2 (as B g D se deducira por transitividad). Dado que la interseccin de dos esquemas es A, a = A. Obsrvese que B g A no est en F+1, pues B+ = BD. 7.19 Demustrese que es posible asegurar que una descomposicin que preserve dependencias en 3FN es una descomposicin de reunin sin prdida garantizando que, al menos, un esquema contiene una clave candidata para el esquema que se est descomponiendo. (Sugerencia: Demustrese que la reunin de todas las proyecciones en los esquemas de la descomposicin no pueden tener ms tuplas que la relacin original).

Respuesta: Sea F un conjunto de dependencias funcionales que se cumplen en un esquema R. Sea s = {R1,R2, . . . , Rn} una descomposicin que preserva dependencias en 3FN de R. Sea X una clave candidata de R. Considrese una instancia legal r de R. Sea j = X (r) |x| R1 (r) |x| R2 (r) . . . Rn(r). Se desea probar 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 esta afirmacin se emplea el siguiente mtodo inductivo; Sea F = F1 F2 . . . Fn, donde cada Fi es la restriccin de F al esquema Ri en s. Considrese el empleo del algoritmo dado en la Figura 7.7 para calcular el cierre de X bajo F. Se emplea la induccin sobre el nmero 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 sabe que t1[resultado] = t2[resultado] es cierto. Paso de induccin : Supongamos que se cumple t1[resultado] = t2[resultado] al final de la k ejecucin del bucle for. Supngase que la dependencia funcional considerada en la k + 1 ejecucin del bucle for es b g g y que b resultado. b resultado implica que t1[b] = t2[b] es cierto. El hecho de que se cumpla b g g para algn conjunto de atributos Ri en s y que t1[Ri] y t2[Ri] estn en PRi (r), implica que t1[g] = t2[g] es tambin cierto. Dado que ahora g se ha aadido a resultado por medio del algoritmo, se sabe que t1[resultado] = t2[resultado] es cierto al final de la k + 1 ejecucin del bucle for. Dado que s est preservando las dependencias y X es una clave de R, todos los atributos de R estn en resultado cuando finaliza el algoritmo. As, t1[R] = t2[R] es cierto, es decir, t1 = t2 tal y como se afirm anteriormente. Esta afirmacin implica que el tamao de PX (j) es igual al de j. Ntese tambin que PX (j) = PX (r) = r (dado que X es una clave de R). De esta manera se ha probado que el tamao 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. Ntese que como X est trivialmente en 3FN, s {X} es una descomposicin de reunin sin prdida que preserva las dependencias en 3FN. 7.20 Indquense los tres objetivos de diseo de las bases de datos relacionales y explquese el motivo de que cada uno de ellos sea deseable. Respuesta: Los tres objetivos del diseo son descomposicin de reunin sin prdida, descomposicin que preserva las dependencias y minimizacin de la repeticin de informacin. Son convenientes para poder mantener una base de datos veraz, comprobar rpidamente la exactitud de las actualizaciones y la menor cantidad de espacio posible. 7.21 Se da una descomposicin de reunin sin prdida en FNBC del esquema R del ejercicio 7.2.

Respuesta: A partir del Ejercicio 7.11, se sabe que B g D no es trivial y el lado izquierdo no es una superclave. 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 relacin R y un conjunto de dependencias funcionales F tales que, al menos, haya tres descomposiciones de reunin sin prdida distintas de R en FNBC.

Respuesta: Dada la relacin R = (A, B, C, D), el conjunto de dependencias funcionales F = A g B, C g D, B g C permite tres descomposiciones FNBC distintas. R1 = {(A, B), (C, D), (B, C)} est en FNBC como lo estn R2 = {(A, B), (C, D), (A, C)} R3 = {(B, C), (A, D), (A, B)} 7.23 Al disear una base de datos relacional, indquese el motivo de que se pueda escoger un diseo que no sea FNBC. Respuesta: FNBC no siempre preserva las dependencias. Por lo tanto, se pude querer elegir otra forma normal (especficamente 3FN) con el fin de hacer, durante las actualizaciones, ms fcil la verificacin de las dependencias. Esto evitara reuniones para verificar las dependencias e incrementara el rendimiento del sistema. 7.24 Se da una descomposicin en 3FN de reunin sin prdida que conserve las dependencias del esquema R del Ejercicio 7.2. Respuesta: Primero se nota que las dependencias dadas en el Ejercicio 7.2 forman un recubrimiento cannico. 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 una descomposicin de reunin sin prdida que preserva las dependencias. Ntese que el esquema original R = (A, B, C, D, E) ya est en 3FN. As, no era necesario aplicar el algoritmo, tal y como se hizo anteriormente. El esquema original simple es trivialmente una reunin sin prdida, descomposicin que preserva las dependencias. 7.25 Sea un atributo primo que aparece como mnimo en una clave candidata. Sean y conjuntos de atributos tales que a g ,pero no se cumple que g a. Sea A un atributo que no est en ni en y que cumple g a. Se dice que A es dependiente de manera transitiva de . Se puede reformular la definicin de 3FN de la manera siguiente: un esquema de relacin R est en la 3FN, respecto a un conjunto F de dependencias funcionales, si no hay atributos no primos A en R, para los cuales A sea dependiente de manera transitiva de una clave de R. Demustrese que esta nueva definicin es equivalente a la original. Respuesta: Supngase que R est en 3FN de acuerdo a la definicin del libro de texto. Se ve que est en 3FN de acuerdo a la definicin en el ejercicio. Sea A un atributo no primo en R, que es transitivamente dependiente sobre una clave a para R. Entonces ah existe b R, de tal manera que g A, a g , A a, A y no se cumple que g a. Pero entonces g A viola la definicin del libro de texto de 3FN, dado que A implica g A no es trivial Dado que g a 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 definicin del ejercicio, est en 3FN de acuerdo a la definicin del libro de texto. Supngase que R no est en 3FN de acuerdo a la definicin del libro de texto.

Entonces hay un FD, a g que incumple las tres condiciones. As a g no es trivial. a no es una superclave para R. Algn A en a no est en ninguna clave candidata. Esto implica que A no es primo y a g A. Sea g una clave candidata para R. Entonces g g a, a g g no se cumple (dado que a no es una superclave), A a y A g (dado A no es primo). As, A es transitivamente dependiente de g, violando la definicin del ejercicio. 7.26 Una dependencia funcional a g se denomina una dependencia parcial, si hay un subconjunto adecuado g de a, tal que g g . Se dice que es parcialmente dependiente de a. Un esquema de relacin R est 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. Demustrese que cada esquema en 3FN est en 2FN. (Sugerencia: demustrese que cada dependencia parcial es una dependencia transitiva). Respuesta: En referencia a las definiciones del Ejercicio 7.25, se dice que un esquema de relacin R est en 3FN si no hay ningn atributo primo A en R, para el que A sea transitivamente dependiente sobre una clave para R. Tambin se puede rescribir la definicin de 2FN dada aqu como : Un esquema de relacin R est en 2FN, si ningn atributo no primo A es parcialmente dependiente sobre cualquier clave candidata para R. Para probar que todo esquema en 3FN est en 2FN, es suficiente mostrar que si un atributo no primo A es parcialmente dependiente sobre una clave candidata a, entonces A es tambin transitivamente dependiente sobre la clave a. Sea A un atributo no primo en R. Sea a una clave candidata para R. Supngase que A es parcialmente dependiente sobre a. Desde la definicin de una dependencia parcial, se sabe que para algunos subconjuntos propios b de a, b g A. Dado que b a, a g b. Adems, b g a no se cumple, dado que a es una clave candidata. Finalmente, dado que A no es primo, no puede estar ni en b ni en a. De esto se concluye que a g A es una dependencia transitiva. Por lo tanto, se ha probado que cada esquema en 3FN, lo est tambin en 2FN. 7.27 Dados los tres objetivos del diseo de bases de datos relacionales, indquese si hay alguna razn para disear un esquema de base de datos que se halle en 2FN, pero que no se halle en una forma normal de orden superior. (Vase el Ejercicio 7.26 para obtener la definicin de 2FN). Respuesta: Los tres objetivos del diseo de bases de datos relacionales estn para evitar Repeticin de informacin Incapacidad para representar informacin Prdida de informacin
2NF no prohbe tanta repeticin de informacin debido a que el esquema (A, B, C) con dependencias A g B y B g 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 repeticin de informacin se permite en 3FN en algunos, pero no todos, casos donde lo est en 2FN. As, en general, 3FN reduce la repeticin de informacin. Dado que siempre se puede realizar una descomposicin en 3FN de reunin sin prdida, no hay prdida de informacin al pasar de 2FN a 3FN.

Ntese que la descomposicin {(A, B), (B, C)} es una descomposicin en 3FN de reunin sin prdida y que preserva dependencias, del esquema (A, B, C). Sin embargo, en el caso de que se elija esta descomposicin, la recuperacin de la informacin sobre la relacin entre A, B y C requiere una reunin de las dos relaciones que, en la correspondiente descomposicin en 2FN, se evita. De este modo, la decisin sobre la forma normal a elegir depende del resultado de comparar el coste de la verificacin de la dependencia con el de las reuniones. Generalmente se prefiere la 3FN. La verificacin de las dependencias necesita hacerse con cada insercin o actualizacin de las instancias de un esquema en 2FN, mientras que slo algunas consultas requerirn la reunin de instancias de un esquema en 3FN. 7.28 Se da un ejemplo de un esquema de relacin R y un conjunto de dependencias tales que R est en FNBC, pero no en 4FN. Respuesta: El esquema de relacin R = (A, B, C, D, E) y el conjunto de dependencias A gg BC B gg CD E gg AD constituyen una descomposicin FNBC, sin embargo es claro que no est en 4FN. (Es BCNF porque todos los FDs son triviales). 7.29 Explquese el motivo de que 4FN sea una forma normal ms deseable que FNBC.

Respuesta: 4FN es ms conveniente que FNBC porque reduce la repeticin de informacin. Si se considera un esquema FNBC que no est en 4FN (vase el Ejercicio 7.28), se observa que la descomposicin en 4FN no pierde informacin con tal que se use una descomposicin de reunin sin prdida, todava se reduce la redundancia. 7.30 Explquese como pueden surgir las tuplas colgantes. Explquense los problemas que pueden causar.

Respuesta: Las tuplas colgantes pueden aparecer cuando se inserta una tupla en una relacin descompensada, pero ninguna tupla se inserta en las otras relaciones de la composicin. Pueden originar que las consultas que formen la reunin de una relacin descompuesta devuelvan valores incorrectos, dado que podran no estar incluidas las tuplas colgantes. Como se ve en el Captulo 5, las tuplas colgantes se pueden evitar, mediante la especificacin de ligaduras de integridad referencial.

CAPITULO

BASES DE DATOS ORIENTADAS A OBJETOS


Este captulo aporta una introduccin a las bases de datos orientadas a objetos. Este captulo y el siguiente forman una unidad lgica y deberan ensearse consecutivamente. Es posible ensear estos captulos antes de cubrir las normalizaciones (Captulo 7). Los apartados del captulo anteriores al apartado sobre C++ y ODMG persistentes (Apartado 8.5), no presuponen familiaridad alguna con un lenguaje de programacin orientada a objetos. Sin embargo, es bastante posible que los estudiantes ya estn familiarizados con los conceptos bsicos y los lenguajes de la programacin orientada a objetos. Para tales estudiantes el Apartado 8.2 se puede cubrir con relativa rapidez. Sin embargo, es importante sealar la motivacin de las caractersticas de la orientacin a objetos en el contexto de una base de datos y como los requerimientos varan en funcin del lenguaje de programacin. Hay una tendencia a confundir lenguajes orientados a objetos persistentes con bases de datos orientadas a objetos. Un lenguaje orientado a objetos persistentes debera ser simplemente un interface para una base de datos. Es importante recordar a los estudiantes todas las caractersticas que un sistema de bases de datos debe tener, de tal modo que puedan distinguir, con toas las de la ley, sistemas de bases de datos orientados a objetos de sistemas que aportan interfaces orientados a objetos, pero aportan poco en el sentido de las posibilidades de las bases de datos, tales como las facilidades en las consultas, catlogos en lnea, control de concurrencias y recuperaciones. Hay varios sistemas comerciales de bases de datos orientadas a objetos en el mercado, as como unos pocos sistemas de uso pblico. Algunos de los sistemas comerciales tambin ofrecen precios reducidos o copias gratuitas para usos acadmicos. Los sistemas comerciales de bases de datos orientadas a objetos incluyen Objectivity (www.objectivity.com), ObjectStore (www.odi.com) y Versant (www.versant.com). Cambios a la tercera edicin: Se han actualizado algunos ejemplos para hacerlos ms intuitivos. El tratamiento de ODMG se ha actualizado hasta ODMG-2, incluyendo la nueva sintaxis (con un prefijo d_ para las palabras clave) y la nueva caracterstica d_rel_ref para declarar relaciones.

Ejercicios
8.1 Para cada una de las siguientes reas de aplicacin, explquese por qu un sistema de bases de datos relacional resultara inadecuado. Indquense todos los componentes especficos del sistema que habra que modificar. a. Diseo asistido por computadora. b. Bases de datos multimedia. Respuesta: Cada una de las grandes aplicaciones contiene elementos de datos especializados (por ejemplo, un mdulo de programa, una imagen grfica, voces digitalizadas, un documento). Estos elementos de datos tienen operaciones especficas para ellos (por ejemplo, compilar, rotar, escuchar, formatear) que no se pueden expresar mediante lenguajes de consultas relacionales. Son elementos de datos de longitud variable que hace impracticable almacenarlos en los campos cortos que estn permitidos en los registros, para tales sistemas de bases de datos. Por consiguiente es necesario cambiar tanto el modelo, como los lenguajes de manipulacin y definicin de los datos. Adems, las transacciones anidadas y las de larga duracin son tpicas de estas aplicaciones. Es probable que sean necesarios cambios en los sistemas de concurrencia y recuperacin. 8.2 En qu se diferencia el concepto de objeto en el modelo orientado a objetos, del concepto de entidad en el modelo entidad - relacin? Respuesta: Una entidad es simplemente una coleccin de variables o elementos de datos. Un objeto es una encapsulacin de datos as como los mtodos (cdigo) para operar sobre los datos. Los datos miembros de un objeto son visibles directamente slo para sus mtodos. El mundo exterior puede acceder a los datos de los objetos, slo pasando mensajes predefinidos para ello y estos mensajes se implementan por medio de los mtodos. 8.3 Una compaa de alquiler de coches tiene una base de datos de los vehculos de su flota actual. Para todos los vehculos incluye el nmero de identificacin del vehculo, el nmero de matrcula, fabricante, modelo, fecha de adquisicin y el color. Se incluyen datos especficos para algunos tipos de vehculos: Camiones: capacidad de carga. Coches deportivos: potencia, edad mnima del conductor. Mono volmenes: nmero de plazas. Vehculos todo terreno: altura de los bajos, eje motor (traccin a dos o cuatro ruedas). Constryase, para esta base de datos, la definicin del esquema de una base de datos orientada a objetos. Utilcese la herencia donde sea conveniente. Respuesta:

class vehculo { int string string string date color-type };

id-vehculo; nmero-matrcula; fabricante; modelo; fecha-compra; color;

class camin isa vehculo { int capacidad-carga; }; class coches-deportivos isa vehculo { int potencia; int edad-mnima-conductor; }; class monovolumen isa vehculo { int nmero-plazas; }; class vehculos-todo-terreno isa vehculo { real altura-bajos; drivetrain-type ejemotor; }; Se supone que color-type y drivetrain-type son tipos definidos previamente. 8.4 Explquese el motivo de que pueda haber ambigedad en caso de herencia mltiple. Ilstrese la explicacin con un ejemplo. Respuesta: Una clase hereda las variables y mtodos de todas sus superclases inmediatas. As, podra heredar una variable o mtodo del mismo nombre desde ms de una superclase. Cuando se referencia esa variable particular o mtodo de un objeto de la subclase, hay una ambigedad con respecto a cul de las superclases proporciona la herencia. Por ejemplo, sean las clase profesor y estudiante, ambas con una variable departamento. Si una clase profesor asistente hereda desde ambas clases, cualquier referencia a la variable departamento de un objeto profesor asistente es ambiguo. 8.5 Explquese la diferencia entre el concepto de identidad de los objetos del modelo orientado a objetos y 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 es independiente de los valores de los datos, dado que los sistemas orientados a objetos emplean identidad incorporada. 8.6 Explquese la diferencia de significado entre los arcos de un grafo dirigido acclico, que represente la herencia 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 un objeto de la clase B lo es tambin de la clase A. Tiene todas las propiedades de los objetos de la clase A, ms las de los objetos propios. En particular, hereda todas las variables y mtodos de la clase A. Puede, por

supuesto, aportar sus propias implementaciones para los mtodos 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 ningn 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 objeto de clase A puede acceder a la variables del objeto B contenido en l, slo por medio de los mtodos del objeto B. 8.7 Por qu permiten los lenguajes de programacin persistentes los objetos transitorios? Sera ms sencillo utilizar slo objetos persistentes y borrar los objetos innecesarios al terminar la ejecucin? Explquese la respuesta. Respuesta: La creacin, la eliminacin y los accesos, sern generalmente ms lentos y caros para objetos persistentes almacenados en la base de datos, que para objetos transitorios en la memoria local de la transaccin. Esto se debe a los gastos generales de conservar la semntica de las transacciones, seguridad e integridad. Dado que un objeto transitorio es puramente local a la transaccin que lo crea y no se incorpora a la base de datos, todos estos gastos generales se pueden evitar. As, con el objeto de aportar accesos eficientes a los datos puramente locales y temporales, los lenguajes de programacin persistentes soportan objetos transitorios. 8.8 Empleando C++ de ODMG a. Dense definiciones de esquemas correspondientes al esquema relacional de la Figura 3.39, empleando referencias para expresar las relaciones de clave externa. b. Escrbanse 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 traduccin directa del esquema relacional, mientras que la otra emplea, ms directamente, las caractersticas de la orientacin 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 compaa : public d Object { public: d String nombre-compaa; d String ciudad; }; class trabaja : public d Object { public: d Ref<empleado> persona; d Ref<compaa> comp; d Long sueldo; };

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<compaa, empleados> comp; d Ref<empleado> jefe; d Long sueldo; }; class compaa : public d Object { public: d String nombre-compaa; 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 compaa con mayor nmero de empleados. d Ref<compaa> mayoraempleados(){ d Database emp db obj; d Database * emp db = emp db obj; emp db- >open(Emp-DB); d Transaction Trans; Trans.begin(); d Extent<compaa> all comps(emp db); d Iterator<d Ref<compaa>> iter=all comps.create iterator(); d Iterator<d Ref<empleado>> iter2; d Ref<compaa> 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; }

Averiguar la compaa con la nmina ms reducida. d Ref<compaa> 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<compaa> all comps(emp db); d Iterator<d Ref<compaa>> iter=all comps.create iterator(); d Iterator<d Ref<empleado>> iter2; d Ref<compaa> 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 compaas cuyos empleados ganan un salario mayor, en promedio, que el salario medio del Banco Importante. d Ref<compaa> 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<compaa> all comps(emp db); d Iterator<d Ref<compaa>> iter=all comps.create iterator(); d Iterator<d Ref<empleado>> iter2; d Ref<compaa> c, FBC=all comps.select(nombre-compaa=Banco Importante); d Set<d Ref<compaa>> 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++; }

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 la Figura 2.29. Utilcense referencias para implementar relaciones. Respuesta: class persona : public d Object { public: d String nombre; d String direccin; d String telfono; }; 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 ao; d String ttulo; float precio; d String ISBN; d Rel Set<autor, libros> autores; d Rel Ref<editor, libros> libro.editor; };

class cestacompra : public d Object { public: d String ID-cesta; d Rel Ref<cliente, cestas> propietario; d Set<d Ref<libro qty>> contiene; }; class almacn : public d Object { public: d String direccin; d String telfono; d String cdigo; d Set<d Ref<libro qty>> stocks; }; class libro qty : public d Object { public: d Ref<libro> libro; int nmero; }; const char libros[] = libros; const char autores[] = autores; const char libro editor[] = libro editor; const char cestas[] = cestas; const char propietario[] = propietario; 8.10 Explquese, por medio de un ejemplo, cmo representar una relacin ternaria en un modelo de datos orientado a objeto, como C++ de ODMG. Respuesta: Para representar relaciones ternarias, crear una clase correspondiente a la relacin y referirse a las entidades en esta clase. Por ejemplo, para representar la relacin ternaria de la Figura 2.13 se hace lo siguiente: class trabajaen : public d Object { public: d Ref<empleado> emp; d Ref<sucursal> sucursal; d Ref<trabajo> trabajo; }; 8.11 Explquese la manera en que se implementa un puntero persistente. Comprese esta implementacin con la de los punteros de los lenguajes de propsito general, tales como C o Pascal. Respuesta: Los punteros persistentes se pueden implantar como Tipos de Datos Abstractos (TDAs). Estos TDAs deben aportar las operaciones de punteros tpicas, como incrementando y desreferenciando, as su empleo y el de los punteros regulares es uniforme. Por otro lado, los punteros regulares generalmente incorporan tipos, implementados como parte del lenguaje.

8.12

Si se crea un objeto sin que haya referencias al mismo, cmo se puede borrar?

Respuesta: Si se crea un objeto sin ninguna referencia sobre l, no puede ser accedido ni borrado por medio de un programa. La nica manera para el sistema de la base de datos es, por s mismo, localizar y borrar tales objetos. Esto se denomina recogida de basura. Una forma de hacer la recogida de basura es por el mtodo de marcar y barrer. Primero se marcan los objetos referidos directamente por programas. Despus se siguen las referencias desde estos objetos a otros que, asu vez, se marcan. El procedimiento continua repetidas veces, hasta que no hay ms objetos sin marcar que puedan alcanzarse, mediante cadenas de referencia desde objetos marcados. En este punto, se borran todos los objetos restantes sin marcar. Este mtodo es correcto; se puede probar que si no se marca ningn nuevo objeto despus de una ronda de marcar y barres, los restantes objetos sin marcar estn de hecho sin referenciar. 8.13 Considrese un sistema que proporcione objetos persistentes. Se trata necesariamente de un sistema de bases de datos?. Explquese la respuesta. Respuesta: Un sistema de base de datos debe proporcionar prestaciones como transacciones, consultas (recuperacin asociativa de objetos), seguridad e integridad. Un sistema de objetos persistentes puede no ofrecer tales prestaciones.

CAPITULO

BASES DE DATOS RELACIONALES ORIENTADAS A OBJETOS


Este captulo describe extensiones a los sistemas de bases de datos relacionales, para soportar tipos de datos complejos y caractersticas orientadas a objetos. Tales sistemas extendidos se denominan sistemas relacionales orientados a objetos. Desde que el captulo se incorpor a la tercera edicin, la mayora de los sistemas de bases de datos comerciales han incorporado algunos complementos a las caractersticas de las relaciones orientadas a objetos y estas caractersticas se han estandarizado como parte del SQL:1999. Sera instructivo asignar ejercicios a los estudiantes con el objeto de encontrar aplicaciones en las que el modelo relacional objeto, en particular los objetos complejos, fuera ms idneo que el modelo relacional tradicional. Cambios a la tercera edicin: Las caractersticas del lenguaje de consultas se basan ahora en el estndar SQL:1999, el cual no estaba listo cuando se public la tercera edicin; esa edicin estaba basada en las caractersticas de diferentes propuestas de ampliacin del SQL.

Ejercicios
9.1 Considrese el esquema de la base de datos Emp = (enombre, setof(Hijos), setof(Conocimientos)) Hijos = (nombre, Cunpleaos) Cumpleaos = (da, mes, ao) Conocimientos = (escribir-a-mquina,setof(Exmenes)) Exmenes = (ao, ciudad) Supngase que los atributos de tipo setof (Hijos), setof(Conocimientos), y setof(Exmenes), tienen nombres de atributos ConjuntoHijos, ConjuntoConocimientos y ConjuntoExmenes, respectivamente. Supngase que la base de datos contiene una relacin emp (Emp). Escrbanse las siguientes consultas en SQL:1999 (con las extensiones descritas en este captulo). a. Encuntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo. b. Encuntrense los empleados que hicieron un examen del tipo de conocimiento escribir-a-mquina en la ciudad de San Rafael. c. Indicar todos los tipos de conocimiento de la relacin emp. Respuesta: a. Encuntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo. select nombree from emp as e, e.ConjuntoHijos as c where Marzo in (select cumpleaos.mes from c ) b Encuntrense los empleados que hicieron un examen del tipo de conocimiento escribir-a-mquina en la ciudad de San Rafael. select e.nombree from emp as e, e.ConjuntoConocimientos as s, s.ConjuntoExmenes as x where s.tipo = escribir a mquina and x.ciudad = San Rafael c. Indicar todos los tipos de conocimiento de la relacin emp. select distinct s.tipo from emp as e, e.ConjuntoExmenes as s

9.2 Redisese la base de datos del Ejercicio 9.1 en la primera y cuarta forma normal. Indquense las dependencias funcionales o multivaloradas que se den por supuestas. Indquense tambin todas las restricciones de integridad referencial que deban incluirse en los esquemas de la primera y cuarta formas normales. Respuesta: Para poner el esquema en primera forma normal se aplanan todos los atributos en un esquema de relacin sencilla. Empleado-detalles = ( nombree, nombrec, dab, mesb, aob, tipos, aox, ciudadx) Se renombran los atributos por motivos de claridad; nombrec es Hijos.nombre y dab, mesb, aob son los atributos de Cumpleaos; tipos es Conocimientos.tipo y aox y ciudadx son los atributos de Exmenes. Los FDs y las dependencias multivaloradas supuestas son: nombree, nombrec g dab, mesb, aob

nombree nombree, tipos

gg gg

nombrec, dab, mebs, aob aox, ciudadx

El FD captura el hecho de que un hijo tenga un nico cumpleaos, bajo la suposicin de que un empleado no puede tener dos hijos del mismo nombre. Los MVDs capturan el hecho de que no hay relacin entre los hijos de un empleado y su formacin. El esquema rediseado en cuarta forma normal es: Empleado = ( nombree) Hijo = ( nombree, nombrec, dab, mesb, aob) Conocimientos = (nombree, tipos, aox, ciudadx) nombree ser la clave primaria de Empleado y ( nombree, nombrec) ser la clave primaria de Hijo. El atributo nombree es una clave externa en Hijo y en Conocimientos, refirindose a la relacin Empleado. 9.3 Considrense los esquemas de la tabla personas y las tablas estudiantes y profesores, que se crearon bajo persona en el Apartado 9.3. Se da un esquema relacional en tercera forma normal que represente la misma informacin. Recuprense las restricciones sobre subtablas y dense todas las restricciones que deban imponerse en el esquema relacional para que cada ejemplar de la base de datos del esquema relacional pueda representarse tambin mediante un ejemplar del esquema con herencia. Respuesta: Un esquema relacional correspondiente, en tercera forma normal, es el siguiente: Personas = (nombre, direccin) Estudiantes = (nombre, titulacin, departamento-estudiante) Profesores = (nombre, sueldo, departamento-profesor) nombre es la clave primaria de las tres relaciones y es tambin una clave externa referida a Personas, para Estudiantes y Profesores. En lugar de situar slo el atributo nombre de Personas, en Estudiantes y Profesores, se pueden incluir sus dos atributos. En ese caso, habr un leve cambio, a saber (nombre, direccin) se convertir en la clave externa de Estudiantes y Profesores. La claves primarias permanecern igual en todas las tablas. 9.4 Una compaa de alquiler de coches tiene una base de datos de los vehculos de su flota actual. Para todos los vehculos incluye su nmero de bastidor, el nmero de matrcula, fabricante, modelo, la fecha de compra y su color. Se incluyen datos especficos para algunos tipos de vehculos: Camiones: capacidad de carga. Coches deportivos: potencia, edad mnima del arrendatario. Mono volmenes: nmero de plazas. Vehculos todo terreno: altura de los bajos, eje motor (traccin a dos o cuatro ruedas). Constryase una definicin de esquema para esta base de datos en SQL:1999. Utilcese la herencia donde sea conveniente. Respuesta: Para este problema se emplea la herencia de tablas. Se supone que MiFecha, Color y Tipo Eje Motor son tipos definidos previamente.

create type Vehculo (id-vehculo integer, nmero matrcula char(15), fabricante char(30), modelo char(30), fecha-compra MiFecha, color Color) create table vehculo of type Vehculo create table camin (capacidad-carga integer) under vehculo create table cochedeportivo (potencia integer edad-mnima-conductor integer) under vehculo create table monovolumen (nmero-plazas integer) under vehculo create table vehculotodoterreno (altura-bajos real ejemotor Tipo Eje Motor) under vehculo 9.5 Explicar la diferencia entre un tipo x y un tipo de referencia ref(x). En qu circunstancias se escogera 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, hay una referencia a algn objeto de tipo x. Se elige un tipo de referencia para un atributo, si la finalidad prevista de ese atributo es referirse a un objeto independiente. 9.6 Considrese el diagrama E-R de la Figura 2.11, que contiene atributos compuestos, multi valorados y derivados. a. Se da una definicin de esquema en SQL:1999 correspondiente al diagrama E-R. Utilcese un array para representar el atributo multivalorado y constructoras apropiadas de SQL:1999 para representar los otros tipos de atributos. b. Dense constructores para cada uno de los tipos estructurados definidos. Respuesta: a. A continuacin se presenta la correspondiente definicin del esquema en SQL extendido: Ntese que el atributo edad ha sido convertido en un mtodo. create type Nombre (primer-nombre varchar(15), inicial-segundo-nombre char, apellido varchar(15))

create type Calle (nombre-calle varchar(15), nmero-calle varchar(4), nmero-apartamento varchar(7)) create type Direccin (calle Calle, ciudad varchar(15), provincia varchar(15), cdigo-postal char(6)) create table cliente (nombre Nombre, id-cliente varchar(10), direccin Direccin, telfonos char(7) array[10], dob fecha) method integer edad() b create function Nombre (f varchar(15), m char, l varchar(15)) returns Nombre begin set primer-nombre = f; set inicial-segundo-nombre = m; set apellido = l; end create function Calle (snombre varchar(15), sno varchar(4), ano varchar(7)) returns Calle begin set nombre-calle = snombre; set nmero-calle = sno; set nmero-apartamento =ano; end create function Direccin (s Calle, c varchar(15), sta varchar(15), postal varchar(6)) returns Direccin begin set calle = s; set ciudad = c; set provincia =sta; set cdigo-postal = postal; end

9.7 Se da una definicin del esquema en SQL:1999 del diagrama E-R de la Figura 2.17, que contiene especializaciones. Respuesta: create type Persona (nombre varchar(30), calle varchar(15), ciudad varchar(15)) create type Empleado under Persona

(sueldo integer) create type Cliente under Persona (valoracin-crdito integer) create type Responsable under Empleado (nmero-oficina integer) create type Cajero under Empleado (nmero-estacin integer, horas-trabajadas integer) create type Secretaria under Empleado (horas-trabajadas integer) create table persona of Persona create table empleado of Empleado under persona create table cliente of Cliente under persona create table responsable of Responsable under empleado create table cajero of Cajero under empleado create table secretaria of Secretaria under empleado 9.8 Considrese el esquema relacional de la Figura 3.39. a. Se da una definicin de esquema en SQL:1999 correspondiente al esquema relacional, pero usando referencias para expresar las relaciones de claves externas. b. Escrbanse cada una de las consultas del Ejercicio 3.10 del esquema anterior, usando SQL:1999. Respuesta: a. La definicin del esquema se presenta a continuacin. Ntese que se pueden aadir referencias atrasadas, pero no son tan importantes como en OODBS, porque las consultas se pueden escribir en SQL y las reuniones pueden cuidar las restricciones de integridad. create type Empleado (nombre-persona varchar(30), calle varchar(15), ciudad varchar(15)) create type Compaa (nombre-compaa varchar(15), (ciudad varchar(15))

create table empleado of Empleado create table compaa of Compaa create type Trabaja (persona ref(Empleado) scope empleado, comp ref(Compaa) scope compaa, 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 g nombre from trabaja group by comp having count(persona) all(select count(persona) from trabaja group by comp) select comp g nombre from trabaja group by comp having count(sueldo) all(select count(sueldo) from trabaja group by comp) select comp g nombre from trabaja group by comp having avg(sueldo) > (select avg(sueldo) from trabaja where comp g nombre-compaa=Banco Importante)

ii.

iii

9.9

Considrese una base de datos de empleados con las relaciones empleado (nombre-empleado, calle, ciudad) trabaja (nombre-empleado, nombre-compaa, sueldo)

donde las claves primarias estn subrayadas. Escrbase una consulta para encontrar las compaas cuyos empleados 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.

Respuesta: a. create function sueldo-medio(cnombre varchar(15)) returns integer declare resultado integer; select avg(sueldo) into resultado from trabaja where trabaja.compaa-nombre = cnombre return resultado; end select nombre-compaa from trabaja where sueldo-medio(nombre-compaa) > sueldo-medio (Banco Importante) b select nombre-compaa from trabaja group by nombre-compaa having avg (sueldo) > (select avg (sueldo) from trabaja where nombre-compaa = Banco Importante)

9.10 Rescrbase la consulta del Apartado 9.6.1 que devuelve los ttulos de todos los libros que tienen ms de un autor, empleando la clusula with en lugar de la funcin. Respuesta: with autoresmltiples(ttulo, contar) as select ttulo, count(autor) from autores group by ttulo select libros4.ttulo from libros4, autoresmltiples where libros4.ttulo = autoresmltiples.ttulo and autoresmltiples.contar > 1 9.11 Comprese el uso de SQL incorporado con el empleo en SQL de las funciones definidas utilizando un lenguaje de programacin de propsito general. En qu circunstancias se debe utilizar cada una de estas caractersticas? Respuesta: Las funciones SQL son principalmente un mecanismo para extender la potencia del SQL, para gestionar atributos de tipos de datos complejos (como imgenes) o para realizar operaciones complejas y no estndar. El SQL incorporado es til cuando son necesarias acciones imperativas, como la visualizacin de resultados y la interaccin con el usuario. Esto no se puede hacer convenientemente en un entorno de slo SQL. El SQL incorporado se puede emplear, en lugar de funciones SQL, para la recuperacin de datos y, entonces, realizar operaciones de las funciones sobre el resultado del SQL. Sin embargo, un inconveniente es que muchas evaluaciones de las consultas funcionalmente pueden terminar por buclear en el cdigo del lenguaje anfitrin. 9.12 Supngase que ha sido contratado como consultor para seleccionar un sistema de base de datos para la aplicacin de su cliente. Para cada una de las aplicaciones siguientes, indquese el tipo de sistema de base de datos (relacional, base de datos orientada a objetos basada en un lenguaje de programacin persistente, relacional orientada a objetos; no se debe especificar ningn producto comercial) que recomendara. Justifquese la recomendacin.

a. b. c.

Sistema de diseo asistido por computadora para un fabricante de aviones. Sistema para realizar el seguimiento de los donativos hechos a los candidatos a un cargo pblico. Sistema de informacin de ayuda para la realizacin de pelculas.

Respuesta: a. Un sistema de diseo asistido por computadora para un fabricante de aviones: Una base de datos orientada a objetos sera adecuada para esto. La razn es que CAD requiere tipos de datos complejos y, al estar orientadas al clculo, las herramientas CAD son generalmente usadas en un entorno de lenguajes de programacin 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 pblico: Un sistema relacional sera adecuado para esto, al ser de esperar que los tipos de datos resulten sencillos y un mecanismo potente de consultas sea esencial. c. Un sistema de informacin de ayuda a la realizacin de pelculas: Aqu habr un uso intensivo de tipos de datos multimedia y otros tipos de datos complejos. Pero las consultas son probablemente sencillas, por lo que es adecuado un sistema relacional objeto.

CAPITULO
XML

10

En los cuatro aos y medio desde que se public la edicin anterior, XML ha pasado de ser una propuesta poco conocida para el Consorcio World Wide Web, a un extenso conjunto de estndares que estn siendo empleados ampliamente y cuyo uso crece rpidamente. En este perodo los objetivos del XML han pasado de ser una mejora al SGML o HTML, hasta convertirse en el modelo de datos bsico para el intercambio de datos. Nuestra visin de XML est decididamente centrada en las bases de datos: es importante ser consciente que muchos de los usos de XML son centros de documentos, pero creemos que la gran mayora de las aplicaciones XML sern la representacin y el intercambio de datos, entre aplicaciones de bases de datos. En este sentido, XML es un modelo de datos que aporta un nmero de prestaciones ms all de las del modelo relacional, en particular la capacidad para representar informacin afn en una unidad sencilla, mediante el empleo de estructuras anidadas. Los dominios de aplicaciones especficas, para la representacin e intercambio de datos, necesitan sus propios estndares que definan el esquema de datos. Dada la amplia naturaleza del XML y los estndares relacionados, este captulo slo intenta aportar una introduccin y no una descripcin completa. Para un curso que pretenda explorar XML en detalle se puede necesitar material suplementario. Podra incluir tanto informacin en lnea como libros sobre XML.

Ejercicios
10.1 Se da una representacin alternativa de la informacin bancaria que contenga los mismos datos que en la Figura 10.1,pero empleando atributos en vez de sub elementos. Se da tambin el DTD para esta representacin. Respuesta: a. Representacin XML de datos, empleando atributos. <banco> <cuenta nmero-cuenta=A-101 nombre-sucursal=Centro saldo=500> </cuenta> <cuenta nmero-cuenta=A-102 nombre-sucursal=Navacerrada saldo=400> </cuenta> <cuenta nmero-cuenta=A-201 nombre-sucursal=Galapagar saldo=900> </cuenta> <cliente nombre-cliente=Gonzlez calle-cliente=Alma ciudad-cliente=Palo Alto> </cliente> <cliente nombre-cliente=Hayes calle-cliente=Main ciudad-cliente=Harrison> </cliente> <impositor nmero-cuenta=A-101 nombre-cliente=Gonzlez> </impositor> <impositor nmero-cuenta=A-201 nombre-cliente=Gonzlez> </impositor> <impositor nmero-cuenta=A-102 nombre-cliente=Hayes> </impositor> </banco> b DTD para el banco: <!DOCTYPE banco [ <!ELEMENT cuenta > <!ATTLIST cuenta nmero-cuenta ID #REQUIRED nombre-sucursal CDATA #REQUIRED saldo CDATA #REQUIRED > <!ELEMENT cliente > <!ATTLIST cliente nombre-cliente ID #REQUIRED calle-cliente CDATA #REQUIRED calle-cliente CDATA #REQUIRED > <!ELEMENT impositor > <!ATTLIST impositor nmero-cuenta IDREF #REQUIRED nombre-cliente IDREF #REQUIRED > ]>

10.2 Demustrese, mediante un DTD, cmo representar la relacin anidada libros del Apartado 9.1, empleando XML. Respuesta: <!DOCTYPE bib [ <!ELEMENT libro (ttulo, autor+, editor, palabra clave+)> <!ELEMENT editor (nombre-pub, sucursal-pub) > <!ELEMENT ttulo (#PCDATA )> <!ELEMENT ttulo ( #PCDATA )> <!ELEMENT palabra-clave (#PCDATA )> <!ELEMENT nombre-pub (#PCDATA )> <!ELEMENT sucursal-pub (#PCDATA )> ]> 10.3 Se da la DTD, para una representacin XML, del siguiente esquema relacional anidado Emp = (nombree,ConjuntoHijos setof(Hijos), ConjuntoMaterias setof(Materias)) Hijos = (nombre, Cunpleaos) Cumpleaos = (da, mes, ao) Materias = (tipo, ConjuntoExmenes setof(Exmenes)) Exmenes = (ao, ciudad) Respuesta: <!DOCTYPE db [ <!ELEMENT emp ( nombree, hijos*, materias*)> <!ELEMENT hijos (nombre, cumpleaos)> <!ELEMENT cumpleaos (da, mes, ao)> <!ELEMENT materias (tipo, exmenes+)> <!ELEMENT exmenes (ao, ciudad)> <!ELEMENT nombree (#PCDATA )> <!ELEMENT nombre (#PCDATA )> <!ELEMENT da (#PCDATA )> <!ELEMENT mes (#PCDATA )> <!ELEMENT ao (#PCDATA )> <!ELEMENT tipo (#PCDATA )> <!ELEMENT ciudad (#PCDATA )> ]> 10.4 Escrbanse las siguientes consultas en XQuery, asumiendo la DTD del Ejercicio 10.3. a. Encuntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo. b. Encuntrense los empleados que hicieron un examen del tipo de materia mecanografa en la ciudad de Madrid. c. Lstense todos los tipos de materias en Emp. Respuesta: a. Encuntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo. for $e in /db/emp, $m in distinct($e/hijos/cumpleaos/mes) where $m = Marzo return $e/ nombree b. Encuntrense los empleados que hicieron un examen del tipo de materia mecanografa en la

ciudad de Madrid. For $e in /db/emp $s in $e/materias[tipo=mecanografa] $examen in $s/exmenes where $examen/ciudad= Madrid return $e/ nombree c. Encuntrense los empleados que hicieron un examen del tipo de materia mecanografa en la ciudad de Madrid. for $t in distinct (/db/emp/materias/tipo) return $e/enombre 10.5 Escrbanse las consultas en XSLT y XPath sobre la DTD del Ejercicio 10.3, para listar todos los tipos de materia en Emp. Respuesta: a. XPath: /db/emp/materias/tipo b. 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 Escrbase una consulta en XQuery en la representacin XML de la Figura 10.1, para encontrar el saldo total entre todas las cuentas en cada sucursal. (Sugerencia: Emplese una consulta anidada para obtener el 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]/saldo return $s </nombre-sucursal> 10.7 Escrbase una consulta en XQuery en la representacin XML de la Figura 10.1, para calcular la reunin externa por la izquierda de los elementos cliente con elementos cuenta. (Sugerencia: se puede usar la cuantificacin universal.)

Respuesta: <lojoin> for $b in /banco/cuenta, $c in /banco/cliente, $d in /banco/impositor where $a/nmero-cuenta = $d/nmero-cuenta and $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, el nivel ms externo del anidamiento la salida debe tener los elementos correspondientes a los autores y cada uno 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/ttulo $b/editor $b/palabra-clave < \libro> < \autor> 10.9 Se da la DTD para una representacin XML de la informacin de la Figura 2.29. Crear un tipo de elemento separado para representar cada relacin, pero utilcense ID e IDREF para implantar claves primarias y externas. Respuesta: La respuesta se presenta en la Figura 10.1. 10.10 Escrbanse consultas en XSLT y XQuery que devuelvan los elementos cliente con los elementos cuentas asociadas, anidados en los elementos cliente, dada la representacin de la informacin bancaria empleando ID e IDREFS en la Figura 10.8. <!DOCTYPE librera [ <!ELEMENT cesta (contiene+, cesta-de)> <!ATTLIST cesta id-cesta ID #REQUIRED > <!ELEMENT cliente (nombre, direccin, telfono)> <!ATTLIST cliente email ID #REQUIRED > <!ELEMENT libro (ao, ttulo, precio, escrito-por, publicado-por)> <!ATTLIST libro ISBN ID #REQUIRED >

<!ELEMENT almacn (direccin, telfono, existencias)> <!ATTLIST almacn cdigo ID #REQUIRED > <!ELEMENT autor (nombre, direccin, URL)> <!ATTLIST autor idautor ID #REQUIRED > <!ELEMENT editor (direccin, telfono)> <!ATTLIST editor nombre ID #REQUIRED > <!ELEMENT cesta-de > <!ATTLIST cesta-de propietario IDREF #REQUIRED > <!ELEMENT contiene > <!ATTLIST contiene libro IDREF #REQUIRED > nmero CDATA #REQUIRED > <!ELEMENT existencias > <!ATTLIST existencias libro IDREF #REQUIRED > nmero CDATA #REQUIRED > <!ELEMENT escrito-por > <!ATTLIST escrito-por autores IDREFS #REQUIRED > <!ELEMENT publicado-por > <!ATTLIST publicado-por editor IDREF #REQUIRED > <!ELEMENT nombre (#PCDATA )> <!ELEMENT direccin (#PCDATA )> <!ELEMENT telfono (#PCDATA )> <!ELEMENT ao (#PCDATA )> <!ELEMENT ttulo (#PCDATA )> <!ELEMENT precio (#PCDATA )> <!ELEMENT nmero (#PCDATA )> <!ELEMENT URL (#PCDATA )> ]> Figura 10.1 Respuesta: <banco-2> for $c in /banco/cliente return <cliente> $c/* for $a in $c/id(@cuentas) return $a </cliente> </banco-2> 10.11 Se da un esquema relacional para representar la informacin bibliogrfica como se detalla en el fragmento DTD de la Figura 10.13. El esquema relacional debe registrar el orden de los elementos autor. Se puede asumir que slo los libros y artculos aparecen como elementos de nivel superior en los documentos XML. DTD del XML para Librera

Respuesta: libro (id-libro, ttulo, ao, editor, lugar) artculo (id-artculo, ttulo, diario, ao, nmero, volumen, pginas) libro-autor (id-libro, nombre, apellido, orden) artculo-autor (id-artculo, nombre, apellido, orden) 10.12 Considrese el Ejercicio 10.11 y supngase que los autores tambin pueden aparecer como elementos de nivel superior. Qu cambio habra que realizar al esquema relacional? Respuesta: libro (id-libro, ttulo, ao, editor, lugar) artculo (id-artculo, ttulo, diario, ao, nmero, volumen, pginas) autor (nombre, apellido) libro-autor (id-libro, nombre, apellido, orden) artculo-autor (id-artculo, nombre, apellido, orden) 10.13 Escrbanse las consultas en XQuery del fragmento DTD de bibliografa de la Figura 10.13, para realizar lo siguiente. a. Encontrar todos los autores que hayan escrito un libro y un artculo en el mismo ao. b. Visualizar libros y artculos ordenados por ao. c. Visualizar libros con ms de un autor. Respuesta: a. Encontrar todos los autores que hayan escrito un libro y un artculo en el mismo ao. for $a in distinct (/bib/libro/autor) $y in /bib/libro[autor=$a]/ao $art in /bib/artculo[autor=$a and ao=$y] return $a <!DOCTYPE bibliografa [ <!ELEMENT libro (ttulo, autor+, ao, editor, lugar?)> <!ELEMENT artculo (ttulo, autor+, diario, ao, nmero, volumen, pginas?)> <!ELEMENT autor ( apellido, nombre) > <!ELEMENT ttulo (#PCDATA )> similares declaraciones PCDATA por ao, editor, lugar, diario, ao, nmero, volumen, pginas, apellido y nombre ]> Figura 10.13 DTD para datos bibliogrficos. b. Visualizar libros y artculos ordenados por ao. for $a in ((/bib/libro) | (/bib/artculo)) return $a sortby(ao) c. Visualizar libros con ms de un autor. for $a in ((/bib/libro[autor/count()>1]) return $a

10.14 Mustrese la representacin en rbol de los datos XML de la Figura 10.1 y la representacin 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 Considrese la siguiente DTD recursiva. <!DOCTYPE partes [ <!ELEMENT parte (nombre, informacinsubpartes*)> <!ELEMENT informacinsubpartes (parte, cantidad)> <!ELEMENT nombre (#PCDATA )> <!ELEMENT cantidad (#PCDATA )> >

a. Se da un pequeo ejemplo de datos correspondientes a la DTD anterior. b. Mustrese como asociar este DTD a un esquema relacional. Se puede asumir que los nombres de producto son nicos, es decir, cada vez que aparezca un producto, su estructura de componente ser la misma. Respuesta: a. Se da un pequeo ejemplo de datos correspondientes a la DTD anterior. La respuesta se presenta en la Figura 10.3. b. Mustrese como asociar este DTD a un esquema relacional. parte(id-parte,nombre) informacinsubpartes(id-parte, id-subparte, cantidad) Los atributos id-parte e id-subparte de informacinsubpartes, 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,nmero-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,nmero-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,nmero-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,Gonzlez)

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,nmero-cuenta,A-101) nodos(26,elemento,nombre-cliente,Gonzlez) hijo(25,7) hijo(26,7) nodos(27,elemento,nmero-cuenta,A-201) nodos(28,elemento,nombre-cliente,Gonzlez) hijo(27,8) hijo(28,8) nodos(29,elemento,nmero-cuenta,A-102) nodos(30,elemento,nombre-cliente,Hayes) hijo(29,9) hijo(30,9) Figura 10.2 Representacin relacional de datos XML como rboles <partes> <parte> <nombre> bicicleta </nombre> <informacinsubpartes> <parte> <nombre> rueda </nombre> <informacinsubpartes> <parte> <nombre> rim </nombre> </parte> <cantidad> 1 </cantidad> </informacinsubpartes> <informacinsubpartes> <parte> <nombre> radios </nombre> </parte> <cantidad> 40 </cantidad> </informacinsubpartes> <informacinsubpartes> <parte> <nombre> neumtico </nombre> </parte> <cantidad> 1 </cantidad> </informacinsubpartes> </parte> <cantidad> 2 </cantidad> </informacinsubpartes> <informacinsubpartes> <parte> <nombre> freno </nombre> </parte> <cantidad> 2 </cantidad> </informacinsubpartes> <informacinsubpartes> <parte> <nombre> marcha </nombre> </parte> <cantidad> 3 </cantidad>

</informacinsubpartes> <informacinsubpartes> <parte> <nombre> bastidor </nombre> </parte> <cantidad> 1 </cantidad> </informacinsubpartes> </parte> </partes> Figura 10.3 Ejemplo de datos de partes en XML

CAPITULO

11

ALMACENAMIENTO Y ESTRUCTURA DE ARCHIVOS


Este captulo presenta los conceptos bsicos de las estructuras de ficheros. El captulo consta realmente de dos partes la primera se ocupa de las bases de datos relacionales y la segunda de las bases de datos orientadas a objetos. La segunda parte se puede omitir, sin prdida de continuidad para los captulos siguientes. Muchos diplomados en ciencias de la computacin han cubierto algunas de las materias de este captulo en cursos anteriores, sobre estructuras de datos o de ficheros. Incluso si los conocimientos de los estudiantes son principalmente sobre estructuras de datos, este captulo es an de importancia, dado que trata cuestiones de las estructuras de datos como las referidas al almacenamiento en disco. Las cuestiones sobre la gestin de la memoria intermedia, tratadas en el Apartado11.5.1, deberan resultar familiares a los estudiantes que han realizado cursos de sistemas operativos. Sin embargo, hay aspectos de la gestin de la memoria intermedia de determinadas bases de datos que hacen que esta seccin valga la pena, incluso para los estudiantes con conocimientos de sistemas operativos. Cambios a la tercera edicin: La discusin de los medios de almacenamiento, en particular los discos magnticos (Apartado 11.2), se ha actualizado para reflejar la tecnologa actual. La seccin de las estructuras RAID (Apartado 11.3) se ha mejorado con ejemplos; la comparacin de los niveles RAID se ha modificado, dado que las mejoras en la capacidad de las unidades de discos han disminuido las ventajas del RAID 5; Se ha ampliado la cobertura de los diccionarios de datos.

Ejercicios
11.1 Indquense los medios de almacenamiento fsico disponibles en las computadoras que se utilizan habitualmente. 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 tpicos seran las unidades de disco duro, disquetes y cd-rom. 11.2 Cmo afecta la reasignacin de los sectores daados por los controladores de disco, a la velocidad de recuperacin de los datos? Respuesta: La reasignacin de los sectores daados por los controladores de disco reduce la velocidad de recuperacin de los datos, debido a la la prdida de secuencialidad entre los sectores. Pero eso es mejor que la prdida de datos, en el caso de no reasignar. 11.3 Considrese la siguiente disposicin de los bloques de datos y de paridad de cuatro discos:
Disco 1 B1 P1 B8 . . . Disco 2 B2 B5 P2 . . . Disco 3 B3 B6 B9 . . . Disco 4 B4 B7 B 10 . . .

Bi representa los bloques de datos; Pi los bloques de paridad. El bloque de paridad Pi, es el bloque de paridad para los bloques de datos B4i-3 a B4i. Qu, de haber alguno, problemas podra presentar esta disposicin? Respuesta: Esta disposicin tiene el problema de que Pi y B4i-3 estn en el mismo disco. Por lo que, si el disco falla, la reconstruccin de B4i-3 es imposible, dado que se pierden tanto datos como paridad. 11.4 Un fallo en el suministro elctrico que se produzca mientras se escribe un bloque del disco, puede dar lugar a que el bloque slo se escriba parcialmente. Supngase que se pueden detectar los bloques escritos parcialmente. Un proceso atmico de escritura de bloque es aqul en el que se escribe el bloque entero o no se escribe nada (es decir, no hay procesos de escrituras parciales). Propnganse esquemas para conseguir el efecto de los procesos atmicos de escritura con los siguientes esquemas RAID. Los esquemas deben implicar procesos de recuperacin de fallos. a. RAID de nivel 1 (creacin de imgenes) b. RAID de nivel 5 (entrelazado de bloques, paridad distribuida) Respuesta: a. Para asegurar la atomicidad, una operacin de escritura de bloques se lleva a cabo como sigue: i. Escrbase la informacin sobre el primer bloque fsico. ii. Cuando se complete con xito la primera escritura, escrbase la misma informacin sobre el segundo bloque fsico. iii El resultado se da por finalizado slo despus que la segunda escritura se complete con xito. Durante la recuperacin se examina cada par de bloques fsicos. Si ambos son idnticos y no se detectan escrituras parciales, no son necesarias acciones posteriores. Si uno de los bloque ha sido reescrito parcialmente, se reemplaza su contenido con el del otro bloque. Si no hay escrituras parciales, pero difieren en

el contenido, se reemplaza el contenido del primer bloque con el del segundo, o viceversa. Este procedimiento de recuperacin asegura que un almacenamiento estable tiene un xito completo (esto es, actualiza ambas copias), o no cambia nada. El requerimiento de comparar cada correspondiente par de bloques durante la recuperacin es costoso. Se puede reducir enormemente el coste siguiendo la pista de las escrituras de bloques que estn en curso, empleando una pequea cantidad de RAM no voltil. En la recuperacin, slo es necesario comparar los bloques para los que est teniendo lugar la escritura. b. La idea es similar aqu. Para cualquier escritura de bloques, el bloque de informacin se escribe primero, seguido del correspondiente bloque de paridad. En el momento de la recuperacin, se considera cada conjunto formado por el ensimo bloque de cada uno de los discos. Si ninguno de los bloques del conjunto ha sido escrito parcialmente y el contenido del bloque de paridad es consistente con el de los bloques de informacin, entonces no es necesario tomar ms acciones. Si cualquier bloque ha sido escrito parcialmente, se reconstruyen sus contenidos empleando los otros bloques. Si ningn bloque ha sido escrito parcialmente, pero el contenido del bloque de paridad no est de acuerdo con el del bloque de informacin, se reconstruye el contenido del bloque de paridad. 11.5 Los sistemas RAID suelen permitir la sustitucin de los discos averiados sin que se impida el acceso al sistema. As, los datos del disco averiado deben reconstruirse y escribirse en el disco de repuesto, mientras el sistema se halla en funcionamiento. Con cul de los niveles RAID es menor la interferencia entre los accesos al disco reconstruido y los accesos al resto de los discos? Justifquese la respuesta. Respuesta: El RAID de nivel 1 (creacin de imgenes) es el que facilita la reconstruccin de un disco averiado con un mnimo de interferencias sobre los accesos al disco. Esto es as porque la reconstruccin implica la copia de datos desde la imagen del disco averiado. En los otros niveles RAID, la reconstruccin implica lecturas de todo el contenido de los otros discos. 11.6 Se da un ejemplo de una expresin de lgebra relacional y de una estrategia de procesamiento de consultas 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 R2 se calcula empleando una estrategia de procesamiento de bucles anidados, donde cada tupla en R2 debe compararse con cada bloque en R1. Despus que se procesa la primera tupla de R2, el siguiente bloque necesario es el primero en R1. Sin embargo, dado que es el ltimo recientemente empleado, la estrategia de gestin de la memoria intermedia LRU reemplazara ese bloque si el sistema necesitara uno nuevo.
1

b. LRU es preferible a MRU donde R1 R2 se calcula ordenando las relaciones por valores de reunin y comparando, entonces, los valores mediante procedimientos a travs de las relaciones. Debido a los valores de reuniones duplicadas, puede ser necesario hacer copia de seguridad en una de las relaciones. Esta copia de seguridad podra atravesar un lmite de bloque, hacia el bloque ms recientemente empleado, el cual se habra sido reemplazado por un sistema empleando gestin de memoria intermedia MRU, si fuera necesario un nuevo bloque. Bajo MRU algunos bloque no usados pueden permanecer en memoria para siempre. En la prctica slo se puede emplear MRU en situaciones especiales, como la de la estrategia de bucle anidado discutida en el ejemplo 0.a.
1

11.7 Considrese el borrado del registro 5 del archivo de la Figura 11.8. Comprense las ventajas relativas de las siguientes tcnicas para implementar el borrado: a. Trasladar el registro 6 al espacio ocupado por el registro 5 y desplazar el registro 7 al espacio ocupado 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 ningn registro. Respuesta: a. Aunque trasladar el registro 6 al espacio del 5 y el registro 7 al espacio del 6 es el enfoque mas sencillo, 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 el fichero. c. Marcando el espacio del registro 5 como borrado se conserva el orden y no se traslada ningn registro, pero se requieren costes adicionales para seguir la pista de todos los espacios libres del fichero. Este mtodo puede originar demasiados agujeros en el fichero el cual, si no se compacta peridicamente, puede afectar al rendimiento debido a que se reduce la disponibilidad de registros libres contiguos. 11.8 a. b. c. Mustrese la estructura del archivo de la Figura 11,9 despus de cada uno de los pasos siguientes: Insertar (Galapagar, C-323, 1600). Borrar el registro 2. Insertar (Galapagar, C-626, 2000).

Respuesta: (Se emplea h i para denotar un puntero al registro i.) El fichero original de la Figura 11.9: cabecera registro 0 registro 1 registro 2 registro 3 registro 4 registro 5 registro 6 registro 7 registro 8 a. cabecera registro 0 registro 1 registro 2 registro 3 registro 4 registro 5 registro 6 registro 7 registro 8 b h1 h4 h6 Navacerrada Becerril Centro Navacerrada Centro Navacerrada C-102 C-215 C-101 C-201 C-110 C-218 400 700 500 900 600 700

El fichero despus de insertar (Galapagar, C-323, 1600). h4 Navacerrada Galapagar Becerril Centro Navacerrada Centro Navacerrada El fichero despus de borrar el registro 2. C-102 C-323 C-215 C-101 C-201 C-110 C-218 400 1600 700 500 900 600 700

h6

cabecera registro 0 registro 1 registro 2 registro 3 registro 4 registro 5 registro 6 registro 7 registro 8

h2 h4 h6

Navacerrada Galapagar Centro Navacerrada Centro Navacerrada

C-102 C-323 C-101 C-201 C-110 C-218

400 1600 500 900 600 700

La cadena de registro libre podra haber sido alternativamente desde la cabecera a 4, desde 4 a 2 y, finalmente, desde 2 a 6. c. El fichero despus de insertar (Galapagar, C-626, 2000). Cabecera registro 0 registro 1 registro 2 registro 3 registro 4 registro 5 registro 6 registro 7 registro 8 h4 Navacerrada Galapagar Galapagar Centro Navacerrada Centro Navacerrada C-102 C-323 C-626 C-101 C-201 C-110 C-218 400 1600 2000 500 900 600 700

h6

11.9 Dndose un ejemplo de una aplicacin de bases de datos en que sea preferible el mtodo del espacio reservado para la representacin de los registros de longitud variable, frente al mtodo de los punteros. Justifquese la respuesta. Respuesta: En el mtodo del espacio reservado una consulta, comparando el ltimo campo existente en un registro con algn valor, requiere slo 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 se emplea el mtodo del puntero. 11.10 Se da un ejemplo de una aplicacin de bases de datos en que sea preferible el mtodo de los punteros para representar los registros de longitud variable, al mtodo del espacio reservado. Justifquese la respuesta. Respuesta: Empleando el mtodo de los punteros, una operacin de reunin sobre atributos que estn solamente en el bloque ancla, puede realizarse slo sobre esta pequea cantidad de datos, en vez de la relacin entera, como sera el caso de emplear el mtodo de reserva de espacio. Por eso, en este ejemplo, es preferible el mtodo del puntero. 11.11 a. b. c. Mustrese la estructura del archivo de la Figura 11,12 despus de cada uno de los pasos siguientes: Insertar (Becerril, C-101, 2800). Insertar (Galapagar, C-323, 1600). Borrar (Navacerrada, C-102, 400).

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: C-102 900 C-218 700

^ ^

^ ^

Navacerrada 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 el registro Navacerrada ha superado la longitud mxima reservada. 11.13 a. b. c. Mustrese la estructura del archivo de la Figura 11.13 despus de cada uno de los pasos siguientes: Insertar (Becerril, C-101, 560.000). Insertar (Galapagar, C-323, 320.000). Borrar (Navacerrada, C-102, 80.000).

Respuesta: a. La figura despus de insertar (Becerril, C-101, 2800). 0 1 2 3 4 5 6 7 8 9 b 0 1 2 3 4 5 6 7 8 9 10 h5 h9 h7 h8 h 10 h5 h9 h7 h8 Navacerrada Collado Mediano Becerril Centro Moralzarzal Galapagar C-102 C-305 C-215 C-101 C-222 C-201 C-216 C-110 C-218 C-101 400 350 700 500 700 900 750 600 700 2800

La figura despus de insertar (Galapagar, C-323, 1600). Navacerrada Collado Mediano Becerril Centro Moralzarzal Galapagar C-102 C-305 C-215 C-101 C-222 C-201 C-216 C-110 C-218 C-101 C-323 400 350 700 500 700 900 750 600 700 2800 1600

c. 1 2 3 4 5 6 7 8 9 10 h9 h7 h8 h 10

La figura despus de borrar (Navacerrada, C-102, 400). Collado Mediano Becerril Centro Moralzarzal Navacerrada Galapagar C-305 C-215 C-101 C-222 C-201 C-216 C-110 C-218 C-101 C-323 350 700 500 700 900 750 600 700 2800 1600

11.14 Explquese por qu la asignacin de los registros a los bloques afecta de manera significativa al rendimiento de los sistemas de bases de datos. Respuesta: Si se asignan registros relacionados a los bloques, a menudo se puede recuperar la mayora, o todos, de los registros solicitados por una consulta con un acceso a disco. Los accesos a disco tienden a ser los cuellos de botella en las bases de datos; dado que esta estrategia de asignacin reduce el nmero de accesos a disco para una operacin dada, mejora significativamente el rendimiento. 11.15 Si es posible, determnese la estrategia de gestin de la memoria intermedia de su sistema operativo ejecutndose en su computadora y los mecanismos que proporciona para controlar la sustitucin de pginas. Disctase cmo el control sobre la sustitucin que proporciona podra ser til para la implementacin de sistemas de bases de datos. Respuesta: El sistema operativo tpico emplea LRU para la sustitucin de la memoria intermedia. A menudo esta 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 gestiona bien todos los escenarios e, idealmente, el sistema de base de datos debera tener su propia cach de memoria intermedia, para la que la poltica de sustitucin tiene en cuenta todas las cuestiones relacionadas con el rendimiento. 11.16 En la organizacin secuencial de los archivos, por qu se utiliza un bloque de desbordamiento aunque slo haya en ese momento un registro de desbordamiento? Respuesta: Un bloque de desbordamiento se utiliza en la organizacin secuencial de los archivos porque un bloque es el espacio ms pequeo que se puede leer desde un disco. Por lo tanto, emplear cualquier regin ms pequea no sera til desde un punto de vista del rendimiento. El espacio ahorrado al asignar el almacenamiento en disco en unidades de registros, sera ensombrecido por el coste de rendimiento de permitir bloques que contengan registros de mltiples ficheros. 11.17 Indquense dos ventajas y dos inconvenientes de cada una de las estrategias siguientes para el almacenamiento de una base de datos relacional. a. Almacenar cada relacin en un archivo. b. Almacenar varias relaciones (quiz incluso toda la base de datos) en un archivo. Respuesta: a. Las ventajas de almacenar cada relacin como un archivo incluyen emplear el sistema de ficheros que soporta el sistema operativo, simplificando el sistema gestor de la base de datos, pero incurre en la desventaja de restringir la capacidad del sistema gestor de base de datos para incrementar el rendimiento, por

usar estructuras de almacenamiento ms sofisticadas. b. Utilizando un fichero para toda la base de datos se pueden implementar estas estructuras complejas a travs del sistema gestor de las base de datos, pero se incrementa el tamao y la complejidad de la base de datos. 11.18 Considrese una base de datos relacional con dos relaciones: curso (nombre-curso, aula, profesor) matrcula (nombre-curso, nombre-estudiante, calificacin) Defnanse ejemplos de estas relaciones para tres cursos, en cada uno de los cuales se matriculan cinco estudiantes. Se da una estructura de archivos de estas relaciones que utilice la agrupacin. Respuesta: relacin curso nombre-curso aula Pascal CS-101 C CS-102 LISP CS-102 nombre-curso Pascal Pascal Pascal Pascal Pascal C C C C C Lisp Lisp Lisp Lisp Lisp profesor Calvin, B Calvin, B Kess, J

c1 c2 c3

relacin matrcula nombre-estudiante Carper, D Merrick, L Mitchell, N Bliss, A Hames, G Nile, M Mitchell, N Carper, D Hurly, I Hames, G Bliss, A Hurly, I Nile, M Stars, R Carper, D

calificacin A A B C C A B A B A C B D A A

e1 e2 e3 e4 e5 e6 e7 e8 e9 e10 e11 e12 e13 e14 e15

el bloque 0 contiene: c1, e1, e2, e3, e4, y e5 el bloque 1 contiene: c2, e6, e7, e8, e9 y e10 el bloque 2 contiene: c3, e11, e12, e13, e14, y e15 11.19 Considrese la siguiente tcnica de mapa de bits para realizar el seguimiento del espacio libre en un fichero. Por cada bloque del fichero se mantienen dos bits en el mapa. Si el bloque est lleno entre el 0 y el 30%, los bits son 00, entre 30% y 60% , 01, entre 60% y 90%, 10 y por encima del 90%, 11. Tales mapas de bits pueden mantenerse en memoria, incluso para ficheros muy grandes. a. Descrbase como mantener actualizado el mapa de bits al insertar y eliminar registros. b. Descrbanse el beneficio de la tcnica de los mapas de bits sobre las listas libres, al buscar espacio libre y al actualizar su informacin. Respuesta: a. Cada vez que se inserta o borra un registro, comprueba si el empleo el bloque ha cambiado los

niveles. En tal caso, se actualizan los bits correspondientes. b. Si se requiere espacio libre para n registros entonces, en la tcnica de las listas libres, son necesarios n accesos de la lista de registros libres. Sin embargo, en la tcnica del mapa de bits, un bloque con espacio libre para n registros ( o ms de un bloque si hace falta) se puede averiguar directamente. El espacio libre as obtenido est tambin mas contiguo que el obtenido mediante la tcnica de listas libres. 11.20 Se da una versin normalizada de la relacin Metadatos-ndices y explquese por qu al usar la versin normalizada se incurrira en prdida de rendimiento. Respuesta: La relacin metadatos-ndices se puede normalizar como sigue metadatos-ndices (nombre-ndice, nombre-relacin, tipo-ndice, conjunto-atributos) metadatos-conjunto-atributos (nombre-relacin, conjunto-atributos, nombre-atributo) Aunque la versin normalizada tendr menos requerimientos de espacio, sern necesarios accesos extras al disco para leer metadatos-conjunto de atributos, cada vez que tenga que accederse a un ndice. As, esto ocasionar una prdida de rendimiento. 11.21 Explquese el motivo de que un IDO fsico deba contener ms informacin que un puntero que apunte a una ubicacin fsica de almacenamiento. Respuesta: Un IDO fsico necesita tener un identificador nico, adems de un puntero, para una ubicacin fsica de almacenamiento. Esto se requiere para prevenir desreferencias de los punteros colgantes. 11.22 Si se utilizan IDOs fsicos, se puede reubicar un objeto guardando un puntero a su nueva ubicacin. En el caso de que se guarden varios punteros para un objeto, Cul sera el efecto sobre la velocidad de recuperacin? Respuesta: En caso de guardar varios punteros para un objeto, la velocidad de recuperacin decrecer porque el acceso requerir acceder a las series de ubicaciones desde las que el objeto ha sido sucesivamente enviado a la ubicacin actual. Se pueden evitar accesos mltiples manteniendo siempre, en la ubicacin ms antigua, la ltima direccin del objeto. Esto se puede hacer comprobando, al enviar, si este objeto ya ha sido enviado y ,en ese caso ,actualizando la direccin de envo a la ubicacin ms antigua. As, a lo sumo se requerirn dos accesos. 11.23 Defnase el trmino puntero colgante. Descrbase 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 vlidos. En el esquema de identificador nico para detectar punteros colgantes, los IDOs fsicos pueden contener un identificador nico, que es un entero que distingue el IDO de los identificadores de otros objetos que resultaron ser al almacenados en la misma ubicacin anterior y fueron borrados o movidos a otra parte. El identificador nico se almacena tambin con el objeto, debiendo concordar los identificadores en un IDO con los correspondientes objetos. Si el identificador nico en un IDO fsico 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 seala un error. 11.24 Considrese el ejemplo de la pgina 435, que muestra que no hace falta el rescate si se emplea el rescate hardware. Explquese el motivo de que, en ese ejemplo, resulte seguro cambiar el identificador corto de la pgina 679.34278 desde 2395 a 5001. Puede tener ya alguna otra pgina el identificador corto 5001?. Si fuera as, cmo se resolvera esa situacin?

Respuesta: Al rescatar, si el identificador corto de la pgina 679.34278 cambia de 2395 a 5001, es porque a. el sistema descubre que 679.34278 ya ha sido asignado a la pgina de memoria virtual 5001 en algn paso anterior, o si no b. 679.34278 no ha sido asignado en ninguna pgina de memoria virtual hasta ahora y la pgina de memoria virtual 5001 se asigna ahora a ella. As, en cualquier caso, no puede ser cierto que la pgina actual ya utilice el mismo identificador corto 5001, para referirse a alguna otra pgina de la base de datos diferente de 679.34278. Alguna otra pgina puede usar 5001 para referirse a una pgina de base de datos diferente, pero entonces cada pgina tiene sus propias correspondencias independiente, desde identificadores de pgina cortos a completos, para que esto sea correcto. Ntese que si se rescata como se describe en el texto y diferentes procesos necesitan acceder simultneamente a la pgina de la base de datos, habrn de asociar copias separadas de la pgina para sus espacios individuales de direccin virtual. Esto puede evitarse mediante extensiones al esquema.

CAPITULO

12

INDEXACION Y ASOCIACION
Este captulo cubre las tcnicas de indexacin, desde la ms bsica a las altamente especializadas. Debido al empleo extensivo de ndices en los sistemas de bases de datos, este captulo constituye una parte importante del 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 captulo es de necesaria lectura, incluso para estos estudiantes, dado que los cursos de estructuras de datos generalmente cubren las indexaciones en memoria principal. Aunque los conceptos afectan a los mtodos de acceso a las bases de datos, los detalles (por ejemplo, nodos de tamao bloque), les resultarn nuevos a tales estudiantes. Los apartados sobre los rboles B (Apartados 12.4), ficheros en retcula (Apartado 12.9.3) e indexaciones de mapas de bit (Apartado 12.9.4) se pueden omitir si as se desea. Cambios a la tercera edicin: La descripcin de consultas sobre rboles B+ se ha ampliado con seudocdigo. Se ha simplificado el seudocdigo para la insercin en rboles B+. La seccin sobre la definicin de ndices en SQL (Apartado 12.8) es nueva en esta edicin, as como el tratamiento de ndices de mapas de bits (Apartado 12.9.4).

Ejercicios
12.1 Cundo es preferible utilizar un ndice denso en vez de uno disperso? Raznese la respuesta.

Respuesta: Es preferible utilizar un ndice denso en lugar de uno disperso cuando el fichero no est ordenado sobre el campo ndice (como cuando el ndice es un ndice secundario), o cuando el fichero de ndices es pequeo, comparado con el tamao de la memoria. 12.2 Dado que los ndices agilizan el procesamiento de consultas, por qu no deberan de mantenerse en varias claves de bsqueda? Enumrense tantas razones como sea posible. Respuesta: Razones para no mantener varios ndices de bsqueda: a. Durante las inserciones y los borrados, cada ndice requiere tiempo adicional de CPU y sobrecarga de E/S a disco. b. Los ndices sobre claves que no son primarias podran tener que ser cambiados o actualizados, aunque no as en los ndices sobre la clave primaria (esto es porque las actualizaciones, generalmente, no modifican 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 bsqueda la eficiencia podra no ser mala, incluso si slo 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 adicin de ndices. 12.3 Cul 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. Slo puede haber un ndice primario, mientras que puede haber muchos secundarios. 12.4 Es posible, en general, tener dos ndices primarios en la misma relacin para dos claves de bsqueda diferentes? Raznese la respuesta. Respuesta: En general, no es posible tener dos ndices primarios en la misma relacin para diferentes claves, porque las tuplas en una relacin habran de estar almacenadas en diferente orden, para tener los mismos valores almacenados juntos. Se podra cumplir esto almacenando la relacin dos veces y duplicando todos los valores pero, para un sistema centralizado, no es eficiente. 12.5 Constryase un rbol B+ con el siguiente conjunto de valores de la clave: (2, 3, 5, 7, 11, 17, 19, 23, 29, 31) Supngase que el rbol est inicialmente vaco y que se aaden los valores en orden ascendente. Constryanse rboles B+ para los casos en que el nmero de punteros que caben en un nodo son: a. Cuatro b. Seis c. Ocho

Respuesta: Lo siguiente ha sido generado al insertar valores en el rbol B+ en orden ascendente. Un nodo (diferente del raz) nunca fue permitido tener menos de n/2 valores/punteros. a.

2 3 5 7 29 31 17 29 11 19 23 19 5 11

b.

19 31 29 23 17 11 7 5 3 2 19 7

c.

11 3 2 11 5 7 17 19 23 29 31

12.6 a. b.

Para cada rbol B+ del Ejercicio 12.5, mustrense los pasos involucrados en las siguientes consultas: Encontrar los registros con un valor de la clave de bsqueda de 11. Encontrar registros con un valor de la clave de bsqueda entre 7 y 17, ambos inclusive.

Respuesta: Con estructura 0.a: a. Encontrar registros con un valor de 11 i. 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, despus de acceder 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, despus volver. vi Seguir el segundo puntero para registros con valor de clave 17. Con estructura 0.b: a. Encontrar registros con un valor de 11 i. 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. i. ii. volver. iii iv Encontrar registros con valor entre 7 y 17 (inclusive) Buscar el nivel superior; seguir el segundo puntero. Buscar el siguiente nivel; seguir el primer puntero para registros con valor de clave 7, despus Seguir el segundo puntero para registros con valor de clave 11, despus volver. Seguir el tercer puntero para registros con valor de clave 17.

Con estructura 0.c: a. Encontrar registros con un valor de 11 i. 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. i. ii. volver. iii iv v Encontrar registros con valor entre 7 y 17 (inclusive) Buscar el nivel superior; seguir el primer puntero. Buscar el siguiente nivel; seguir el cuarto puntero para registros con valor de clave 7, despus Seguir el octavo puntero para el siguiente bloque de hojas en la cadena. Seguir el primer puntero para registros con valor de clave 11, despus volver. Seguir el segundo puntero para registros con valor de clave 17.

12.7 Para cada rbol B+ del Ejercicio 12.5, mustrese el aspecto del rbol despus de cada una de las siguientes 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 17 29 11 19 23 19 5 11 9

Insertar 10:
9 9 10 2 3 29 19 5 11 5 7 17 11 19 23 29 31

Insertar 8:
89 9 10 2 3 29 19 5 11 5 7 17 11 19 23 29 31

Borrar 23:
9 19 10 8 9 11 2 3 5 7 29 31 17 11 19 5

Borrar 19:

29 29 9 10 8 9 11 2 3 5 7 31 17 11 5

Con estructura 0.b: Insertar 9:


9 19 31 29 23 17 11 7 5 3 2 19 7

Insertar 10:
10 9 19 31 29 23 17 11 7 5 3 2 19 7

Insertar 8:
8 5 3 2 9 7 10 17 11 19 31 29 23 19 7 10

Borrar 23:
8 5 3 2 9 7 10 17 11 19 31 29 19 7 10

Borrar 19:

7 10 8 5 3 2 9 7 10 17 11 31 29

Con estructura 0.c: Insertar 9:


9 17 3 2 11 11 5 7 19 23 29 31

Insertar 10:
10 9 17 3 2 11 11 5 7 19 23 29 31

Insertar 8:
8 10 9 17 3 2 11 11 5 7 19 23 29 31

Borrar 23:
8 10 9 17 3 2 11 11 5 7 19 29 31

Borrar 19:

8 10 9 17 3 2 11 11 5 7 29 31

12.8 Considrese el esquema modificado de redistribucin para rboles B+ descrito en la pgina 463. Cul es la altura esperada del rbol en funcin de n?. Respuesta: Si hay K valores de claves de bsqueda y m - 1 hermanos estn implicados en la redistribucin, la altura esperada del rbol es: log?(m-1)n/m?(K) 12.9 Reptase el Ejercicio 12.5 para un rbol B.

Respuesta: El algoritmo para la insercin en un rbol B es: Localizar el nodo hoja en el que el nuevo par clave-puntero se debera insertar. Si hay espacio sobrante en el nodo hoja, realizar la insercin en la ubicacin correcta y la tarea se completa. De lo contrario, insertar el par clave-puntero conceptualmente en la ubicacin correcta del nodo hoja y, entonces, partirlo por la mitad. El par intermedio clave-puntero no va dentro de los nodos resultantes de la operacin dividir. En su lugar, se inserta en el nodo padre junto al puntero del rbol para el nuevo hijo. Si no hay espacio en el padre, se repite un 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 hoja contiene menos de n/2 -1 entradas como resultado de este borrado, o se fusiona con sus hermanos o algunas entradas se redistribuyen para ello. La fusin implicara un borrado, mientras que la redistribucin implicara cambios en las entradas del nodo del padre. Los borrados pueden rizarse hasta la raz 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 de registro, por el menor valor de la clave en el sub rbol inmediatamente a su derecha y el correspondiente puntero del registro. Borrar el registro actual en el fichero de la base de datos. Borrar despus el menor valor del par clave-puntero del sub rbol. Este borrado pueden originar an ms borrados de rizamiento hasta la raz del rbol B. Seguidamente se presentan los rboles B despus de las inserciones de los valores clave dados. Se supone que los nodos hoja y no hoja mantienen el mismo nmero de valores de clave de bsqueda. a.
???? ?? ??? ? _ _ _ _ _ _ _9 _ Z ZXXXz 5

17 11 19 29

b.
_ _ _ _ __ XXXXXXXXXXz ? ? ? 7 23

17 ? 19 ? 31 ? 29 ? 11 ? 5 ? 3 ? 2 ?

c.

12.10 Explquense las diferencias entre las asociaciones abiertas y cerradas. Comntense los beneficios de cada tcnica en aplicaciones de bases de datos. Respuesta: Las asociaciones abiertas pueden colocar claves con el mismo valor de la funcin asociativa en diferentes cajones. Las asociaciones cerradas siempre colocan tales claves juntas, en el mismo cajn. As, en este caso, diferentes cajones pueden ser de diferentes tamaos, aunque la implementacin pueda ser enlazando los cajones de tamao fijo, empleando cadenas de desbordamiento. El borrado es difcil con asociaciones abiertas dado que todos los cajones pueden tener que ser inspeccionados antes de poder constatar que un valor clave ha sido borrado, mientras que en las asociaciones cerradas slo los cajones cuya direccin se obtiene por asociacin, el valor clave necesita ser inspeccionado. Los borrados son ms comunes en las bases de datos y por lo tanto una asociacin cerrada es ms apropiada para ellas. Para un pequeo, esttico conjunto de datos, las bsquedas pueden ser ms eficientes empleando asociaciones abiertas. La tabla de smbolos de un compilador sera un buen ejemplo. 12.11 Cules son las causas del desbordamiento de cajones en un fichero con una organizacin asociativa? Qu se puede hacer para reducir la aparicin del desbordamiento de cajones? Respuesta: Las causas del desbordamiento de cajones son: a. Nuestra estimacin del nmero de registros que la relacin iba a tener fue demasiado bajo y, por la tanto, el nmero de cajones asignados no fue suficiente. b. Desviacin en la distribucin de registros a los cajones. Esto puede suceder porque haya muhos registros con el mismo valor de clave de bsqueda, o porque la funcin de asociacin elegida no tuviera las propiedades deseables de uniformidad y aleatoriedad. Para reducir la ocurrencia de los desbordamientos se puede: a. Seleccionar la funcin de asociacin ms cuidadosamente y hacer mejores estimaciones sobre el tamao de la relacin.

b. Si el tamao estimado de la relacin es nr y el nmero de registros por bloque es fr, asignar (nr/fr) * (1 + d) cajones, en lugar de (nr/fr). Aqu d es un factor de escape, tpicamente en torno a 02. Algn espacio se malgasta: En torno al 20% del espacio de los cajones estar vaco. Pero la ventaja es que algunas de las desviaciones se gestionan y la probabilidad de desbordamiento se reduce. 12.12 Supngase que se est empleando la asociacin extensible en un archivo que contiene registros con los siguientes valores de la clave de bsqueda: 2, 3, 5, 7, 11, 17, 19, 23, 29, 31 Mustrese la estructura asociativa extensible para este archivo si la funcin de asociacin es h(x) = x mod 8 y los cajones pueden contener hasta tres registros. Respuesta:
3 3 29 5 19 11 3 2 111 110 100 011 010 001

3 2 2 31 23 7 17 2

000

12.13 Mustrese como cambia la estructura asociativa extensible del Ejercicio 12.12, como resultado de realizar los siguientes pasos: a. Borrar 11. b. Borrar 31. c. Insertar 1. d. Insertar 15.

Respuesta: a. Borrar 11: A partir de la respuesta del Ejercicio 12.12, cambiar el tercer cajn a:
3 3 19

En este momento es posible agrupar el segundo y tercer cajn. Entonces es suficiente si la tabla direcciones de los cajones tiene slo cuatro entradas en lugar de ocho. Para el objetivo de esta respuesta no se hace la agrupacin. b. Borrar 31: A partir de la respuesta del Ejercicio 12.12, cambiar el ltimo cajn a:

2 23 7

c.

Insertar 1: A partir de la respuesta del Ejercicio 12.12, cambiar el primer cajn a:

1 17 2

d.

Insertar 15: A partir de la respuesta del Ejercicio 12.12, cambiar el ltimo cajn a:

15 2 23 7

12.14 Se da un seudocdigo para el borrado de entradas desde una estructura asociativa extensible, incluyendo los detalles de cundo y cmo agrupar cajones. No preocuparse sobre la reduccin del tamao de la tabla de direcciones de los cajones. Respuesta: Sea i el nmero de bits del valor de asociacin empleado en la tabla asociativa. Sea BSIZE la capacidad mxima de cada cajn. delete(valor Kl) begin j = primeros i bits de orden superior de h(Kl); borrar el valor Kl del cajn j; agrupar(cajn j); end coalesce(cajn j) begin ij = bits utilizados en el cajn j; k = cualquier cajn con los primeros (ij - 1) bits iguales a los del cajn j, mientras el bit ij est reservado; ik = bits utilizados en el cajn k; if(ij _= ik) return; /* los cajones no se pueden fusionar */

if(entradas en j + entradas en k > BSIZE) return; /* los cajones no se pueden fusionar */ mover las entradas del cajn k al cajn j; reducir en 1 el valor de ij; hacer que todas las entradas de la tabla de direcciones de los cajones, que apuntan al cajn k, lo hagan al j; agrupar(cajn j); end Ntese que slo se pueden fusionar dos cajones a la vez. El prefijo asociativo comn del cajn resultante tendr una longitud menor que los dos cajones fusionados. Por lo tanto, nos fijamos en que el cajn compaero del cajn j se diferencia de l slo en el ltimo bit. Si el prefijo asociativo comn de este cajn no es ij , implica que el cajn compaero ha sido a su vez dividido, con lo que no es posible la fusin. Cuando la fusin tiene xito fusiones posteriores pueden ser posibles, lo cul se gestiona mediante una llamada recursiva para agrupar al final de la funcin. 12.15 Sugirase una manera eficiente para comprobar si la tabla de direcciones de los cajones en una asociacin extensible se puede reducir de tamao, mediante el almacenamiento de un recuento extra con la tabla de direcciones de los cajones. Dense detalles de como se debera mantener el recuento cuando los cajones se dividan, agrupen o borren. (Nota: la reduccin del tamao de la tabla de direcciones de cajones es una operacin costosa y las inserciones posteriores pueden originar que la tabla crezca de nuevo. Por lo tanto, es mejor no reducir el tamao tan pronto como se pueda, sino hacerlo slo si el nmero de entradas de ndice se reduce en comparacin con el tamao de la tabla de direcciones de cajones.) Respuesta: Si la tabla asociativa est utilizando actualmente i bits del valor de asociacin, mantngase un contador de cajones para los que la longitud del prefijo asociativo comn sea exactamente i. Considrese un cajn j con longitud del prefijo asociativo comn ij. Si el cajn esta siendo dividido e ij es igual a i, entonces se reinicia el contador a 1. Si el cajn esta siendo dividido e ij es uno menos que i, entonces se incrementa el contador en 1. Si el cajn esta siendo agrupado e ij es igual a i, entonces se reduce el contador en 1. Si el contador llega a ser 0, entonces la tabla de direcciones de los cajones se puede reducir de tamao en ese momento. Sin embargo, ntese que si la tabla de direcciones de los cajones no se reduce en ese momento, entonces el contador no tiene significado despus. Si se desea posponer la reduccin, se ha de conservar un array de contadores, es decir un contador por cada valor del prefijo asociativo comn. El array ha de actualizarse de una misma manera. La tabla de direcciones de los cajones se puede reducir si la ith entrada del array es 0, donde i es el nmero de bits que la tabla est empleando. Dado que la reduccin de la tabla de cajones es una operacin costosa, no siempre es aconsejable reducir la tabla. Slo debera reducirse cuando un nmero suficiente de entradas, al final del array de contadores, lleguen a ser 0. 12.16 Por qu una estructura asociativa no es la mejor eleccin para una clave de bsqueda en la que son frecuentes 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 ocupan espacios consecutivos en los cajones, sino que estn distribuidos uniformemente y aleatoriamente a travs de todos los cajones. 12.17 Considrese un archivo en retcula en el cual se desea evitar el desbordamiento de cajones por razones de rendimiento. En los casos en los que sea necesario un cajn de desbordamiento, en su lugar se reorganiza el archivo. Presntese un algoritmo para esta reorganizacin.

Respuesta: Considrese un array de retculas de dos dimensiones. Cuando se desborda un cajn se pueden dividir en dos los rangos correspondientes a esas fila y columna, en dos escalas lineales. De este modo las escalas lineales tomarn, cada una, una entrada adicional y el cajn se divide en cuatro cajones. Los rangos deberan dividirse de tal modo que aseguren que los cuatro cajones resultantes tienen casi el mismo nmero de valores. Puede haber otros cuantas heursticas para decidir cmo reorganizar los rangos y, por tanto, las escalas lineales y arrays de retculas. 12.18 Considrese la relacin cuenta de la Figura 12.25. a. Constryase un ndice de mapa de bits sobre los atributos nombre-sucursal y saldo, separando los valores de saldo en 4 rangos: menores que 250,entre 250 y menor que 500 entre 500 y menor que 750 y 750 o mayor. b. Considrese una consulta que solicite todas las cuentas en Centro con un saldo de 500 o ms. Mustrense los pasos implicados en la consulta as como los mapas de bits intermedios y finales construidos para responder la consulta. Respuesta: A continuacin se reproduce la relacin cuenta de la Figura 12.25. C-217 C-101 C-110 C-215 C-102 C-201 C-218 C-222 C-305 Mapa de bits para nombre-sucursal Galapagar Centro Becerril Navacerrada Moralzarzal Collado Mediano Mapa de bits para saldo L1 L2 L3 L4 000000000 000010001 011100110 100001000 100000000 011000000 000100000 000011100 000000010 000000001 Galapagar Centro Centro Becerril Navacerrada Navacerrada Navacerrada Moralzarlal Collado Mediano 750 500 600 700 400 900 700 700 350

donde, nivel L1 est por debajo de 250, nivel L2 desde 250 hasta debajo de 500, L3 desde 500 hasta debajo de 750 y nivel L4 por encima de 750.

Para encontrar todas las cuentas de Centro con saldo de 500 o ms, se encuentra la unin de mapas de bits para los niveles L3 y L4 y, despus, se inserta con el mapa de bits para Centro. Centro L3 L4 L3 L4 Centro Centro (L3 L4) De este modo, las tuplas requeridas son C-101 y C-110. 12.19 Mustrese cmo calcular la existencia de mapas de bits, desde otros mapas de bits. Asegrese que la tcnica 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 relacin se puede calcular tomando la unin (or lgico) de todos los mapas de bits del atributo, incluyendo el mapa de bits para el valor nulo. 12.20 Cmo afecta el cifrado de los datos a los esquemas de ndices? En particular, cmo afectara a los esquemas que intentan almacenar datos ordenados? Respuesta: Ntese que los ndices deben operar sobre datos cifrados, o alguien podra acceder a los ndices para interpretar los datos. De lo contrario, los ndices habran de restringirse para que slo pudieran acceder a ellos determinados usuarios. Para mantener los datos en forma ordenada, el esquema de ndices tendra que descifrar los datos en cada nivel del rbol. Ntese que los sistemas asociativos no se veran afectados. 011000000 011100110 100001000 111101110 011000000 011000000

CAPITULO

13

PROCESAMIENTO DE CONSULTAS
Este captulo describe los procesos por medio de los cuales las consultas son ejecutadas eficientemente por un sistema de bases de datos. El captulo comienza con medidas de costes, para continuar con algoritmos de evaluacin de expresiones y operadores de lgebra relacional. Este captulo aplica conceptos de los Captulos 3, 11 y 12. Cambios a la tercera edicin: El nico captulo sobre procesamiento de consultas de la edicin anterior, se ha reemplazado por dos captulos, el primero sobre procesamiento y el segundo sobre optimizacin de las consultas. Otro cambio significativo es la separacin de la estimacin del tamao desde la presentacin de los algoritmos de procesamiento de las consultas. Como resultado de estos cambios, los algoritmos de procesamiento de consultas se pueden cubrir sin los tediosos y molestos detalles de la estimacin del tamao. Aunque la estimacin del tamao se cubre ms tarde, en el Captulo 14, se ha simplificado la presentacin mediante la omisin de algunos detalles. Los profesores pueden elegir cubrir el procesamiento, pero omitir la optimizacin de las consultas, sin prdida de continuidad con los captulos posteriores.

Ejercicios
13.1 Por qu no hay que obligar a los usuarios a que elijan explcitamente una estrategia de procesamiento de la consulta? Hay casos en los que es deseable que los usuarios sepan el coste de las distintas estrategias posibles? Raznese la respuesta. Respuesta: En general, no es conveniente forzar a los usuarios a elegir una estrategia de procesamiento de consultas, porque los usuarios inexpertos podran seleccionar una estrategia ineficiente. La razn de que los usuarios seran malas alternativas acerca de cmo procesar las consultas, es que ellos no tendran conocimientos sobre cono se almacena una relacin ni sobre sus ndices. No es razonable forzar a los usuarios a ser conscientes de estos detalles, dado que la facilidad de uso es el objeto principal de los lenguajes de consultas de bases de datos. Si los usuarios se dieran cuenta del coste de las diferentes estrategias, podran escribir consultas eficientemente, ayudando al rendimiento. Esto podra suceder si el sistema fuera utilizado por expertos. 13.2 Considrese la siguiente consulta SQL para la base de datos bancaria: select T.nombre-sucursal from sucursal T, sucursal S where T.activo > S.activo and S.ciudad-sucursal = Arganzuela Escrbase una expresin del lgebra relacional equivalente a la dada que sea ms eficiente. Justifquese la eleccin. Respuesta: PT.nombre-sucursal ((Pnombre-sucursal, activo (rT (sucursal))) |x| T.activo>S.activo (Pactivo (s(ciudad-sucursal =Arganzuela)(rS(sucursal)))))
1

Esta expresin realiza la reunin zeta sobre la menor cantidad de datos posible. Hace esto restringiendo el operando del lado derecho de la reunin, a slo aquellas sucursales de Arganzuela y, tambin, eliminando los atributos innecesarios de ambos operandos. 13.3 Cules son las ventajas e inconvenientes de los ndices asociativos en relacin con ndices de rbol B+-? Cmo podra influir el tipo de ndice en la eleccin de una estrategia de procesamiento de una consulta? Respuesta: Los ndices asociativos permiten realizar muy rpidamente operaciones de bsqueda de puntos (por ejemplo sA=r(relacin)), pero en bsquedas de rangos el ndice de rbol B+ sera mucho ms eficiente. Si hay que evaluar una consulta de rangos, y slo est disponible un ndice asociativo, la mejor estrategia podra ser realizar unan exploracin de ficheros, en vez de emplear ese ndice. 13.4 Supngase (para simplificar este ejercicio) que slo cabe una tupla en un bloque y que la memoria puede contener, como mximo, tres marcos de pgina. Mustrense las secuencias creadas en cada ciclo del algoritmo de ordenacin-mezcla, cuando se aplica para ordenar las siguientes tuplas sobre el primer atributo: (canguro, 17), (ualabi, 21), (em, 1), (wombat, 13), (ornitorrinco, 3), (len, 8), (jabal, 4), (cebra, 11), (koala, 6), (hiena, 9), (clao, 2), (babuino, 12).

Respuesta: Las referencias a las tuplas (canguro, 17) hasta (babuino, 12) se harn empleando los nmeros de tupla t1 hasta t12. Nos referimos a la j ensima secuencia utilizada por el i ensimo ciclo, como rij . Las secuencias de ordenacin 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 despus 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 estn 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. Estmese el nmero de accesos a bloques requeridos, utilizando cada una de las siguientes estrategias para la reunin r1 |x| r2: a. b. c. d. Reunin en bucle anidado Reunin en bucle anidado por bloques Reunin por mezcla Reunin por asociacin

Respuesta: r1 necesita 800 bloques y r2 1.500. Supnganse M pginas de memoria. Si M >800, la reunin puede hacerse fcilmente en 1.500 + 800 accesos a disco, empleando incluso reunin en bucle anidado sencilla. As, consideraremos slo el caso en que M 800 pginas. a. Reunin en bucle anidado: Empleando r1 como la relacin externa se necesitan 20.000 * 1.500+800 = 30.000.800 accesos a disco, si r2 es la relacin externa son necesarios 45.000 * 800 + 1.500 = 36.001.500 accesos a disco. b Reunin en bucle anidado por bloques: Si r1 es la relacin externa se necesitan 800 (M-1) * 1.500 + 800 accesos a disco, si r2 es la relacin externa son necesarios 1.500 (M-1) * 800 + 1.500 accesos a disco. c. Reunin por mezcla Suponiendo que r1 y r2 no estn inicialmente ordenadas sobre la clave de reunin, el coste de la ordenacin total, inclusive el de la salida es Bs = 1.500(2 logM-1(1.500/M) + 2) + 800(2 logM-1(800/M) + 2) accesos a disco. Suponiendo que todas las tuplas con el mismo valor de los atributos de la reunin caben en memoria, el coste total es Bs + 1.500 + 800 accesos a disco. d. Reunin por asociacin: Se supone que no tiene lugar desbordamiento. Dado que r1 es menor, se emplea como la relacin para construir y r2 como la relacin para probar. Si M > 800/M, es decir no hay necesidad de una divisin recursiva, entonces el coste es 3(1.500 + 800) = 6.900 accesos a disco, si no el coste es 2(1.500 + 800) logM1(800) - 1 + 1.500 + 800 accesos a disco. 13.6 Disese una variante del algoritmo hbrido de reunin por mezcla, para el caso en que las dos relaciones no estn ordenadas segn el orden fsico de almacenamiento, pero ambas tienen un ndice

secundario ordenado en los atributos de la reunin. Respuesta: Se mezclan la entradas de las hojas del primer ndice secundario ordenado, con las entradas de las hojas del segundo ndice secundario ordenado. El fichero resultante contiene pares de direcciones, la primera direccin en cada par apunta a una tupla de la primera relacin y la segunda direccin apunta a una tupla de la segunda relacin. El fichero resultante est primero ordenado sobre la primera direccin de la relacin. La relacin entonces se rastrea en orden de almacenamiento fsico y las direcciones del fichero resultante se reemplazan por los valores de la tupla actual. Despus se ordena el fichero resultante sobre la segunda direccin de la relacin, permitiendo un rastreo de la segunda relacin en orden de almacenamiento fsico para completar la reunin. 13.7 El algoritmo de reunin en bucle anidado indexado, descrito en el Apartado 13.5.3, podra ser ineficiente si el ndice fuera secundario y hubiese varias tuplas con el mismo valor en los atributos de la reunin. Por qu es ineficiente? Describir una forma, empleando ordenacin, para reducir el coste de recuperacin de las tuplas de la relacin interna. Bajo qu condiciones sera este algoritmo ms eficiente que la reunin por mezcla hbrida? Respuesta: Si hay varias tuplas en la relacin interna con el mismo valor para los atributos de la reunin, se puede tener que acceder a numerosos bloques de la relacin interna, para cada tupla de la relacin externa. Esto es por lo que es ineficiente. Para reducir este coste se puede realizar una reunin de las tuplas de la relacin externa, con slo las entradas de las hojas del ndice secundario, posponiendo la recuperacin de las tuplas de la relacin interna. El fichero resultante obtenido se ordena sobre la direccin de la relacin interna, permitiendo un eficiente rastreo del orden fsico, para completar la reunin. La reunin por mezcla hbrida requiere que la relacin externa est ordenada. El algoritmo anterior no cumple este requerimiento, pero para cada tupla de la relacin externa necesita realizar una bsqueda del ndice sobre la relacin interna. Si la relacin externa es mucho ms grande que la relacin interna, el coste de la bsqueda del ndice ser menor que el de la ordenacin, con lo que el algoritmo ser mas eficiente. 13.8 Estmese el nmero de accesos a bloques requeridos por la solucin del Ejercicio 13.6 para r1 |x| r2, donde r1 y r2 son como las definidas en el Ejercicio 13.5.
1

Respuesta: r1 ocupa 800 bloques y r2 1.500. Supngase que hay n punteros por bloque hoja del ndice (se asume que ambos ndices tienen bloques hojas y punteros de igual tamao). Supnganse M pginas de memoria, M < 800. El ndice de r1 necesitar B1 = 20.000 n bloques hoja y el de r2 necesitar, B2 = 45.000 n. Por lo tanto, la reunin por mezcla necesitar B3 = B1 + B2 accesos, sin la salida. El nmero de tuplas de salida se estima segn no = 20.000*45.000 (max(V (C,r1),V (C,r2))) . Cada tupla de salida necesitar dos punteros, por lo que el nmero de bloques de salida de la reunin ser Bo1 = no n/2.Por lo tanto, la reunin necesita Bj = B3+Bo1 accesos a disco. Ahora se han de reemplazar los punteros por las tuplas actuales. Para la primera ordenacin se necesitan, Bs1 = Bo1(2logM-1(Bo1/M) + 2) accesos a disco, incluyendo la grabacin de la salida a disco. El nmero de bloques de r1 que han de ser accedidos para reemplazar los punteros por tuplas es min(800, no). Supngase que n1 pares de la forma (r1 tupla, puntero a r2) caben en un bloque del disco. Por lo tanto el resultado intermedio, despus de reemplazar los punteros de r1, ocupar Bo2 = (no/n1) bloques. As el primer ciclo, para la sustitucin de los punteros de r1, costar Bf = Bs1 + Bo1 + min(800, no) + Bo2 accesos a disco. El segundo ciclo, para la sustitucin de los punteros de r2, tiene un anlisis similar. Supngase que n2 tuplas de la reunin final caben en un bloque. Entonces el segundo ciclo, para la sustitucin de los punteros de r2, costar Bs = Bs2 + Bo2 + min(1500, no) accesos a disco, donde Bs2 = Bo2(2logM-1(Bo2/M) + 2). Por lo tanto, el nmero total de accesos a disco para la reunin es Bj +Bf +Bs y el nmero de pginas de salida es no/n2.

13.9 Sean r y s dos relaciones sin ndices y supngase que no estn ordenadas. Suponiendo una memoria infinita, cul es la manera ms econmica (en trminos de operaciones de E/S) para calcular r|x| s? Cunta memoria se necesita en este algoritmo?
1

Respuesta: Se puede almacenar en memoria la relacin ms pequea entera, leer la relacin mayor bloque a bloque y realizar una reunin en bucle anidado empleando la mayor como relacin externa. El nmero de operaciones de E/S es igual a br + bs y el requerimiento de memoria es min(br, bs) + 2 pginas. 13.10 Supngase que hay un ndice de rbol B+- disponible en ciudad-sucursal de la relacin sucursal y que no hay ms ndices. Cul sera 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 ningn objetivo. Se puede rastrear secuencialmente el fichero y seleccionar todas las tuplas cuyo campo ciudad-sucursal sea diferente de Arganzuela. c. Esta consulta es equivalente a s(ciudad-sucursal Arganzuela activo < 5.000)(sucursal) Empleando el ndice ciudad-sucursal se pueden recuperar todas las tuplas con valor ciudad-sucursal mayor o igual que Arganzuela, siguiendo las cadenas de los punteros desde la primera tupla Arganzuela. Tambin se aplica el criterio adicional, sobre cada tupla, de activo < 5.000. 13.11 El algoritmo de reunin por asociacin descrito en el Apartado 13.5.5 calcula la reunin natural de dos relaciones. Descrbase cmo extender el algoritmo de reunin por asociacin para calcular la reunin externa por la izquierda, la reunin externa por la derecha y la reunin externa completa. (Sugerencia: se puede mantener informacin adicional con cada tupla en el ndice asociativo para detectar si alguna tupla de la relacin para probar concuerda con la tupla del ndice asociativo.) Comprubese el algoritmo con las relaciones cliente e impositor. nombre-cliente Adams Brooks Hayes Gonzlez Santos Lindsay Curry Santos Turner Glenn Green Santos Figura 13.17 calle-cliente Spring Senator Main Alma Main Park North North Putnam Sand Hill Walnut Nassau ciudad-cliente Pittsfield Arganzuela Harrison Palo Alto Harrison Pittsfield Rye Rye Stamford Woodside Stamford Princeton

Ejemplo de relacin cliente

Respuesta: Para la tupla en consideracin tr de la relacin probar, si no se encuentra ninguna tupla que se corresponda, en la divisin por asociacin de la relacin construir, se rellena con nulos y se incluye en el resultado. Esto dar la reunin externa por la izquierda natural tr ]x| ts. Para obtener la reunin externa por la derecha natural tr |x[ ts, se puede mantener un indicador booleano con cada tupla en la divisin de la relacin para construir actual, Hsi residente en memoria, y activarlo siempre que cualquier tupla de la relacin para probar se corresponda con ella. Cuando se haya terminado con Hsi, todas las tuplas en ella que no tengan su indicador activado se rellenarn con nulos y se incluirn en el resultado. Para obtener la reunin externa completa natural, se hacen juntas las dos operaciones anteriores. Para probar nuestro algoritmo se emplean las relaciones de muestra cliente e impositor, de las Figuras 13.17 y 13.18. Supngase que hay suficiente memoria para mantener tres tuplas de la relacin para construir, ms un ndice asociativo para estas tres tuplas. Como relacin para construir se emplea impositor. Se utiliza la funcin de asociacin simple que devuelve la primera letra de nombre-cliente. Tomando las primeras particiones se obtiene Hr1 = {(Adams, Spring, Pittsfield)} y Hs1 = f. La tupla en la divisin de la relacin para probar no tendr ninguna tupla equivalente, por lo que se obtiene (Adams, Spring, Pittsfield, nulo). En la divisin para D, la tupla de la relacin para construir est sin equivalencias, por lo que proporciona una tupla de salida (David, nulo, nulo, A-306). En la divisin 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 se completa la reunin.
1 1

13.12 Escrbase el seudocdigo para un iterador que implemente la reunin en bucle anidado indexada, donde la relacin externa est encauzada. Emplear las funciones de iterador estndares en el seudocdigo. Mustrese el estado del iterador entre las llamadas. Respuesta: Sea externo el iterador que devuelve sucesivas tuplas desde la relacin externa encauzada. Sea interno el iterador que devuelve sucesivas tuplas de la relacin interna que tiene un valor dado en los atributos de la reunin. El iterador interno devuelve estas tuplas realizando una bsqueda de ndices. Las funciones IndexedNLJoin::open, IndexedNLJoin::close e IndexedNLJoin::next para implementar los iteradores de la reunin en bucle anidado indexada, se dan a continuacin. nombre-cliente Gonzlez Gonzlez Santos Santos Hayes Turner David Lindsay Figura 13.18 nmero-cuenta A-101 A-201 A-217 A-215 A-102 A-305 A-306 A-222

Ejemplo de relacin impositor

Los dos iteradores externo e interno, los valores de las ltimas tuplas ledas de la relacin externa tr y un indicador hechor mostrando si el final del rastreo de la relacin externa se ha alcanzado, constituyen la informacin de estado que es necesario recordar por IndexedNLJoin entre llamadas.

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-reunin]) falso) begin mover la tupla desde la memoria intermedia de salida de interno hasta ts; calcular tr|x| ts y colocarlo en la memoria intermedia de salida; devolver cierto; end else if(externo.next() falso) begin mover la tupla desde la memoria intermedia de salida de externo
1

hasta tr; rebobinar interno a la primera tupla de s; end else hechor := cierto; end return falso; end 13.13 Disense algoritmos basado en ordenacin y asociacin para el clculo de la operacin divisin.

Respuesta: Supngase que r(T S) y s(S) son dos relaciones y que se ha de calcular r s. Mediante algoritmos basados en la ordenacin se ordena la relacin s sobre S. Ordenar la relacin r sobre (T,S). Ahora, iniciar el rastreo de r y mirar los valores del atributo T de la primera tupla. Rastrear r hasta que las tuplas tengan el mismo valor que T. Rastrear tambin simultneamente s y verificar si cada tupla de s aparece como el atributo S de r, de igual manera a la reunin por mezcla. De ser as, obtener el valor de T y proceder con el siguiente valor de T. Puede que sea necesario rastrear varias veces la relacin s, pero r slo se rastrear una vez. El total de accesos a disco ser, despus de ordenar ambas relaciones, |r + N * |s|, donde N es el nmero 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 y se considerar el caso general al final. Divdase la relacin r en atributos de T, de tal manera que cada

particin quepa en memoria (es siempre posible por la suposicin anterior). Considrense las divisiones una a una. Constryase una tabla asociativa sobre las tuplas, al mismo tiempo que se agrupan todos los valores diferentes 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 rechazar el 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, divdanse r y s sobre los atributos de S, de tal manera que se cumpla la condicin y ejectese el algoritmo sobre cada uno de los correspondientes pares de divisiones ri y si. Obtener la interseccin de los valores de T generados en cada divisin.

CAPITULO

14

OPTIMIZACIN DE CONSULTAS
Este captulo describe cmo se optimizan las consultas. Comienza con las estadsticas empleadas para la optimizacin de las consultas y describe en lneas generales como emplear estas estadsticas para estimar selecciones y tamaos del resultado de las consultas, para realizar una estimacin de costes. Las reglas de equivalencia se tratan a continuacin, seguidas por una descripcin de un modelo de algoritmo de optimizacin de consultas, despus del clsico algoritmo de optimizacin del Sistema R y alcanza la optimizacin de las sub consultas anidadas. El captulo termina con una descripcin de vistas materializadas, su papel en la optimizacin y una descripcin de algoritmos de mantenimiento de vistas incremental. Debera enfatizarse que las estimaciones del tamao y las selecciones de las consultas son aproximadas, incluso si las suposiciones hechas como es el caso de la uniformidad, se cumplen. Adems, las estimaciones de costes por diversos algoritmos presentados en el Captulo 13, consideran slo una mnima cantidad de memoria y son, as, estimaciones en el peor de los casos con respecto a la disponibilidad del espacio de memoria intermedia. Como resultado, las estimaciones de costes nunca son muy precisas. Como quiera que experiencias prcticas han demostrado que tales estimaciones tienden a ser razonablemente exactas, los planes de optimizacin con respecto al coste estimado raramente son mucho peores que los planes de optimizacin verdaderos. No se espera que los estudiantes memoricen las estimaciones de tamao y se acentan slo los procesos por los que se alcanzan las estimaciones, no los valores exactos. La precisin en trminos de coste estimado no es un objetivo importante, por lo que estimaciones que parten de unas pocas operaciones de E/S pueden ser consideradas aceptables. Si est disponible para el uso de los estudiantes un sistema de bases de datos comercial, se puede disear un trabajo de laboratorio en el que los estudiantes midan la aceleracin del rendimiento que aportan los ndices. Numerosos productos de bases de datos comerciales tienen una prestacin de plan de explicacin, que permite al usuario encontrar el plan de evaluacin empleado en una consulta. Merece la pena pedir a los estudiantes que analicen los planes generados por diferentes consultas, con y sin ndices. Una tarea ms desafiante es disear pruebas para ver cmo de inteligente es el optimizador de consultas y adivinar, a partir de estos experimentos, cules de las tcnicas de optimizacin cubiertas en el captulo se emplean en el sistema. Cambios a la tercera edicin: El principal cambio a la edicin anterior es que el captulo sobre procesamiento de consultas se ha dividido en dos. La cobertura de la estimacin del tamao para diferentes operaciones, que anteriormente estaba tratada con algoritmos para las operaciones, se ha separado ahora en un apartado independiente (Apartado 14.2). Algunas de las formulas para la estimacin de estadsticas se han simplificado y se han aadido una pocas nuevas. Se ha aportado seudocdigo para los algoritmos de programacin dinmica para la optimizacin del orden de las reuniones. Hay un nuevo apartado sobre la optimizacin de sub consultas anidadas, que forman una parte importante de la optimizacin del SQL. El apartado sobre vistas materializadas es tambin nuevo en esta edicin.

Ejercicios
14.1 El agrupamiento de los ndices puede permitir un acceso ms rpido a los datos de lo que permiten los ndices no agrupados. Indquese el momento en que se deben crear ndices no agrupados pese a las ventajas de los ndices agrupados. Explquese la respuesta. Respuesta: Slo puede haber un ndice agrupado para un fichero, basado en la clave de ordenacin. Cualquier consulta que necesite buscar sobre las otras claves no ordenadas necesitar un ndice no agrupado. Si la consulta accede a la mayora de las tuplas en el fichero, puede ser ms eficiente ordenar el fichero sobre la clave deseada, en vez de emplear el ndice no agrupado. 14.2 Considrense las relaciones r1(A, B, C), r2(C, D, E) y r3(E, F), con claves primarias A, C y E, respectivamente. Supngase que r1 tiene 1.000 tuplas, r2 tiene 1.500 tuplas y r3 tiene 750 tuplas. Estmese el tamao de r1 |x| r2 |x| r3y disese una estrategia eficiente para el clculo de la reunin.
1 1

Respuesta: La relacin resultante de la reunin de r1, r2, y r3 ser la misma, no importa el camino con el que se renan, debido a las propiedades asociativa y conmutativa de las reuniones. As, se considerar el tamao basado en la estrategia de ((r1 |x| r2) |x| r3). Reuniendo r1 con r2 se conseguir una relacin de, a lo sumo, 1.000 tuplas, dado que C es una clave para r2. Igualmente, reuniendo ese resultado con r3 se conseguir una relacin de, a lo sumo, 1.000 tuplas, porque E es una clave para r3. Por lo tanto la relacin final tendr, como mximo, 1.000 tuplas.
1 1

Una estrategia eficiente para el clculo de esta reunin sera crear un ndice sobre el atributo C para la relacin 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, en r1. b. Emplear el ndice creado sobre E para buscar en r3, a lo sumo, una tupla que se corresponda con el valor nico de E en r2 14.3 Considrense las relaciones r1(A, B, C), r2(C, D, E) y r3(E, F) del Ejercicio 14.2. Supngase que no hay 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. Supngase que r1 tiene 1.000 tuplas, r2 tiene 1.500 tuplas y r3 tiene 750 tuplas. Estmese el tamao de r1 |x| r2 |x| r3 y disese una estrategia eficiente para calcular la reunin. Respuesta: El tamao estimado de la relacin se puede determinar calculando el nmero medio de tuplas que se reuniran con cada tupla de la segunda relacin. En este caso, por cada tupla de r1, 1.500/V (C, r2) = 15/11 tuplas (por trmino medio) de r2 se reuniran con ella. La relacin intermedia tendra 15.000/11 tuplas. Esta relacin se rene con r3 para conseguir un resultado de aproximadamente 10.227 tuplas (15.000/11 750/100 = 10.227). Una buena estrategia reunira primero r1 y r2, dado que la relacin intermedia es de tamao parecido a r1 r2. Despus se rene r3 a este resultado. 14.4 Supngase que se dispone de un rbol B+ para ciudad-sucursal para la relacin sucursal y que no se dispone de ningn otro ndice. Indquese la mejor manera de tratar las siguientes selecciones que implican a la negacin. 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 ningn objetivo. Se puede rastrear secuencialmente el fichero y seleccionar todas las tuplas cuyo campo ciudad-sucursal sea diferente de Arganzuela. c. Esta consulta es equivalente a la consulta s(ciudad-sucursal Arganzuela
activo<5000)(sucursal)

Empleando el ndice ciudad-sucursal se pueden recuperar todas las tuplas con valor ciudad-sucursal mayor o igual que Arganzuela, siguiendo las cadenas de los punteros desde la primera tupla Arganzuela. Tambin se aplica el criterio adicional, sobre cada tupla, de activo < 5.000. 14.5 Supngase que se dispone de un rbol B+ para (nombre-sucursal, ciudad-sucursal) para la relacin sucursal. Indquese la mejor manera de tratar la seleccin siguiente. (ciudad-sucursal
)(sucursal) <Arganzuela )

(activo

<5000)

(nombre-sucursal <Centro

Respuesta: Empleando el ndice se localiza la primera tupla con nombre-sucursal Centro. Entonces los punteros seguirn recuperando sucesivas tuplas, mientras que ciudad-sucursal sea menor que Arganzuela. De entre las tuplas recuperadas se rechazarn las que no cumplan la condicin (activo < 5.000). 14.6 Demustrese que se cumplen las equivalencias siguientes. Explquese el modo en que se pueden aplicar 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 slo utiliza atributos de A. c. ? (E1 ]x| E2) = ? (E1) ]x| E2, donde slo utiliza atributos de E1. Respuesta: a E1 |x|q (E2 E3) = (E1 |x|q E2 E1 |x|q E3). e renombra (E1 |x|q (E2 E3)) como R1, (E1 |x|q E2) como R2 y (E1 |x|q E3) como R3. Es claro que si una tupla t pertenece a R1, tambin 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. Por lo tanto: "t, t (R2 - R3) t R1 Las dos ecuaciones anteriores implican la equivalencia dada. Esta equivalencia es til porque la evaluacin de la reunin por el lado derecho producir numerosas tuplas que, finalmente, se eliminarn del resultado. La expresin del lado izquierdo se puede evaluar ms eficientemente.

sq( AGF (E)) = AGF (sq(E)), donde q utiliza slo atributos de A. q utiliza slo atributos de A. Por lo tanto, si cualquier tupla t en la salida de AGF (E) se filtra mediante la seleccin del lado izquierdo, todas las tuplas en E cuyos valores en A sean iguales a t[A] se filtran por la seleccin del lado derecho. Por lo tanto: "t, t sq( AGF (E)) t AGF (sq(E))

Empleando un razonamiento similar, se puede concluir que "t, t AGF (sq(E)) t sq(AGF (E)) Las dos ecuaciones anteriores implican la equivalencia dada. Esta equivalencia es til porque la evaluacin del lado derecho evita realizar la agregacin en grupos que, de todas formas, se eliminarn del resultado. As, la expresin del lado derecho se puede evaluar ms eficientemente que la del lado izquierdo. sq(E1 ]x| E2) = sq(E1) ]x| E2 donde slo utiliza atributos de E1. q utiliza slo atributos de E1. Por lo tanto, si cualquier tupla t en la salida de (E1 ]x| E2) se filtra mediante la seleccin del lado izquierdo, todas las tuplas en E1 cuyos valores sean iguales a t[E1] se filtran por la seleccin del lado derecho. Por lo tanto: c.
1 1 1

"t, t sq(E1 ]x| E2) t sq(E1) ]x| E2


1 1

Empleando un razonamiento similar, se puede concluir que "t, t sq(E1) ]x| E2 t sq(E1 ]x| E2)
1 1

Las dos ecuaciones anteriores implican la equivalencia dada. Esta equivalencia es til porque la evaluacin del lado derecho evita que se produzcan muchas tuplas de salida que, de todas formas, se eliminarn del resultado. As, la expresin del lado derecho se puede evaluar ms eficientemente que la del lado izquierdo. 14.7 Mustrese el modo de obtener las equivalencias siguientes mediante una secuencia de transformaciones utilizando las reglas de equivalencia del Apartado 14.3.1. a. sq1q2 q3(E) = sq1(sq2(sq3(E))) b. sq1q2(E1 |x|q3 E2) = sq1(E1 |x|q3 (sq2 (E2))), donde 2 slo implica atributos de E2 Respuesta: a. Empleando la regla 1, sq1q2 q3(E) se convierte en sq1(sq2q3(E)). Aplicando de nuevo la regla 1 se tiene sq1(sq2(sq3(E))). b sq1q2(E1 |x|q3 E2), aplicando la regla 1 se convierte en sq1(sq2(E1 |x|q3 E2)) Aplicando la regla 7.a esto se convierte en sq1(E1 |x|q3 (sq2 (E2))). 14.8 Para cada uno de los siguientes pares de expresiones, dense ejemplos de relaciones que muestren que las 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 las expresiones seran equivalentes. d. (R ]x| S) ]x| T y R ]x| (S ]x| T) En otras palabras, la reunin externa por la izquierda no es asociativa. (Sugerencia: Supngase que los esquemas 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 slo atributos de E 2

Respuesta: a. R = {(1, 2)}, S = {(1, 3)} El resultado de la expresin del lado izquierdo es {(1)}, mientras que el resultado de la expresin del lado derecho est vaco. b R = {(1, 2), (1, 5)} La expresin del lado izquierdo tiene un resultado vaco, mientras que la del lado derecho tiene el resultado {(1, 2)}. c. S, al reemplazar los max por los min, las expresiones sern equivalentes. Cualquier tupla que la seleccin en los lados de la derecha elimine, no pasara la seleccin sobre los lados de la izquierda, si fuera el mnimo valor y, de cualquier manera, sera eliminada si no fuera el valor mnimo. d. R = {(1, 2)}, S = {(2, 3)}, T = {(1, 4)}. La expresin de la izquierda da {(1, 2, nulo, 4)}, mientras que la 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 expresin C = 1. El resultado de la expresin del lado izquierdo est vaco, mientras que el resultado de la expresin del lado derecho es {(1, 2, nulo)}. 14.9 SQL permite las relaciones con duplicados (Captulo 4). a. Defnanse las versiones de las operaciones bsicas del lgebra relacional , , , |x|, -, y que trabajan en relaciones con duplicados, de manera consistente con SQL. b. Comprubense cules de las reglas de equivalencia, de la 1 a la 7.b, se cumplen para la versin multiconjunto 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. s Sea c1 la copia de la tupla t1 en r1. Si t1 cumple la seleccin sq, entonces hay c1 copias de t1 en sq(r1), de lo contrario 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 la proyeccin 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.t2 en r1 r2. iv |x| El resultado ser lo mismo que un producto cruzado seguido de una seleccin. 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.

b Todas las reglas de equivalencia, de la 1 a la 7.b del Apartado 14.3.1, se mantienen para la versin multiconjunto del lgebra relacional definida en la primera parte. Existen reglas de equivalencia que se cumplen para el lgebra relacional ordinaria, pero no para la versin de multi conjuntos. Por ejemplo, considrese la regla: A B = A B - ( A - B) - ( B - A) Esto es obviamente vlido en el lgebra relacional sencillo. Considrese un ejemplar de multiconjunto en el que una tupla t aparece 4 veces en A y 3 veces en B; t aparecer 3 veces en el resultado de la expresin del lado izquierdo, pero 6 veces en el del lado derecho. La razn por la que esta regla no se mantiene en la versin multiconjunto, est en la asimetra de la semntica de la unin e interseccin de multi conjuntos. 14.10 ** Demustrese que, con n relaciones, hay (2(n-1))!/(n-1)! ordenes de reunin diferentes. Sugerencia: Un rbol binario completo es aqul en el que cada nodo interno tiene exactamente dos hijos. Utilcese el hecho de que el nmero de rboles binarios completos diferentes con n nodos hojas es Si se desea, se puede obtener la frmula para el nmero de rboles binarios completos con n nodos, a partir de la frmula para el nmero de rboles binarios con n nodos. El nmero de rboles binarios con n nodos es ; este nmero se conoce como nmero de Catalan y su obtencin puede hallarse en cualquier libro de texto estndar sobre estructuras de datos o algoritmos. Respuesta: Cada orden de reunin es un rbol binario completo (cada nodo sin hojas tiene exactamente dos hijos) con las relaciones como hojas. El nmero de rboles binarios completos diferentes con n nodos hojas es (consltese cualquier libro de texto sobre Estructuras Discretas, por ejemplo Fundamentals of Data Structures por Horowitz y Sahni, para una prueba). Multiplicando esto por n!, por el nmero de permutaciones de las n hojas, se obtiene el resultado deseado. 14.11 ** Demustrese que el orden de reunin de menor coste puede calcularse en un tiempo de O(3n). Supngase que se puede almacenar y examinar la informacin sobre un conjunto de relaciones (como el orden ptimo de reunin para el conjunto y el coste de ese orden de reunin) en tiempo constante. (Si se encuentra difcil este ejercicio, demustrese al menos la cota de tiempo menos estricta de O(22n).) Respuesta: Considrese el algoritmo de programacin dinmica dado en la Figura 14.5 del libro de texto. Por cada subconjunto con k + 1 relaciones, el orden de reunin ptimo se puede calcular con el tiempo 2k+1. Esto es as porque, para un par concreto de subconjuntos A y B, se necesita tiempo constante y hay a lo sumo 2k+12 subconjuntos diferentes que A puede denotar. As, sobre todos los subconjuntos de tamao k + 1, este

coste es . Sumando sobre todos los k desde 1 hasta n-1, se obtiene la expansin binomial de ((1 + x)n - x) con x = 2. As, el coste total es menor que 3n. 14.12 Demustrese que, si slo se toman en consideracin los rboles de reunin en profundidad por la izquierda, como en el optimizador System R, el tiempo empleado en buscar el orden de reunin ms eficiente es del orden de n2n. Supngase que slo hay un orden interesante. Respuesta: La deduccin del tiempo empleado es similar al caso general, excepto que en vez de considerar 2k+1 - 2 subconjuntos de tamao menor o igual que k para A, slo es necesario considerar k + 1 subconjuntos de tamao exactamente igual a k. Esto es as porque el operando de la derecha de la reunin ms alta ha de ser una relacin simple. Por lo tanto, el coste total de encontrar el mejor orden de reunin para todos los subconjuntos de tamao k + 1 es , el cual es igual a n . Sumando sobre todos los k desde

1 hasta n-1, empleando la expansin binomial de ((1 + x)n - 1) con x = 1, se obtiene un coste total menor que n2n-1. 14.13 Se dice que un conjunto de reglas de equivalencia est completo si, siempre que dos expresiones son equivalentes, se puede obtener una de la otra mediante una secuencia de utilizaciones de las reglas de equivalencia. Indquese si el conjunto de reglas de equivalencia que se consider en el Apartado 14.3.1 es completo. Sugerencia: Considerar la equivalencia 3 = 5 (r) = { }. Respuesta: Dos expresiones relacionales se definen equivalentes, cuando sobre todas las relaciones de entrada, generan la misma salida. El conjunto de reglas de equivalencia considerado en el Apartado 14.3.1 no es completo. Las expresiones 3=5(r) y { } son equivalentes, pero no se puede demostrar empleando slo estas reglas. 14.14 Decorrelacin: a. Escrbase una consulta anidada sobre la relacin cuenta para buscar, para cada sucursal cuyo nombre comience por B, todas las cuentas con el saldo mximo de cada sucursal. b. Rescrbase la consulta anterior sin emplear consultas anidadas; en otras palabras, decorrelacinese la consulta. c. Disese un procedimiento (parecido al descrito en el Apartado 14.4.5) para decorrelacionar estas consultas. Respuesta: a. La consulta anidada es la siguiente: select S.nmero-cuenta from cuenta.S where S.nombre-sucursal like B% and S.saldo = (select max(T.saldo) from cuenta T where T.nombre-sucursal = S.nombre-sucursal) b La consulta descorrelacionada es la siguiente: create table t1 as select nombre-sucursal, max (saldo) from cuenta group by nombre-sucursal select nmero-cuenta from cuenta, t1 where cuenta.nombre-sucursal like B% and cuenta.nombre-sucursal = t1.nombre-sucursal and cuenta.saldo = t1.saldo c. En general, considrense consultas de la forma: select from L1 where P1 and A1 op (select f(A2) from L2 where P2)

donde f es alguna funcin agregada sobre los atributos A2 y op es algn operador binario booleano. La consulta se puede rescribir como create table t1(V,Ag2) as select V, f(A2) from L2 where P12 group by V select from L1, t1 where P1 and P22 and A1 op t1.Ag2 donde i. V contiene todos los atributos que se emplean en la selecciones que implican variables de correlacin en la consulta anidada ii. el predicado P12 contiene los predicados de P2 sin las selecciones que implican las variables de correlacin iii P22 introduce las selecciones que implican las variables de correlacin. (Si los predicados en P2 2 hacen referencia a los nombres de relacin en L2, deben rescribirse para referirse a la relacin t1.) 14.15 Descrbase el modo de conservar de manera incremental el resultado de las operaciones siguientes, tanto para inserciones como para eliminaciones. a. Unin y diferencia de conjuntos b. Reunin 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 en v y si no es as, se aade a v . Cuando una tupla se elimina de r, se comprueba si est en s y, si no est, se elimina de v. La inserciones y las eliminaciones en s se tratan de manera simtrica. Para la diferencia de conjuntos, dada una vista v = r - s, cuando se inserta una tupla en r, se verifica si est presente en s y, si no es as, se aade 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, se comprueba si est en r y, si lo est, se aade a v. b. Dada una vista materializada v = r ]x| s, cuando se inserta un conjunto de tuplas ir en r, se aaden las tuplas ir ]x| s a la vista. Cuando ir se elimina de r, se elimina ir ]x| s de la vista. Cuando un conjunto de tuplas is se inserta en s, se calcula r |x| is. Se encuentran todas las tuplas de r que previamente no se correspondieron con ninguna tupla de s(es decir, aquellas que se rellenaron con nulos en in r ]x| s), pero que se corresponden con is. Se eliminan de la vista todas las entradas rellenadas con nulos y se aaden las tuplas r |x| s a la vista. Cuando is se elimina de s, se eliminan las tuplas r |x| is de la vista. Se buscan tambin todas las tuplas en r que se corresponden con is, pero que no se corresponden con ninguna otra tupla en s. Se aaden todas estas a la vista, despus de rellenarlas con valores nulos.
1 1 1 1 1 1

14.16 Se da un ejemplo de expresin que defina una vista materializada y dos situaciones (conjuntos de estadsticas para las relaciones de entrada y sus diferenciales), tales que la conservacin incremental de la vista sea mejor que su reclculo en una de las situaciones y el reclculo sea mejor en la otra. Respuesta: Sean tres relaciones r, s y t. Considrese una vista materializada sobre estas, definida por (r |x| s |x| t). Supngase que la relacin r no tiene ningn atributo en comn con s o t, mientras que s y t tienen relacin de clave externa Cada una de ellas tiene 1.000 tuplas, y se aaden a r 100 tuplas. El reclculo es mejor, porque (s |x| t) se puede calcular primero, el cual tendr 1.000 tuplas. Entonces puede reunirse con t. En la
1 1 1

conservacin 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 relacin se reunir entonces con t, lo cual ser muy costoso. Sin embargo, si se aaden 100 tuplas a s en vez de a r, en la situacin anterior, el mantenimiento incremental de la vista ser claramente mejor, pues un incremento en s se puede reunir con t para obtener una relacin de tamao 100, la cual se puede reunir con r.

CAPITULO

15

TRANSACCIONES
Este captulo aporta una visin general del procesamiento de transacciones. Primero motiva los problemas de atomicidad, consistencia, aislamiento y durabilidad, e introduce la nocin de transacciones ACID. Posteriormente presenta algunos esquemas simples y sus inconvenientes, por lo que incentiva las tcnicas descritas en los Captulos 16 y 17. El resto del captulo describe la nocin de planificacin y los conceptos de secuencialidad. Se recomienda enormemente cubrir este captulo en un primer curso de bases de datos, dado que introduce conceptos que todo estudiante de bases de datos debera conocer. En los Captulos 16 y 17 se cubren los detalles sobre como implantar las propiedades de las transacciones. En la presentacin inicial sobre los requerimientos ACID, el requerimiento de aislamiento sobre transacciones concurrentes no insiste en la secuencialidad. Segn Haerder y Reuter [1983], el aislamiento slo requiere que los sucesos de una transaccin permanezcan ocultos de otras transacciones que se estn ejecutando en modo concurrente, con el objeto de permitir una vuelta atrs. Sin embargo al final del captulo, y en la mayor parte del libro (salvo en el Captulo 24), se emplea la poderosa condicin de secuencialidad como un requerimiento de las transacciones concurrentes. Cambios a la tercera edicin: Se ha eliminado de este captulo (y del libro) la comprobacin de la secuencialidad de las vistas, dado que no tiene aplicacin prctica.

Ejercicios
15.1 Lstense las propiedades ACID. Explquese la utilidad de cada una de ellas.

Respuesta: Las propiedades ACID y las necesidades para cada una de ellas, son: Consistencia: La ejecucin de una transaccin en aislamiento (es decir, son ninguna otra transaccin ejecutndose concurrentemente), preserva la consistencia de la base de datos. Generalmente, esto es responsabilidad del programador de la aplicacin que codifica las transacciones. Atomicidad: O todas las operaciones de la transaccin 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, debera 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 ejecucin antes de que comience Ti , o bien que Tj ha comenzado su ejecucin despus de que Ti termine. De este modo, cada transaccin ignora al resto de las transacciones que se ejecuten concurrentemente en el sistema. El punto de vista del usuario de un sistema transaccional requiere la propiedad de aislamiento y la propiedad de que las planificaciones concurrentes llevan al sistema de un estado consistente a otro. Estos requerimientos se cumplen asegurando que slo se permiten las planificaciones secuenciales, de transacciones que preservan la consistencia individualmente. Durabilidad: Tras la finalizacin con xito de una transaccin, los cambios realizados en la base de datos permanecen, incluso si hay fallos en el sistema. 15.2 Supngase que existe un sistema de base de datos que nunca falla. Se necesita un gestor de recuperaciones para este sistema? Respuesta: Incluso en este caso, se necesita un gestor de recuperaciones para realizar el retroceso de las transacciones abortadas. 15.3 Considrese un sistema de archivos como el de su sistema operativo preferido. a. Cules son los pasos implicados en la creacin y borrado de archivos y en la escritura de datos sobre un archivo? b. Explquese por qu son relevantes los aspectos de atomicidad y durabilidad en la creacin y borrado de archivos y en la escritura de datos sobre archivos. Raznese la respuesta. Respuesta: Intervienen varios pasos en la creacin de un archivo. Se asigna un rea de almacenamiento al archivo en el sistema de archivos, se le da un nico nmero-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. Para el implantador del sistema de ficheros, no obstante, muchas de las acciones internas del sistema de ficheros necesitan disponer de semnticas transaccionales. Todos los pasos implicados en la creacin / borrado de archivos deben ser atmicos, de lo contrario habr archivos no referenciables o reas sin usar en el sistema de archivos. 15.4 Los implantadores de sistemas de bases de datos prestan mucha ms atencin a las propiedades

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 atmicos y duraderos y cuyos resultados afectan al mundo real de forma permanente. Ejemplos de tales tareas son las transacciones monetarias, reservas de plazas, etc. Por lo tanto, han de asegurarse las propiedades ACID. En contraste, la mayora de los usuarios de los sistemas de ficheros no estaran dispuestos a pagar el precio (dinero, espacio en disco, tiempo) de soportar las propiedades ACID. 15.5 Durante su ejecucin, una transaccin pasa a travs de varios estados hasta que se compromete o aborta. Lstense todas las secuencias posibles de estados por los que pueda pasar una transaccin. Explquese por qu puede ocurrir cada una de la transiciones de estados. Respuesta: Las secuencias de estados posibles son: a. activagparcialmente comprometidagcomprometida. Esta es la secuencia normal que seguir una transaccin con xito. Despus de ejecutar todas sus instrucciones, accede al estado parcialmente comprometida. Despus de que se ha grabado en disco suficiente informacin de recuperacin, la transaccin finalmente accede al estado comprometida. b. activagparcialmente comprometidagabortada. Despus de ejecutar la ltima instruccin de la transaccin, accede al estado parcialmente comprometida. Pero antes de grabar en disco suficiente informacin de recuperacin, puede tener lugar un fallo en el hardware destruyendo el contenido de la memoria. En este caso, los cambios realizados en la base de datos se deshacen y la transaccin accede al estado abortada. c. activagfallidagabortada. Despus de iniciarse la transaccin, si se descubre en algn momento que no puede continuar la ejecucin normal (debido a errores de programacin o a errores externos ), entra en el estado fallido. Entonces la transaccin es retrocedida, despus de lo cual entra en el estado abortada. 15.6 Justifquese lo siguiente: La ejecucin concurrente de transacciones es ms importante cuando los datos se deben extraer de disco (lento) o cuando las transacciones duran mucho y es menos importante cuando hay pocos datos en memoria y las transacciones son muy cortas. Respuesta: Si una transaccin dura mucho o extrae datos desde un disco lento, lleva mucho tiempo completarla. En ausencia de concurrencia, otras transacciones tendrn que esperar por un largo perodo de tiempo. El tiempo de respuesta medi se incrementar. Tambin, cuando la transaccin est leyendo datos del disco, la CPU pierde el tiempo. As, los recursos no se emplean correctamente. Por lo tanto, la ejecucin concurrente se hace importante en este caso. Sin embargo, cuando las transacciones son cortas o los datos estn disponibles en memoria, estos problemas no suceden. 15.7 Explquese la diferencia entre los trminos planificacin secuencial y planificacin secuenciable.

Respuesta: Una planificacin en la que todas las instrucciones que pertenecen a una nica transaccin aparecen juntas, se denomina planificacin secuencial. Una planificacin secuenciable tiene una restriccin ms dbil que la que debera ser equivalente para alguna planificacin secuencial. Hay dos definiciones de equivalencia de planificaciones: equivalentes en cuanto a conflictos y equivalentes en cuanto a vistas. Ambas se describen en el captulo.

15.8

Considrense las dos transacciones siguientes: T1: leer(A); leer(B); si A = 0 entonces B := B + 1; escribir(B). leer(B); leer(A); si B = 0 entonces A := A + 1; escribir(A).

T2:

Sea el requerimiento de consistencia A = 0 B = 0, siendo los valores iniciales A = B = 0. a. Demustrese que toda ejecucin secuencial en la que aparezcan estas transacciones conserva la consistencia de la base de datos. b. Mustrese una ejecucin concurrente de T1 y T2 que produzca una planificacin no secuenciable. c. Existe una ejecucin concurrente de T1 y T2 que produzca una planificacin secuenciable? Respuesta: a. Hay dos ejecuciones posibles: T1 T2 y T2 T1. Caso 1: inicialmente despus de T1 despus de T2 Caso 2: A 0 0 0 B 0 1 1

Consistencia encontrada: A = 0 B = 0 T F = T inicialmente despus de T1 despus de T2 A 0 1 1 B 0 0 0

Consistencia encontrada: A = 0 B = 0 F T = T b Cualquier intercalado de T1 y T2 resulta en una planificacin no secuenciable.

Figura 15.18.

Grafo de precedencia.

T1 leer(A) leer(B) si A = 0 entonces B = B +1

T2 leer(B) leer(A)

si B = 0 entonces A = A +1 escribir(A) escribir(B) c. No hay ninguna ejecucin paralela resultante en una planificacin secuenciable. Del apartado a se sabe que una planificacin secuenciable resulta en A = 0 B = 0 . Supngase que se empieza con T1 leer(A) . Entonces, cuando la planificacin termine, no importa cuando se ejecutan los pasos de T2, B = 1 . Supngase ahora 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 g (A = 0 B = 0). Anlogamente empezando con T2 leer(B). 15.9 Puesto que toda planificacin 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 en cuanto a vistas? Respuesta: La mayora de los protocolos de control de concurrencia (protocolos para asegurar que slo se generan planificaciones secuenciables), empleados en la prctica, estn basados en la secuencialidad en cuanto a conflictos realmente permiten slo un subconjunto de planificaciones secuenciales en cuanto a conflictos. La forma general de secuencialidad en cuanto a vistas es muy costosa de comprobar y slo una forma muy restringida de ella se emplea para el control de concurrencia. 15.10 Considrese el grafo de precedencia de la Figura 15.18. Es secuenciable en cuanto a conflictos la planificacin correspondiente? Raznese la respuesta. Respuesta: Hay una planificacin secuenciable correspondiente al grafo de precedencia siguiente, dado que el grafo es acclico. Una posible planificacin se obtiene haciendo una ordenacin topolgica, es decir, T1, T2, T3, T4, T5.

15.11 Qu es una planificacin recuperable? Por qu es conveniente la recuperabilidad de las planificaciones? Hay circunstancias bajo las cuales puede ser conveniente permitir planificaciones no recuperables? Raznese la respuesta.

Respuesta: Una planificacin recuperable es aqulla en la que para todo par de transacciones Ti y Tj , tales que Tj lee elementos de datos que ha escrito previamente Ti, la operacin comprometer de Ti aparece antes que la de Tj. Las planificaciones recuperables son convenientes porque el fallo de una transaccin podra, de lo contrario, llevar al sistema a un estado de inconsistencia irreversible. Las planificaciones no recuperables pueden necesitarse, algunas veces, cuando las actualizaciones se deben hacer visibles pronto debido a ligaduras temporales, incluso si no han sido comprometidas an, lo cual puede ser requerido para transacciones muy largas. 15.12 Qu es una planificacin sin cascada? Por qu es conveniente la planificacin sin cascada? Hay circunstancias bajo las cuales puede ser conveniente permitir planificaciones que no sean sin cascada? Raznese la respuesta. Respuesta: Una planificacin sin cascada es aqulla para la que todo par de transacciones Ti y Tj , tales que Tj lee un elemento de datos que ha escrito previamente Ti, la operacin comprometer de Ti aparece antes que la operacin de lectura de Tj. Las planificaciones sin cascada son convenientes porque el fallo de una transaccin no conduce al aborto de ninguna otra transaccin. Naturalmente, esto se consigue a costa de una menor concurrencia. Si los fallos suceden raramente, de tal manera que se pueda pagar el precio de abortos en cascada por el incremento de concurrencia, podran ser convenientes planificaciones que no sean sin cascada.

CAPITULO

16

CONTROL DE CONCURRENCIA
Este captulo describe como controlar las ejecuciones concurrentes en una base de datos, con el objeto de garantizar las propiedades de aislamiento de las transacciones. Una variedad de protocolos se definen con este propsito. Si se dispone de poco tiempo, se pueden omitir algunos protocolos. Se recomienda cubrir, al menos, bloqueo de dos fases (Apartado 16.1.1), hasta 16.1.3, deteccin y recuperacin de interbloqueos (Apartado 16.6, omitiendo el Apartado 16.6.1), el fenmeno fantasma (Apartado 16.7.3) y los conceptos tras el control de la concurrencia de ndices (parte de introduccin del Apartado 16.9). Por lo tanto, se cubriran la mayor parte de las tcnicas empleadas. Merece la pena apuntar como los protocolos de bloqueo basados en grafos generalizan protocolos sencillos, tales como la adquisicin ordenada de bloqueos, la cual pueden haber estudiado los estudiantes en un curso de sistemas operativos. Aunque los protocolos de marcas temporales por s mismos no son ampliamente usados, el bloqueo de dos fases multi versin (Apartado 16.5.2) est aumentando de importancia, dado que permite ejecutar grandes transacciones de slo lectura concurrentemente con actualizaciones. El fenmeno fantasma es a menudo mal interpretado por los estudiantes, mostrando que el bloqueo de dos fases es incorrecto. Vale la pena remarcar que las transacciones que exploran una relacin deben leer algunos datos para encontrar qu tuplas estn en la relacin; mientras que estos datos estn bloqueados en un modo de dos fases, el fenmeno fantasma no avanzar. Cambios a la tercera edicin: Este captulo ha sido reorganizado a partir de la edicin anterior. Algunas de las materias del captulo de Control de Concurrencia de la segunda edicin (Captulo 11), tales como planificaciones y pruebas para secuencializacin, se han trasladado al Captulo 15 de la tercera edicin. Los apartados sobre la gestin de interbloqueos (Apartado 16.6) y la concurrencia en estructuras de ndice (Apartado 16.9) se han trasladado desde el Captulo 12 de la segunda edicin (Procesamiento de Transacciones). El apartado sobre bloqueo de dos fases multi versin es nuevo.

Ejercicios
16.1 Demustrese que el protocolo de bloqueo de dos fases asegura la secuencialidad en cuanto a conflictos y que se pueden secuenciar las transacciones a travs de sus puntos de bloqueo. Respuesta: 16.2 Considrense las dos transacciones siguientes: T31: leer(A); leer(B); si A = 0 entonces B := B + 1; escribir(B). leer(B); leer(A); si B = 0 entonces A := A + 1; escribir(A).

T32:

Adanse a las transacciones T31 y T32 las instrucciones de bloqueo y desbloqueo, para que sigan el protocolo de dos fases. Puede producir la ejecucin 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 = 0 entonces B := B + 1 escribir(B) desbloquear(A) desbloquear(B) T32: bloquear-S(B) leer(B) bloquear-X(A) leer(A) si B = 0 entonces A := A + 1 escribir(A) desbloquear(B) desbloquear(A)

b La ejecucin de estas transacciones puede dar lugar a interbloqueos Por ejemplo, considrese la siguiente planificacin parcial: T31 bloquear-S(A) leer(B) bloquear-X(B) bloquear-X(A) Las transacciones ahora estn interbloqueadas 16.3 Qu beneficio proporciona el bloqueo estricto de dos fases? Qu inconvenientes tiene? T32 bloquear-S(B) leer(B)

Respuesta: Dado que slo produce planificaciones sin cascada, la recuperacin es muy fcil. Pero el conjunto de planificaciones que se puede obtener es un subconjunto de los que se obtiene desde el bloqueo sencillo de dos fases, con lo que se reduce la concurrencia. 16.4 Qu beneficio proporciona el bloqueo riguroso de dos fases? Comprese con otras formas de bloqueo de dos fases. Respuesta: El bloqueo riguroso de dos fase tiene las ventajas del bloqueo estricto de dos fases. Adems tiene las propiedades de que para dos transacciones conflictivas, su orden de compromiso es su orden de secuencialidad. 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. Indquense tres razones que expliquen la popularidad de este protocolo. Respuesta: Es relativamente sencillo de implementar, debido a las planificaciones sin cascada impone unos costes de retroceso bajos y generalmente permite un nivel aceptable de concurrencia. 16.6 Considrese una base de datos organizada como un rbol con raz. Supngase que se inserta un nodo ficticio entre cada par de nodos. Demustrese que, si se sigue el protocolo de rbol con este nuevo rbol, se obtiene una mejor concurrencia que con el rbol original. Respuesta: La prueba est en Buckley y Silberschatz, Concurrency Control in Graph Protocols by Using Edge Locks, Proc. ACM SIGACT-SIGMOD Simposio sobre los Principios de Sistemas de Base de Datos, 1984. 16.7 Demustrese con un ejemplo que hay planificaciones que son posibles con el protocolo de rbol, que no lo son con protocolos de bloqueo de dos fases y viceversa.

Respuesta: Considrese el grafo de base de datos estructurada en rbol que se presenta a continuacin.

Planificacin posible bajo el protocolo de rbol, pero no bajo el de bloqueo de dos fases: T1 bloquear(A) bloquear(B) desbloquear(A) bloquear(C) desbloquear(B) bloquear(B) desbloquear(A) desbloquear(B) desbloquear(C) Planificacin posible bajo el bloqueo de dos fases, pero no bajo el protocolo de rbol: T1 bloquear(A) bloquear(C) desbloquear(B) desbloquear(A) desbloquear(C) 16.8 Considrese la siguiente extensin del protocolo de bloqueo de rbol, que permite bloqueos compartidos y exclusivos: Una transaccin puede ser de slo lectura, en cuyo caso slo puede solicitar bloqueos compartidos, o bien puede ser de actualizacin, en cuyo caso slo puede solicitar bloqueos exclusivos. Cada transaccin debe seguir las reglas del protocolo de rbol. Las transacciones de slo lectura pueden bloquear primero cualquier elemento de datos, mientras que las transacciones de actualizacin deben bloquear primero la raz. Demustrese 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. T2 bloquear(B) T2

bloquear(A)

16.9 Considrese el siguiente protocolo de bloqueo basado en grafos, el cual slo permite modos de bloqueo exclusivos y que funciona con grafos de datos con forma de grafo acclico dirigido con raz. Una transaccin puede bloquear en primer lugar cualquier nodo. Para bloquear cualquier otro nodo, la transaccin debe poseer un bloqueo sobre la mayora de los padres de dicho nodo. Demustrese 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 Computacin, 1979. 16.10 Considrese el siguiente protocolo de bloqueo basado en grafos que slo permite bloqueos exclusivos y que funciona con grafos de datos con forma de grafo dirigido acclico con raz. Una transaccin puede bloquear en primer lugar cualquier nodo. Para bloquear cualquier otro nodo, la transaccin debe haber visitado a todos los padres de dicho nodo y debe poseer un bloqueo sobre uno de los padres del vrtice. Demustrese 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 Computacin, 1979. 16.11 Considrese una variante del protocolo de rbol llamada protocolo de bosque. La base de datos est organizada como un bosque de rboles con raz. Cada transaccin 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, slo si el padre del nodo solicitado est bloqueado actualmente. Se pueden desbloquear los elementos de datos en cualquier momento. Ti no puede volver a bloquear un elemento de datos despus de haberlo desbloqueado. Demustrese que el protocolo de bosque no asegura la secuenciabilidad. Respuesta: Tmese un sistema con dos rboles:

Se tienen dos transacciones, T1 y T2. Considrese la siguiente planificacin legal:

T1 bloquear(n1) bloquear(n3) escribir(n3) desbloquear(n3)

T2

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 planificacin no es secuenciable. 16.12 El bloqueo no se hace explcitamente en lenguajes de programacin persistentes. En vez de esto, se deben bloquear los objetos (o sus pginas correspondientes) cuando se accede a dichos objetos. Muchos de los ms modernos sistemas operativos permiten al usuario definir protecciones de acceso (sin acceso, lectura, escritura) para las pginas y los accesos a memoria que violen las protecciones de acceso dan como resultado una violacin de proteccin (vase la orden mprotect de Unix , por ejemplo). Descrbase la forma en que se puede usar el mecanismo de proteccin de acceso para bloqueos a nivel de pgina en lenguajes de programacin persistentes. (Sugerencia: La tcnica es algo parecida a la que se empleaba para el rescate hardware en el Apartado 11.9.4). Respuesta: El mecanismo de proteccin de acceso se puede emplear para implementar bloqueos a nivel de pgina. Considrense primero las lecturas. Se permite a un proceso leer una pgina slo despus de que bloquee la lectura de la pgina. Esto se implementa por medio de mprotect, para desactivar inicialmente los permisos de lectura a todas las pginas, para el proceso. Cuando el proceso intenta acceder a una direccin en una pgina, tiene lugar una violacin de la proteccin. El gestor asociado con la violacin de la proteccin solicita, entonces, un bloqueo de lectura sobre la pgina y, despus de que se adquiere el bloqueo, se hace uso de mprotect para permitir que el proceso acceda a leer la pgina y, finalmente, permitir que contine. El acceso a la escritura se maneja de forma similar. 16.13 Considrese una base de datos que tiene la operacin atmica incrementar, adems de las operaciones leer y escribir. Sea V el valor del elemento de datos X. La operacin incrementar (X) en C asigna el valor de X a V + C en un paso atmico. El valor de X no est disponible para la transaccin hasta que no se ejecute posteriormente una operacin leer (X). La Figura 16.17 muestra una matriz de compatibilidad de bloqueos para tres tipos de bloqueo: modo compartido, exclusivo y de incremento.

C X I Figura 16.17.

C cierto falso falso

X falso falso falso

I falso falso cierto

Matriz de compatibilidad de bloqueos

a. Demustrese que, si todas las transacciones bloquean el dato al que acceden en el modo correspondiente, entonces el bloqueo de dos fases asegura la secuencialidad. b. Demustrese que la inclusin del bloqueo en modo incrementar permite una mayor concurrencia. (Sugerencia: Considrense 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 ordenacin por marcas temporales, marca_temporal(Q) indica la mayor marca temporal de todas las transacciones que hayan ejecutado escribir(Q) con xito. Supngase que, en lugar de ello, marca_temporal-E(Q) se define como la marca temporal de la transaccin ms reciente que haya ejecutado escribir(Q) con xito. Hay alguna diferencia al cambiar esta definicin? Raznese la respuesta. Respuesta: No habra ninguna diferencia. El protocolo de escritura es tal que la ltima transaccin para escribir un elemento es, tambin, la que se ha hecho con mayor marca temporal. 16.15 Cuando se retrocede una transaccin en el protocolo de ordenacin por marcas temporales, se le asigna una nueva marca temporal. Por qu no puede conservar simplemente su antigua marca temporal? Respuesta: Una transaccin es retrocedida porque una transaccin ms nueva ha ledo o escrito el dato que, se supone, iba a escribir. Si la transaccin retrocedida se reintrodujera con igual marca temporal, la misma razn para el retroceso sera todava vlida y la transaccin habra de retrocederse de nuevo. Esto continuara indefinidamente. 16.16 En el protocolo de granularidad mltiple, qu diferencia hay entre bloqueo implcito y explcito?

Respuesta: Cuando una transaccin bloquea explcitamente un nodo en modo exclusivo o compartido, bloquea implcitamente, en el mismo modo, a todos los descendientes de ese nodo. La transaccin no tiene necesidad de bloquear explcitamente los nodos descendientes. No hay diferencia en las funcionalidades de estos 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 mltiple, no se usa un modo exclusivo e intencional-compartido (ICX). Por qu no es til? Respuesta: Un bloqueo exclusivo es incompatible con cualquier otro tipo de bloqueo. Una vez que se bloquea un nodo en modo exclusivo, ninguno de los descendientes puede ser accedido simultneamente, en ningn modo, por cualquier otra transaccin Por lo tanto, no tiene sentido una declaracin exclusiva e intencional-compartida. 16.18 La utilizacin de un bloqueo de granularidad mltiple puede necesitar ms o menos bloqueos que un sistema equivalente con una granularidad simple de bloqueo. Aprtense ejemplos de ambas situaciones y comprese el aumento relativo de la concurrencia que se permite. Respuesta: Si una transaccin necesita acceder a un gran conjunto de elementos, el bloqueo de granularidad

mltiple requiere menos bloqueos mientras que, si slo un elemento necesita ser accedido, el sistema de bloqueo de granularidad simple permite esto con slo un bloqueo. Debido a que todos los elementos de los datos deseados estn bloqueados y desbloqueados juntos en el esquema de granularidad mltiple, el coste del bloqueo es bajo pero la concurrencia se reduce. 16.19 Considrese el esquema de control de concurrencia basado en la validacin del Apartado 16.3. Demustrese que si se elige Validacin (Ti), en lugar de Inicio(Ti), como marca temporal de la transaccin Ti, se puede esperar un mejor tiempo de respuesta, con tal que la tasa de conflictos entre las transacciones sea realmente baja. Respuesta: En el esquema de control de concurrencia del Apartado 16.3, elegir Inicio(Ti) como la marca temporal de Ti aporta un subconjunto de planificaciones permitido, eligiendo Validacin (Ti) como la marca temporal. Emplear Inicio(Ti) significa que quienquiera que haya empezado primero, debe terminar primero. Las transacciones claramente podran iniciar la fase de validacin en el mismo orden en que comienzan a ejecutarse, pero esto es demasiado restrictivo. Dado que elegir Validacin(Ti) causa menos transacciones no conflictivas al reiniciar, aporta el mejor tiempo de respuesta. 16.20 Demustrese que hay planificaciones que son posibles con el protocolo de bloqueo de dos fases, pero que no lo son con el protocolo de marcas temporales y viceversa. Respuesta: Una planificacin que se permite en el protocolo de bloqueo de dos fases, pero no en el de marcas temporales es: Paso 1 2 3 4 5 6 7 8 9 T0 bloquear-S(A) leer(A) T1 bloquear-X(B) escribir(B) desbloquear(B) bloquear-S(B) leer(B) desbloquear(A) desbloquear(B) T1 g T0 observaciones precedentes

Esta planificacin no est permitida en el protocolo de marcas temporales porque en el paso 7 la marca temporal W de B es 1. Una planificacin que se permite en el protocolo de marcas temporales, pero no en el de bloqueo de dos fases es: Paso 1 2 3 4 5 T0 escribir(A) escribir(B) escribir(B) T1 escribir(A) escribir(A) T2

Esta planificacin no puede tener instrucciones bloqueadas aadidas para hacerla legal bajo el protocolo de bloqueo de dos fases, porque T1 debe desbloquear (A) entre los pasos 2 y 3, y debe bloquear (B) entre los pasos 4 y 5.

16.21 Para cada una de los protocolos siguientes, descrbanse los aspectos de aplicacin prctica que sugieran emplear el protocolo y los que sugieran no usarlo: Bloqueo de dos fases Bloqueo de dos fases con granularidad mltiple Protocolo de rbol Ordenacin por marcas temporales Validacin Ordenacin por marcas temporales multi versin Bloqueo de dos fases multi versin Respuesta: Bloqueo de dos fases: Se emplea en aplicaciones sencillas donde es aceptable una granularidad simple. Si hay transacciones grandes de slo lectura, los protocolos multi versin lo haran mejor. Tambin, si se deben evitar interbloqueos a toda costa, sera preferible el protocolo de rbol. Bloqueo de dos fases con granularidad mltiple: Se emplean en aplicaciones mixtas, donde algunas aplicaciones acceden a registros individuales y otras acceden a relaciones enteras o a partes importantes de ellas. Los inconvenientes del anterior bloqueo de dos fases tambin aplican a este protocolo. Protocolo de rbol: Utilcese si todas las aplicaciones tienden a acceder a elementos de datos en un orden coherente con un orden parcial particular. Este protocolo est libre de interbloqueos pero, a menudo, las transacciones tendrn que bloquear nodos no deseados para acceder a los nodos deseados. Ordenacin por marcas temporales: Se emplea si la aplicacin demanda una ejecucin concurrente que sea equivalente a una ordenacin secuencial particular (por ejemplo, el orden de llegada), en vez de cualquier ordenacin secuencial. Aunque los conflictos se gestionen mediante el retroceso de transacciones en vez de esperas y planificaciones, no son recuperables. Para hacerlos recuperables se han de tolerar costes adicionales e incrementos en los tiempos de respuesta. No es adecuado si hay grandes transacciones de slo lectura, dado que morirn de inanicin. No hay interbloqueos. Validacin: Si es baja la probabilidad de que entren en conflicto dos transacciones que se ejecutan concurrentemente, el protocolo se puede emplear ventajosamente para mejorar la concurrencia y los tiempos de respuesta, con costes bajos. No es adecuado con tasas de conflictos elevadas, cuando se va a hacer mucho trabajo intil. Ordenacin por marcas temporales multi versin: Se emplea si la ordenacin por marcas temporales es apropiada, pero es deseable para solicitudes de lectura que nunca esperan. Comparte la otras desventajas del protocolo de ordenacin por marcas temporales. Bloqueo de dos fases multi versin: Este protocolo permite comprometer siempre transacciones de slo lectura sin espera. Las transacciones de actualizacin siguen el bloqueo de dos fases, de este modo permiten la recuperacin de planificaciones con conflictos solucionadas mediante la espera, en vez de el retroceso. Pero vuelve el problema de los interbloqueos, aunque las transacciones de slo lectura no pueden implicarse en ellos. Aunque el manteniendo de versiones mltiples incrementa los costes de espacio y tiempo, el bloqueo sencillo de dos fases pude ser preferible en situaciones poco conflictivas. 16.22 En una versin modificada del protocolo de marcas temporales se necesita comprobar un bit de compromiso para saber si una peticin de lectura debe esperar, o no. Explquese como puede evitar el bit de compromiso que aborten en cascada. Por qu no se necesita hacer esta comprobacin con las peticiones de escritura? Respuesta: Empleando el bit de compromiso, se hace una peticin de lectura para esperar si la transaccin que escribi el elemento del dato no se ha comprometido an. Por lo tanto, si la transaccin de escritura falla antes del compromiso, se puede abortar slo esa transaccin. La lectura en espera acceder a la versin

anterior, en caso de un sistema multi versin, o al valor almacenado del elemento de datos despus del aborto, en el caso de un sistema de versin simple. Para las escrituras, la comprobacin de este bit de compromiso es innecesaria. Esto es as porque, o bien la escritura es ciega y por lo tanto independiente del valor antiguo del elemento del dato, o haba una lectura anterior, en cuyo caso la prueba ya se haba aplicado. 16.23 Explquese por qu la siguiente tcnica de ejecucin de transacciones puede proporcionar mayor rendimiento que la utilizacin del bloqueo estricto de dos fases: Primero se ejecuta la transaccin sin adquirir ningn bloqueo y sin realizar ninguna escritura a la base de datos, como en las tcnicas basadas en la validacin, pero, a diferencia de ellas, no se realiza otra validacin o escritura en la base de datos. En cambio, se vuelve a ejecutar la transaccin utilizando bloqueo estricto de dos fases. (Sugerencia: Considrense esperas para 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 en transacciones interactivas) y si hay conflictos importantes resultando una alta probabilidad de interbloqueo. 16.25 Si se evitan los interbloqueos, sigue siendo posible que haya inanicin? Raznese la respuesta.

Respuesta: Una transaccin puede convertirse en la vctima de retrocesos de prevencin de interbloqueos, arbitrariamente en muchas ocasiones, creando as una situacin potencial de inanicin. 16.26 Supngase el protocolo de ordenacin por marcas temporales y dos transacciones, una que escribe dos elementos de datos p y q y otra que lee los mismos dos elementos de datos. Obtngase una planificacin por medio de la cual la comprobacin por marcas temporales para una operacin escribir falle y provoque el reinicio de la primera transaccin, provocando a su vez una cancelacin en cascada de la otra transaccin. Mustrese cmo esto podra acabar en inanicin de las dos transacciones. (Tal situacin, donde dos o ms procesos realizan acciones, pero no se puede completar la tarea porque se interacciona con otros procesos, se denomina interbloqueo). Respuesta: PENDIENTE DE RESOLVER 16.27 Explquese el fenmeno fantasma. Por qu produce este fenmeno una ejecucin concurrente incorrecta, a pesar de utilizar el protocolo de bloqueo de dos fases? Respuesta: El fenmeno fantasma surge cuando, debido a una insercin o borrado, dos transacciones entran en conflicto lgico a pesar de no bloquearse ninguno de los elementos de los datos en comn. El caso de la insercin se describe en el libro. El borrado tambin puede conducir a este fenmeno. Supngase que Ti borra una tupla de una relacin mientras Tj rastrea la relacin. Si Ti borra la tupla y despus Tj lee la relacin, Ti debera secuencializarse antes que Tj . An no hay ninguna tupla sobre la que Ti y Tj estn en conflicto. Una interpretacin del bloqueo de dos fases, como simplemente el bloqueo de las tuplas accedidas en una relacin, es incorrecta. Hay tambin un ndice o un dato de relacin que tiene informacin sobre las tuplas en la relacin. Esta informacin es leda por cualquier transaccin que rastrea la relacin y modificada por transacciones que actualizan, insertan o borran en o desde relacin. Por lo tanto, el bloqueo tambin debe realizarse sobre el ndice o el dato de relacin, evitando el fenmeno fantasma.

16.28

Disese un protocolo basado en marcas temporales que evite el fenmeno fantasma.

Respuesta: En el texto se han considerado dos mtodos para afrontar el fenmeno fantasma por medio de bloqueos. El mtodo de granularidad gruesa, obviamente, funciona tambin para las marcas temporales. El mtodo 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 los accesos de lectura empleen un ndice. Ahora se demostrar que este mtodo sencillo funciona. Supngase una transaccin Ti que quiere acceder a todas las tuplas con un determinado rango de valores de claves de bsqueda, 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 ningn borrado o insercin de una tupla, con un valor clave en el mismo rango, para escribir uno de los cajones de ndices ledos por Ti. As, el conflicto lgico se convierte en un conflicto sobre un cajn de ndices y se evita el fenmeno fantasma. 16.29 Explquese la razn por la que se emplea la consistencia de grado dos. Qu desventajas tiene esta tcnica? Respuesta: PENDIENTE DE RESOLVER 16.30 Supngase que se emplea el protocolo de rbol del Apartado 16.1.5 para administrar el acceso concurrente a un rbol B+. Puesto que puede haber una divisin en una insercin que afecte a la raz, se deduce que una operacin insercin no puede liberar ningn bloqueo hasta que se complete la operacin entera. 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 del protocolo de granularidad mltiple del Apartado 16.4 y del protocolo de concurrencia de rbol B+ del Apartado 16.9. Ahora se presenta una estrategia para liberar bloqueos pronto. Bajando el rbol desde la raz, si el hijo del nodo visitado actualmente no est lleno, se liberan los bloqueos mantenidos sobre todos los nodos excepto el nodo actual, se solicita un bloqueo X sobre el nodo hijo, despus de liberar el bloqueo sobre el nodo actual y, entonces ,se desciende al hijo. Por otra parte, si el hijo est lleno, se retienen todos los bloqueos mantenidos, se solicita un bloqueo X sobre el hijo y se desciende a l despus de bloquearlo. Al alcanzar el nodo hoja se inicia el procedimiento de insercin. Esta estrategia resulta en mantener los bloqueos slo sobre los nodos del rbol de ndice lleno, desde la hoja hacia arriba e incluyendo el primer nodo no lleno. Es posible una optimizacin a la estrategia anterior. Incluso si el hijo del nodo actual est lleno, se pueden todava liberar los bloqueos sobre todos los nodos, excepto el actual. Pero despus de obtener el bloqueo X sobre el nodo hijo, se divide inmediatamente. Liberando el bloqueo sobre el nodo actual y manteniendo slo el bloqueo sobre el hijo dividido apropiado, se desciende sobre l convirtindolo en el nodo actual. Con esta optimizacin, en cualquier momento se mantienen como mximo dos bloqueos, de un nodo padre y un nodo hijo. 16.31 Aprtense ejemplos de planificaciones para mostrar que si cualquier bsqueda, insercin o borrado no bloquea el siguiente valor clave, el fenmeno fantasma podra ser indetectable. Respuesta: PENDIENTE DE RESOLVER

CAPITULO

17

SISTEMAS DE RECUPERACIN
Este captulo cubre modelos de fallos y una variedad de tcnicas de recuperacin de errores. La recuperacin en un sistema de base de datos real que soporta transacciones concurrentes es bastante complicada. Para ayudar al estudiante a comprender mejor los conceptos, el captulo presenta modelos de recuperacin en creciente grado de complejidad. El captulo comienza con un modelo sencillo de recuperacin, sin tener en cuenta el concepto de concurrencia. Posteriormente, se ampla el modelo para gestionar transacciones concurrentes con bloqueos estrictos de dos fases. Hacia el final del captulo, se presenta un algoritmo de recuperacin avanzada que soporta la liberacin temprana de algunos tipos de bloqueo para mejorar la concurrencia, por ejemplo en estructuras de ndices. Finalmente, se esbozan las variantes del algoritmo ARIES, ampliamente usado en la prctica. ARIES incluye las caractersticas de los algoritmos de recuperacin avanzada, junto con diversas optimizaciones que incrementan la velocidad de recuperacin. Se recomienda que, al menos, se traten los apartados hasta, e incluyendo, la Recuperacin Basada en el Registro Histrico (Apartado 17.4). La paginacin en la sombra (Apartado 17.5) no se usa mucho, pero es til por razones pedaggicas, para mostrar que existen alternativas a la recuperacin basada en el registro histrico. La recuperacin con transacciones concurrentes (Apartado 17.6) es una seccin interesante y debera ser tratada junto con la Gestin de la Memoria Intermedia (Apartado 17.7), si es posible. El Apartado 17.9, que cubre el algoritmo de recuperacin avanzada y ARIES, debera omitirse de todos los cursos, salvo los avanzados. Sin embargo puede emplearse como material de trabajo individual para los estudiantes bien preparados, incluso en un curso de introduccin. Hay algunos puntos a tener en cuenta: Al leer el Apartado 17.2.2 (Implementacin del almacenamiento estable), se debera retomar la discusin del apartado 11.2.1, de que la escritura sobre un bloque de disco parcial puede detectarse con una alta probabilidad empleando sumas de chequeo. En el apartado 17.4.3, aunque el modelo asumido es uno donde las transacciones se ejecutan secuencialmente, el procedimiento de recuperacin establece que para todas las transacciones Tk en T que no tienen ningn <Tk comprometida> registrado en el registro histrico, ejectese deshacer(Tk). Ms de una de tales transacciones puede existir, debido a fallos en las transacciones sucesivas. Cambios a la tercera edicin: Los principales cambios son (a) ahora se incluye el algoritmo de recuperacin ARIES (Apartado 17.9.6), y (b) el apartado sobre sistemas de copia de seguridad remotos (Apartado 17.10) se ha trasladado a este captulo desde su posicin inicial en el Captulo 20. El ltimo cambio est motivado por la necesidad creciente de la alta disponibilidad, la cual se reflejar en un amplio incremento del empleo de sistemas de copia de seguridad remotos. La aportacin de alta disponibilidad tambin puede considerarse una trabajo de los sistemas de recuperacin, dado que los mismos registros histricos pueden emplearse para ambas tareas.

Ejercicios
17.1 Explquese la diferencia entre los tres tipos de almacenamiento voltil, no voltil y estable- en trminos de coste. Respuesta: El almacenamiento voltil es el que falla cuando hay una cada en el suministro elctrico. La memoria cach, la memoria principal y los registros, son ejemplos de almacenamiento voltil. El almacenamiento no voltil es aquel que retiene su contenido, a pesar de fallos en el suministro elctrico. Un ejemplo es el disco magntico. El almacenamiento estable es aqul que tericamente sobrevive a cualquier tipo de fallo (salvo un completo desastre!. Este tipo de almacenamiento slo puede conseguirse mediante la replicacin de los datos. En trminos de coste de E/S, la memoria voltil es la ms rpida y el almacenamiento no voltil es generalmente varias veces ms lento. El almacenamiento estable es mas lento que el no voltil, debido al coste que supone replicar los datos. 17.2 a. b. No se puede implementar el almacenamiento estable. Explquese por qu no. Explquese como tratan este problema los sistemas de bases de datos.

Respuesta: a. El almacenamiento estable no puede implementarse realmente, porque todos los dispositivos de almacenamiento estn compuestos de hardware y todo el hardware es vulnerable a fallos en los dispositivos mecnicos o elctricos. b. Los sistemas de bases de datos se aproximan al almacenamiento estable, grabando los datos simultneamente en varios dispositivos de almacenamiento. Aun cuando uno de los dispositivos caiga, los datos estarn disponible en un dispositivo diferente. As, la prdida de datos se convierte en algo extremadamente improbable. 17.3 Comprense, en trminos de facilidad de implementacin y sobrecarga, las versiones de modificacin inmediata y modificacin diferida, de las tcnicas de recuperacin basadas en registro histrico. Respuesta: La tcnica de recuperacin que emplea un registro histrico con modificaciones diferidas, tiene las siguientes ventajas sobre la que emplea modificaciones inmediatas: a. La tcnica es ms fcil y sencilla de implementar, dado que se necesitan menos operaciones y rutinas, es decir, no hay DESHACER. b. La tcnica requiere menos sobrecarga, dado que no es necesario hacer operaciones extras de E/S hasta el momento del compromiso (los registros del registro histrico se pueden almacenar en memoria todo el tiempo). c. Dado que los valores antiguos de los datos no han de estar presentes en los registros del registro histrico, esta tcnica requiere menos espacio de almacenamiento. Los inconvenientes de la tcnica de modificacin diferida son: a. Cuando se necesita acceder a un elemento de datos, la transaccin ya no puede leer directamente la pgina correcta desde la memoria intermedia de la base de datos porque una escritura previa, hecha por la misma transaccin sobre el mismo elemento de datos, puede no haberse propagado an a la base de datos. Podra haber actualizado una copia del elemento de datos y haber diferido la modificacin en curso de la base de datos. Por lo tanto, encontrar la versin correcta de un elemento de datos resulta ms caro. b. Esta tcnica permite menos concurrencia que la de recuperacin con actualizaciones inmediatas.

Esto es as porque los bloqueos de las escrituras se conservan por las transacciones, hasta el momento del compromiso. c. Para una transaccin de larga duracin con numerosas actualizaciones, el espacio de memoria ocupado por los registros del registro histrico y las copias locales de elementos de datos, puede llegar a ser demasiado alto. 17.4 Supngase que un sistema emplea modificacin inmediata. Demustrese, con un ejemplo, como podra darse un estado inconsistente en la base de datos, si no se escriben en almacenamiento estable los registros del registro histrico de una transaccin, antes de que el dato actualizado por la transaccin se escriba a disco. Respuesta: Considrese el esquema de una banco y una transaccin que transfiere 50 desde una cuenta A a una cuenta B. La transaccin tiene los siguientes pasos: a. leer(A,a1) b a1 := a1 - 50 c. escribir(A,a1) d. leer(B,b1) e. b1 := b1 + 50 f. escribir(B,b1) Supngase que el sistema se cae despus que la transaccin se compromete, pero antes de que sus registros del registro histrico sean desviados al almacenamiento estable. Asmase tambin que, en el momento de la cada, realmente slo se haba propagado al disco el tercer paso de la actualizacin de A, mientras que la pgina de la memoria intermedia conteniendo B no se haba grabado todava sobre disco. Cuando ese levanta el sistema est en un estado inconsistente y no es posible la recuperacin porque no hay, en el almacenamiento estable, registros del registro histrico que se correspondan a esta transaccin. 17.5 Explquese el propsito del mecanismo de los puntos de revisin. Con qu frecuencia deberan realizarse los puntos de revisin? Explquese cmo afecta la frecuencia de los puntos de revisin: Al rendimiento del sistema cuando no ocurre ningn fallo Al tiempo que tarda en recuperarse de una cada del sistema Al tiempo que tarda en recuperarse de una cada del disco Respuesta: El punto de revisin se hace con la tcnica de recuperacin basada en el registro histrico, para reducir el tiempo necesario para la recuperacin despus de una cada. Si no hay punto de revisin debe recorrerse todo el registro histrico despus de una cada y, a partir de l, deshacer/rehacer todas las transacciones. Si se ha realizado un punto de revisin, la mayor parte de los registros del registro histrico anteriores al punto de revisin se pueden ignorar en el momento de la recuperacin. Otra razn para realizar puntos de revisin es eliminar los registros del registro histrico del almacenamiento estable cuando se llena. Dado que los puntos de revisin causan algo de prdida en el rendimiento mientras estn teniendo lugar, debera reducirse su frecuencia si no es crtica una recuperacin rpida. Si es necesaria una recuperacin rpida, se debera incrementar la frecuencia de los puntos de revisin. La frecuencia de los puntos de revisin es inevitable si es pequea la cantidad de almacenamiento estable disponible. Los puntos de revisin no tienen efecto sobre la recuperacin desde una cada del disco; los volcados de archivo son equivalentes a los puntos de revisin para la recuperacin desde cadas de disco. 17.6 Cuando el sistema se recupera de una cada (vase el Apartado 17.6.4), construye una lista-deshacer y una lista-rehacer. Explquese por qu deben procesarse en orden inverso los registros del registro histrico de transacciones que se encuentran en la lista-deshacer, mientras que los registros del registro histrico correspondientes a las transacciones de la lista-rehacer se procesan hacia delante.

Respuesta: La primera fase de la recuperacin 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 tenan antes de que se iniciara la primera de las transacciones fallidas. Si varias de las transacciones fallidas hubieran modificado el mismo elemento de datos, el procesamiento hacia delante de los registros del registro histrico para las transacciones de la lista deshacer, hara que el elemento de datos tomara el valor que tena antes de que se iniciara la ltima transaccin fallida que modific ese elemento de datos. Esto es claramente errneo y se puede ver que el proceso inverso aporta el resultado deseado. La segunda fase de la recuperacin es rehacer los cambios hechos por las transacciones comprometidas, para que todos los elementos de datos que han sido modificados por ellas sean restaurados a los valores que tenan despus de que terminara la ltima de las transacciones comprometidas. Se puede ver que slo procesando hacia delante los registros del registro histrico que pertenecen a las transacciones de la lista rehacer, se puede garantizar esto. 17.7 Comprense, en trminos de facilidad de implantacin y sobrecarga, el esquema de recuperacin con paginacin en la sombra con los esquemas de recuperacin basados en el registro histrico. Respuesta: La tcnica de paginacin en la sombra es fcil de implementar para sistemas transaccionales sencillos, pero difcil para sistemas transaccionales mltiples. En particular, es muy duro permitir mltiples actualizaciones concurrentes sobre la misma pgina. La paginacin en la sombra podra sufrir una sobrecarga de espacio extra, pero la recogida de basura puede ocuparse de eso. La sobrecarga de E/S para la paginacin en la sombra es generalmente ms alta que la de las tcnicas basadas en el registro histrico, dado que las tcnicas basadas en la sombra necesitan grabar un registro por actualizacin sobre el registro histrico, mientras que la tcnica de paginacin en la sombra necesita grabar un bloque por cada bloque actualizado. 17.8 Considrese una base de datos compuesta por 10 bloques consecutivos en el disco (bloque 1, bloque 2, . . ., bloque 10). Mustrese el estado de la memoria intermedia y una posible ordenacin fsica de los bloques despus de las siguientes modificaciones, suponiendo que se utiliza paginacin en la sombra, que la memoria intermedia en memoria principal slo puede contener tres bloques y que se emplea la estrategia menos recientemente utilizada para gestionar la memoria intermedia. leer bloque 3 leer bloque 7 leer bloque 5 leer bloque 3 leer bloque 1 modificar bloque 1 leer bloque 10 modificar bloque 5 Respuesta: La ordenacin inicial de los bloques del disco es: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Supngase que los dos bloques siguientes al bloque 10, sobre el disco, son los dos primeros bloques en la lista de bloques libres. a. Los tres primeros pasos leer dan como resultado los bloques 3, 7 y 5, siendo colocados en la memoria 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 ha empleado 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 bloques libres y la entrada 1 en la tabla de pginas actual se hace que apunte a l. Se modifica el bloque 1 en la memoria intermedia. Cuando bloques sucios se vuelven a desviar al disco en el momento de comprometer la transaccin, se deberan grabar sobre el disco los bloques que apuntaban a la tabla de pginas actual modificada.

e. El sptimo 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, despus, el bloque 5 se modifica como en el sexto paso. Por lo tanto, la ordenacin final de los bloques en el disco es: 2, 3, 4, 6, 7, 8, 9, 10, 1, 5. El conjunto de bloques en la memoria intermedia es: 5 (modificado), 10, 1 (modificado). Estos deben ser desviados a los respectivos bloques del disco apuntados por la tabla de pginas actual, antes que la transaccin lleve a cabo el proceso de comprometer. 17.9 Explquese cmo el gestor de la memoria intermedia puede conducir a la base de datos a un estado inconsistente, si algunos registros del registro histrico pertenecientes a un bloque no se escriben en almacenamiento estable, antes de escribir en el disco el citado bloque. Respuesta: Si un elemento de datos x se modifica sobre el disco mediante una transaccin, antes de que el correspondiente registro del registro histrico sea grabado sobre almacenamiento estable, el nico registro del valor antiguo de x est en la memoria principal, donde podra perderse en caso de una cada. Si la transaccin no hubiera finalizado an, en el momento de la cada, resultara una inconsistencia irrecuperable. 17.10 Explquense las ventajas del registro histrico lgico. Proporcinense ejemplos de una situacin en la que sea preferible el registro histrico lgico, frente al registro histrico fsico y de una situacin en la que sea preferible el registro histrico fsico al registro histrico lgico. Respuesta: El registro histrico lgico tiene menos requerimientos de espacio y, con el registro de deshacer lgico, permite liberar antes los bloqueos. Esto es conveniente en situaciones como el control de concurrencia para estructuras de ndices, donde se requiere un muy alto grado de concurrencia. Una ventaja de emplear el registro de rehacer fsico es que son posibles los puntos de revisin difusos. As, en un sistema que necesita realizar frecuentes puntos de revisin, esto reduce la sobrecarga. 17.11 Explquense las razones por las que la recuperacin en transacciones interactivas es ms difcil de tratar que la recuperacin en transacciones por lotes. Existe una forma simple de tratar esta dificultad? (Sugerencia: Considrese una transaccin de cajero automtico en la que se retira dinero). Respuesta: Las transacciones interactivas son ms difciles de recuperar que las transacciones por lotes, debido a que algunas acciones pueden ser irrevocables. Por ejemplo, una instruccin de salida (escritura) puede haber encendido un misil o causado que una mquina de un banco de dinero a un cliente. La mejor manera de gestionar esto es intentar ejecutar todas las instrucciones al final de la transaccin. As, si la transaccin aborta a la mitad, no se habr hecho ningn dao. 17.12 A veces hay que deshacer una transaccin despus de que se haya comprometido porque se ha ejecutado errneamente, debido por ejemplo a la introduccin incorrecta de datos de un cajero. a. Se da un ejemplo para demostrar que el uso de un mecanismo normal para deshacer esta transaccin podra conducir a un estado inconsistente. b. Una forma de manejar esta situacin es llevar la base de datos a un estado anterior al compromiso de la transaccin errnea (denominado recuperacin a un instante). En este esquema, se deshacen los efectos de las transacciones comprometidas despus. Sugirase una modificacin del mecanismo de recuperacin avanzada para implementar la recuperacin a un instante. c. Las transacciones correctas se pueden volver a ejecutar lgicamente, pero no se pueden reejecutar usando sus registros del registro histrico. Por qu?

Respuesta: Considrese una cuenta bancaria A con un saldo de 100. Sean dos transacciones T1 y T2, cada una depositando 10 en la cuenta. As, el saldo sera de 20 despus que ambas transacciones se ejecutaran. Supongamos que las transacciones se ejecutan secuencialmente: T1 primero y despus T2 . Los registros del registro histrico, correspondientes a las actualizaciones de A por las transacciones T1 y T2, seran < T1,A, 100, 110 > y < T2,A, 110, 120 > respectivamente. Supngase que se desea deshacer la transaccin T1. El mecanismo normal para deshacer la transaccin reemplazar el valor en cuestin A en este ejemplo por el campo del antiguo valor en el registro del registro histrico. De este modo, si se deshace la transaccin T1 empleando el mecanismo normal para deshacer transacciones, el saldo resultante sera 100 y se habran, en efecto, deshecho las dos transacciones, mientras se intentaba deshacer slo la transaccin T1. ... PENDIENTE. Considrese de nuevo un ejemplo a partir del primer elemento. Supngase que ambas transacciones se deshacen y el saldo retorna al valor original de 100. Ahora se desea rehacer la transaccin T2. Si se rehace el registro del registro histrico < T2,A, 110, 120 > correspondiente a la transaccin T2, el saldo se convertira en 120 y se habran, en efecto, rehecho las dos transacciones, mientras que se intentaba rehacer slo la transaccin T2. 17.13 En los lenguajes de programacin persistentes no se realiza explcitamente el registro histrico de las modificaciones. Descrbase como pueden usarse las protecciones de acceso a las pginas que proporcionan los sistemas operativos modernos, para crear imgenes anteriores y posteriores de las pginas que son modificadas. (Sugerencia: Vase el Ejercicio 16.12) Respuesta: Esto se implementa por medio de mprotect, para desactivar inicialmente los accesos a todas las pginas, para el proceso. Cuando el proceso intenta acceder a una direccin en una pgina, tiene lugar una violacin de la proteccin. El gestor asociado con la violacin de la proteccin solicita, entonces, un bloqueo de escritura sobre la pgina y, despus que se adquiere el bloqueo, escribe el contenido inicial ( imagen anterior ) de la pgina sobre el registro histrico. Emplea entonces mprotect para permitir el acceso de escritura a la pgina por el proceso y, finalmente, permitir que contine el proceso. Cuando la transaccin est lista para el compromiso, y antes de que libere el bloqueo sobre la pgina, escribe el contenido de la pgina (imagen posterior) sobre el registro histrico. Estas imgenes anterior y posterior se pueden emplear en la recuperacin despus de una cada. Esta tcnica se puede optimizar para no escribir la pgina entera sobre el registro histrico para el registro deshacer, con tal que el programa clave la pgina en memoria. 17.14 ARIES asume que hay espacio en cada pgina para un NSR. Al manejar objetos grandes que abarcan varias pginas, tales como archivos del sistema operativo, un objeto puede usar una pgina completa, sin dejar espacio para el NSR. Sugirase una tcnica para manejar esta situacin; esta tcnica debe soportar operaciones rehacer fsicas, pero no es necesario que soporte operaciones rehacer fisiolgicas. Respuesta: PENDIENTE. Array independiente. 17.15 Explquese la diferencia entre una cada del sistema y un desastre.

Respuesta: En una cada del sistema la CPU se viene abajo y el disco tambin se puede caer. Pero se supone que el almacenamiento estable del sitio supera las cadas del sistema. En un desastre, todo en el sitio queda destruido. Es necesario distribuir el almacenamiento estable para superar los desastres.

17.16 Para cada uno de los siguientes requisitos, identifquese la mejor opcin del grado de durabilidad en un sistema remoto de copia de seguridad: a. Prdida de datos que se debe evitar pero se puede tolerar alguna prdida de disponibilidad. b. El compromiso de transacciones se debe realizar rpidamente, perdiendo algunas transacciones comprometidas en caso de desastre. c. Se requiere un alto grado de disponibilidad y durabilidad, pero es aceptable un mayor tiempo de ejecucin para el protocolo de compromiso de transacciones. Respuesta: a. Dos muy seguro es adecuado aqu porque garantiza la durabilidad de las actualizaciones mediante transacciones comprometidas, aunque slo pueda llevarse a cabo si el sitio principal y el de copia de seguridad estn en funcionamiento. La disponibilidad es baja, pero se ha mencionado que esto es aceptable. b. El compromiso de uno seguro es tan rpido que no ha de esperar a que el registro histrico alcance el sitio de la copia de seguridad. Dado que la prdida de datos se puede tolerar, es la mejor opcin. c. Con el compromiso de dos seguro, la probabilidad de prdida de datos es muy baja y tambin compromete que se puede llevar a cabo mientras que, al menos, el sitio principal est operativo. De este modo, la disponibilidad es alta. Los compromisos llevan ms tiempo que en el protocolo uno seguro, pero eso ha sido mencionado como aceptable.

CAPITULO

18

ARQUITECTURAS DE SISTEMAS DE BASES DE DATOS


Este captulo es adecuado para un curso de introduccin. Se recomienda cubrirlo al menos como material de trabajo individual, dado que los estudiantes son bastante susceptibles para el empleo de arquitecturas de bases de datos no centralizadas (particularmente cliente-servidor), cuando acceden al mundo real. La materia de este captulo podra ser potencialmente sustituida por el protocolo de compromiso de dos fases (C2F), (apartado 19.4.1 del captulo 19) para proporcionar a los estudiantes una visin general de los detalles ms importantes de las arquitecturas de bases de datos no centralizadas. Cambios a la tercera edicin: El tratamiento de las estructuras de los procesos de bases de datos (apartado 18.2.1) es nuevo en esta edicin. Se ha actualizado el alcance de la tecnologa de red y se han cubierto brevemente las redes de rea de almacenamiento.

Ejercicios
18.1 Por qu es relativamente fcil trasladar una base de datos desde una mquina con un nico procesador a otra con varios procesadores, si no es necesario paralelizar las consultas individuales? Respuesta: La transferencia es relativamente fcil para una mquina con varios procesadores con memoria compartida. Las bases de datos diseadas para las mquinas monoprocesador ya disponen de multitarea permitiendo que varios procesos se ejecuten a la vez en el mismo procesador, usando tiempo compartido, mientras que de cara al usuario parece que los procesos se estn ejecutando en paralelo. De esta manera, desde un punto de vista lgico, las mquinas paralelas de grano grueso parecen ser idnticas a las mquinas monoprocesador, haciendo que la transferencia sea relativamente fcil. Transferir una base de datos a un disco compartido o a una arquitectura de varios procesadores sin compartimiento, es un poco ms duro. 18.2 Las arquitecturas servidoras de transacciones son populares entre las bases de datos relacionales cliente-servidor, donde las transacciones son cortas. Por el contrario, las arquitecturas servidoras de datos son populares entre los sistemas cliente-servidor de bases de datos orientadas a objetos, donde las transacciones son relativamente largas. Dense dos razones por las que los servidores de datos puedan ser populares entre las bases 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 pequea respecto al clculo, el cual es a menudo el caso en aplicaciones de bases de datos orientadas a objetos, tales como el diseo asistido por computadora. En contraste, en las tpicas aplicaciones de bases de datos relacionales como el procesamiento de transacciones, una transaccin realiza pequeos clculos pero puede acceder a varias pginas, lo cual implicar la transferencia de una gran cantidad de datos, con poco beneficio en una arquitectura servidora de datos. Otra razn es que estructuras como los ndices son muy usadas en las bases de datos relacionales y llegan a convertirse en elementos de conflicto en una arquitectura servidora de datos, requiriendo frecuentes transferencias de datos. En las tpicas aplicaciones de hoy en da de bases de datos orientadas a objetos, tales como el diseo asistido por computadora, no hay esos puntos de conflicto frecuente. 18.3 En lugar de almacenar estructuras compartidas en memoria compartida, una arquitectura alternativa sera almacenarlas en la memoria local de un proceso especial y acceder a los datos compartidos mediante la comunicacin entre procesos con el proceso. Cules seran los inconvenientes de una arquitectura as? Respuesta: Los inconvenientes seran que, para adquirir bloqueos, se solicitaran dos mensajes entre procesos, uno para la solicitud y otro para confirmar la concesin. La comunicacin entre procesos es mucho ms costosa que los accesos a memoria, por lo que el coste de bloqueos se incrementara. El proceso de almacenar las estructuras compartidas podra tambin convertirse en un cuello de botella. El beneficio de esta alternativa es que la tabla de bloqueos est mejor protegida de actualizaciones errneas, dado que slo un proceso puede acceder a ella. 18.4 La mquina que hace de servidor en los sistemas cliente-servidor tpicos es mucho ms potente que los clientes, es decir, su procesador es ms rpido, puede tener varios procesadores, tiene ms memoria y discos de mayor capacidad. En vez de esto, considrese el caso en que los clientes y el servidor tuvieran exactamente la misma potencia. Tendra sentido construir un sistema cliente-servidor en ese caso? Por qu? Qu caso se ajustara mejor a una arquitectura servidora de datos? Respuesta: Con clientes potentes, todava cobra sentido tener un sistema cliente servidor, en vez de un sistema completamente centralizado. Si se emplea la arquitectura servidora de datos, los clientes potentes pueden descargarse todo el tiempo y trabajar procesando transacciones de cmputo intensivo del servidor,

liberndolo para que realice slo el trabajo de cumplir los requisitos de lectura-escritura; incluso si se emplea el modelo de servidor de transacciones, los clientes todava se ocupan del trabajo del interface de usuario, el cual es tpicamente de cmputo muy intensivo. Un sistema completamente distribuido podra resultar atractivo en presencia de clientes potentes, pero los sistemas cliente servidor todava tienen la ventaja de tcnicas de recuperacin y control de concurrencia ms sencillos de implementar en un solo servidor, en vez de tener estas acciones distribuidas en todas las mquinas. 18.5 Considrese un sistema de bases de datos orientadas a objetos sobre una arquitectura cliente servidor, en la que el servidor acta como servidor de datos. a. Cul es el efecto de la velocidad de interconexin entre el cliente y el servidor, en los casos de envo de pginas y de objetos? b. Si se utiliza envo de pginas, la cach de datos en el cliente puede organizarse como una cach de objetos o de pginas. La cach de pginas almacena los datos en unidades de pginas, mientras que la cach de objetos almacena los datos en unidades de objetos. Supngase que los objetos son ms pequeos que una pgina. Descrbase una ventaja de la cach de objetos frente a la de pginas. Respuesta: a. Se supone que los objetos son ms pequeos que una pgina y caben en ella. Si el enlace de interconexin es lento es mejor elegir el envo de objetos, pues en el envo de pginas se gastar mucho tiempo en enviar objetos que posiblemente nunca se necesitarn. Incluso con una interconexin rpida, las sobrecargas y latencias de las comunicaciones, no el volumen real de datos a enviar, se convierten en un cuello de botella. En este escenario sera preferible el envo de pginas. b. Dos ventajas de tener una cach de objetos en vez de una cach de pginas, incluso si se emplea el envo de pginas, son: i. Cuando un cliente se ejecuta fuera del espacio cach, puede reemplazar objetos sin reemplazar pginas enteras. La reduccin de la granularidad del almacenamiento cach podra dar como resultado un mejor ratio de aciertos cach. ii. Es posible para el servidor pedir a los clientes la devolucin de algunos de los bloqueos que almacenan, pero que no necesitan (liberacin de bloqueos). De este modo, existe la posibilidad de mayor concurrencia. Si se emplea cach de pginas, esto no es posible. 18.6 Qu es la liberacin de bloqueos y bajo qu condiciones es necesaria? Por qu no es necesario si la unidad de envo de datos es un elemento? Respuesta: En un sistema cliente servidor con envo de pginas, cuando un cliente solicita un elemento el servidor generalmente concede un bloqueo, no sobre el elemento solicitado, sino sobre la pgina que lo contiene, concediendo de este modo implcitamente bloqueos sobre todos los elementos de la pgina. Los otros elementos de la pgina se dice que estn preextrados. Si algn otro cliente posteriormente solicita uno de los elementos preextrados, el servidor puede pedir al propietario del bloqueo de la pgina que retorne el bloqueo sobre este elemento. Si el dueo del bloqueo de la pgina no necesita este elemento, desbloquea el bloqueo de la pgina que contiene al elemento, bloquea sobre todos los elementos a los que est accediendo en realidad y, despus, devuelve los bloqueos de los elementos no deseados. El servidor puede entonces conceder el ltimo bloqueo solicitado. Si la unidad de datos enviados es un elemento, no hay bloqueos de granularidad gruesa; incluso si se emplea pre extraccin, se implementa generalmente mediante la concesin de bloqueos individuales sobre cada uno de los elementos preextrados. De este modo, cuando el servidor solicita la devolucin de un bloqueo, no es necesario desbloquear, el bloqueo requerido slo 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 cuyo trabajo principal es el de procesar transacciones. Suponga que la empresa crece rpidamente cada ao y que el

sistema informtico actual se ha quedado pequeo. Cuando escoja una nueva computadora paralela, qu factor ser ms importante: la ganancia de velocidad, la ampliabilidad por lotes o la ampliabilidad de las transacciones? Por qu? Respuesta: Con el aumento del grado de las operaciones, se espera que aumente el nmero de transacciones remitidas por unidad de tiempo. Por otro lado, no sera de esperar que la mayora de la transacciones individuales crecieran ms ni que, dada una transaccin, se requiriese que se ejecutara ms rpidamente ahora de cmo lo que haca antes. Por lo tanto, la ampliabilidad de las transacciones es la medida mas relevante en este escenario. 18.8 Supngase una transaccin escrita en C con cdigo SQL incorporado, que emplea el 80% del tiempo en ejecutar el cdigo SQL y el 20% restante en el cdigo C. Qu ganancia de velocidad puede esperarse si slo se paraleliza el cdigo SQL? Justifquese la respuesta. Respuesta: Dado que la parte que no puede ser paralelizada representa el 20% del tiempo de ejecucin 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, cules son los factores que trabajan en contra de la ampliabilidad lineal?. Cul de esos factores es probablemente el ms importante en cada una de las siguientes arquitecturas: memoria compartida, disco compartido y sin compartimiento? Respuesta: El aumento de los conflictos por los recursos compartidos impide la ampliabilidad lineal con el aumento del paralelismo. En un sistema de memoria compartida, los conflictos por memoria (lo cual implica conflictos del bus) dar como resultado una cada de la escalabilidad con incremento del paralelismo. En un sistema 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 sern el principal factor de impedimento. Dado que no hay memoria compartida, la adquisicin de bloqueos y otras actividades que requieren el paso de mensajes entre procesos, tomarn ms tiempo con el incremento de paralelismo. 18.10 Considrese un banco que dispone de un conjunto de sedes, en cada una ejecutndose un sistema de base de datos. Supngase que la transferencia electrnica de dinero entre ellas es el nico modo de interaccin de las bases de datos. Pude calificarse como distribuido un sistema as? Por qu? Respuesta: En un sistema distribuido, todos los sitios generalmente ejecutan el mismo software de gestin de base de datos y comparten un esquema global. Cada sitio aporta un entorno para la ejecucin, tanto de transacciones globales iniciadas en sitios remotos, como de transacciones locales. El sistema descrito en la pregunta no tiene estas propiedades y, por lo tanto, no puede calificarse como una base de datos distribuida. 18.11 Considrese una red basada en lneas de acceso telefnico, en la que los sitios se comunican peridicamente, por ejemplo, todas las noches. Estas redes suelen tener un servidor y varios clientes. Los sitios que actan como clientes estn conectados slo con el servidor e intercambian los datos con el resto de clientes, almacenndolos en el servidor y recuperando los almacenados por otros clientes en el servidor. Cul es la ventaja de tal arquitectura frente a una en la que un sitio pueda intercambiar datos con otro mediante acceso telefnico directo? Respuesta: Con el servidor central, cada sitio no ha de recordar con qu sitio contactar, cuando se solicita un determinado elemento de datos. El servidor central slo necesita recordar esto, de tal modo que los elementos de los datos pueden moverse alrededor fcilmente, dependiendo de los sitios a los que acceden los elementos ms frecuentemente. Otras tareas de mantenimiento tambin estn centralizadas en vez de distribuidas, haciendo el sistema ms fcil de desarrollar y mantener. Naturalmente, est el inconveniente de un cierre total, en caso de que el servidor llegue a estar no disponible. Incluso si est ejecutndose, puede convertirse en

un cuello de botella porque cada peticin ha de encaminarse travs de l.

CAPITULO

19

BASES DE DATOS DISTRIBUDAS


Las bases de datos distribuidas, en general, y las bases de datos heterogneas, en particular, estn aumentando de importancia, dado que las organizaciones intentan integrar sus bases de datos a travs de fronteras fsicas y organizacionales. La interconexin de estas bases de datos para crear una base de datos distribuida o mltiple es, de hecho, crucial para la competitividad de muchas compaas. Este captulo reconsidera las cuestiones tratadas anteriormente en el texto, tales como el procesamiento de consultas y el control de concurrencias y recuperaciones, desde el punto de vista de las bases de datos distribuidas. Este es un captulo extenso y apropiado slo para un curso avanzado. Se pueden elegir temas sencillos para su inclusin en un curso de introduccin. Una buena alternativa incluye almacenamiento distribuido, heterogeneidad y compromiso de dos fases. Cambios a la tercera edicin: Este captulo ha cambiado significativamente respecto de la edicin anterior. El nfasis en la transparencia de la edicin anterior ha sido abandonado y, en su lugar, el captulo comienza considerando la diferencia entre bases de datos distribuidas heterogneas y homogneas. Se han abandonado todos los detalles del compromiso de tres fases, dado que no se usa mucho en la prctica. 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 dbiles de consistencia, la cul es ampliamente usada en la prctica, se cubre ahora en el Apartado 19.5.3. Se han eliminado los algoritmos distribuidos para la deteccin de interbloqueos, dado que son demasiado complicados y caros para ser prcticos. Se ha introducido un tratamiento detallado de la gestin de fallos, para la alta disponibilidad aportada en las bases de datos distribuidas (Apartado 19.6). Las bases de datos heterogneas se tratan ahora con mayor detalle en el Apartado 19.8, mientras que los detalles de los niveles dbiles de secuencialidad en las bases de datos mltiples se han trasladado al captulo 24. Se ha introducido en esta edicin (Apartado 19.9) el tratamiento de sistemas de directorio, con nfasis en LDAP.

Ejercicios
19.1 Disctanse 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 datos que no estn almacenados en el sitio, mientras permite a cada sitio el control sobre sus propios datos locales. Una base de datos distribuida puede ser ms segura que un sistema centralizado porque, si un sitio falla, la base de datos puede seguir funcionando pero, si el sistema centralizado falla, la base de datos no puede continuar por ms tiempo con su operacin normal. Adems, una base de datos distribuida permite la ejecucin paralela de consultas y posibilita la divisin de una consulta en varias partes, para incrementar la productividad. Un sistema centralizado en ms fcil de disear e implementar. Un sistema centralizado es ms barato de operar porque no se han de enviar mensajes. 19.2 Explquense las diferencias entre transparencia de la fragmentacin, transparencia de las rplicas y transparencia de la ubicacin. Respuesta: a. Con transparencia de la fragmentacin, el usuario del sistema no es consciente de ninguna fragmentacin que el sistema haya implementado. Un usuario puede formular consultas contra relaciones globales y el sistema realizar la transformacin necesaria para generar el resultado correcto. b. Con transparencia de las rplicas el usuario no es consciente de ninguna replicacin de datos. El sistema debe impedir operaciones inconsistentes sobre los datos. Esto requiere algoritmos de control de concurrencia ms complejos. c. Transparencia de la ubicacin significa que el usuario no es consciente de donde estn almacenados los datos. El sistema debe encaminar los datos solicitados hacia los sitios apropiados. 19.3 Indquese lo que diferencia a una base de datos distribuida diseada para una red de rea local, de otra diseada para una red de rea amplia. Respuesta: La transferencia de datos sobre una red de rea local (LAN) es mucho ms rpida sobre una red de rea ancha (WAN). As, la replicacin y la fragmentacin no aumentarn la productividad y la velocidad sobre una LAN, tanto como en una WAN. Pero incluso en una LAN, la replicacin tiene su utilidad incrementando la fiabilidad y disponibilidad. 19.4 Indquese en qu momento resulta til tener rplicas de los datos o tenerlos fragmentados. Explquese la respuesta. Respuesta: La replicacin es til cuando hay numerosas transacciones de slo lectura en diferentes sitios, esperando acceder a los mismos datos. Todas ellas se pueden ejecutar rpidamente en paralelo, accediendo a datos locales. Pero las actualizaciones se hacen difciles con la replicacin. La fragmentacin es til si las transacciones sobre diferentes sitios tienden a acceder a partes diferentes de la base de datos.

19.5 Explquense los conceptos de transparencia y de autonoma. Indquese el motivo de que estos conceptos sean deseables desde el punto de vista de los factores humanos. Respuesta: La autonoma es el grado de control que tiene un sitio concreto sobre la base de datos local. Es importante porque los usuarios del sitio quieren accesos rpidos y correctos a los elementos de datos locales. Esto es especialmente cierto cuando se consideran los datos locales a los que ms frecuentemente se acceder en una base de datos. La transparencia oculta la naturaleza distribuida de la base de datos. Esto es importante porque no se debera exigir a los usuarios conocer nada sobre la localizacin, replicacin, fragmentacin u otros aspectos de la implementacin de la base de datos. 19.6 Para crear un sistema distribuido con elevada disponibilidad hay que conocer los tipos de fallos que pueden producirse. a. Indquense los tipos de fallos posibles en los sistemas distribuidos. b. Indquense los elementos de la lista de la pregunta a, que tambin sean aplicables a un sistema centralizado. 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 tambin pueden suceder en sistemas centralizados.

19.7 Considrese un fallo que se produce durante la ejecucin de C2F para una transaccin. Para cada fallo posible de los indicados en el Ejercicio 19.6.a, explquese el modo en que C2F asegura la atomicidad de la transaccin a pesar del fallo. Respuesta: Una prueba de que C2F garantiza compromisos/abortos atmicos, a pesar de fallos en sitios y enlaces, es lo que sigue. La idea principal es que, despus que todos los sitios contesten con un mensaje <T preparada>, slo el coordinador de una transaccin puede tomar una decisin de compromiso o aborto. Cualquier compromiso o aborto posterior por un sitio, slo puede tener lugar despus que constate la decisin del coordinador, bien directamente desde el coordinador o indirectamente desde otro sitio. Supngase que se enumeran los casos para el aborto de un sitio y despus para el compromiso. a. Un sitio puede abortar una transaccin T (grabando un registro del registro histrico <T abortada>) slo bajo las siguientes circunstancias: i. No se ha grabado an un registro del registro histrico <T preparada>. En este caso el coordinador no podra tenerlo y no recibir un mensaje <T preparada> o <T comprometida> desde este sitio. Por lo tanto, slo el coordinador puede tomar una decisin de abortar. ii. Se ha grabado un registro del registro histrico <T preparada>, pero al consultar descubre que algn otro sitio tiene un registro del registro histrico <T abortada>. En este caso lo correcto es abortar, porque ese otro sitio habra constatado la decisin del coordinador (directa o indirectamente) antes de abortar. iii Es el propio coordinador. En este caso ningn sitio habra comprometido, o comprometer en el futuro, porque las decisiones de comprometer slo las puede realizar el coordinador. b. Un sitio puede comprometer una transaccin T (grabando un registro del registro histrico <T comprometida>) slo bajo las siguientes circunstancias: i. Se ha grabado un registro del registro histrico <T preparada> y al consultar descubre que algn otro sitio tiene un registro del registro histrico <T comprometida>. En este caso lo correcto es comprometer, porque ese otro sitio habra constatado la decisin del coordinador (directa o indirectamente)

antes de comprometer. ii. Es el propio coordinador. En este caso ningn otro sitio participante puede abortar o habra abortado, porque las decisiones de hacerlo slo las puede realizar el coordinador. 19.8 Considrese un sistema distribuido con dos sitios, A y B. Indquese si el sitio A puede distinguir entre: 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. Indquense las implicaciones de la respuesta para la recuperacin de los sistemas distribuidos. Respuesta: El sitio A no puede distinguir entre los tres casos hasta que se reanude la comunicacin con el sitio B. La accin que realice mientras B est inaccesible debe ser correcta, independientemente de cual de estas situaciones haya ocurrido realmente, y debe ser tal que B pueda reintegrarse consistentemente en el sistema distribuido, una vez que se restaure la comunicacin. 19.9 El esquema de mensajera persistente descrito en este captulo, depende de las marcas temporales combinadas con el desecho de los mensajes recibidos, si son demasiado antiguos. Propngase un esquema alternativo basado en los nmeros de secuencia, en lugar de las marcas temporales. Respuesta: Se puede tener un esquema basado en nmeros secuenciales, similar al basado en marcas temporales. Se marca cada mensaje con un nmero secuencial que es nico para el par (sitio emisor, sitio receptor). El nmero 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, slo si tambin ha recibido todos los mensajes de nmeros inferiores; el mensaje se almacena en la relacin mensajes-recibidos. El sitio emisor retransmite un mensaje hasta que recibe un acuse de recibo del sitio receptor, conteniendo el nmero de secuencia del mensaje transmitido, o uno superior. Una vez que se recibe el acuse de recibo, se puede borra el mensaje de la cola de su cola de envo. El sitio de recepcin elimina todos los mensajes que recibe con un nmero de secuencia inferior al del menor mensaje almacenado, desde el sitio de envo. El sitio de recepcin elimina todos los mensajes de la relacin mensajes-recibidos, excepto los de nmero ms recientes de cada sitio emisor (los mensajes slo se pueden eliminar despus de ser procesados localmente). Ntese que esta tcnica requiere una sobrecarga fija (y pequea) en el sitio receptor, por cada sitio emisor, independientemente del nmero de mensajes recibidos. En cambio, la tcnica de marcas temporales requiere un espacio extra por cada mensaje. La tcnica de marcas temporales tendra una sobrecarga de almacenamiento menor, si el nmero de mensajes recibidos dentro del intervalo de interrupcin fuera pequeo comparado con el nmero de sitios mientras que, de lo contrario, la tcnica de nmeros secuenciales tendra una sobrecarga inferior. 19.10 Se da un ejemplo en que el enfoque de leer uno, escribir todos los disponibles conduzca a un estado errneo. Respuesta: Considrese el saldo de una cuenta, replicado en N sitios. Supngase un saldo actual de 100 consistente en todos los sitios. Sean dos transacciones T1 y T2, cada una depositando 10 en la cuenta. As, el saldo sera de 120 despus que ambas transacciones se ejecutaran. Supongamos que las transacciones se ejecutan secuencialmente: T1 primero y despus T2 . Supngase que uno de los sitios, por ejemplo s, no est disponible cuando se ejecute T1 y que la transaccin T2 lea el saldo desde el sitio s. Se puede ver que el saldo en el sitio principal sera, al final, de 110. 19.11 Si se aplica una versin distribuida del protocolo de granularidad mltiple del Captulo 16 a una base

de datos distribuida, el sitio responsable del DAG puede convertirse en un cuello de botella. Supngase que se modifica ese protocolo de la manera siguiente: Slo se permiten en la raz bloqueos en modo tentativo. A todas las transacciones se les conceden, de manera automtica, todos los bloqueos en modo tentativo posibles. Mustrese 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 de granularidad mltiple. Dado que las transacciones acuerdan automticamente todos los bloques tentativos sobre el nodo raz y que no se dan otros tipos de bloqueos en l, no hay necesidad de enviar ninguna peticin de bloqueo a la raz. De este modo se libera el cuello de botella. 19.12 Explquese la diferencia entre la rplica de datos en los sistemas distribuidos y el mantenimiento de sitios remotos de respaldo. Respuesta: En los sistemas de respaldo remotos todas las transacciones se realizan en el sitio principal y los datos se replican sobre el sitio remoto de respaldo. El sitio remoto de respaldo se mantiene sincronizado con las actualizaciones sobre el sitio principal mediante el envo de todos los registros del registro histrico. Siempre que falla el sitio principal, el sitio de respaldo remoto asume los procesos. Los sistemas distribuidos ofrecen mayor disponibilidad teniendo mltiples copias de los datos en diferentes sitios, mientras que los sistemas remotos de respaldo ofrecen menor disponibilidad a un coste inferior y sobrecargas de ejecucin. En un sistema distribuido, el cdigo de la transaccin se ejecuta en todos los sitios, mientras que en un sistema remoto de respaldo slo se ejecuta en el sitio principal. La transacciones de los sistemas distribuidos siguen el compromiso de dos fases para tener los datos en estado consistente, mientras que un sistema 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 rplica perezosa pueda conducir a un estado inconsistente de la base de datos, aunque las actualizaciones obtengan un bloqueo exclusivo sobre la copia principal (maestra). Respuesta: Considrese el saldo de una cuenta, replicado en N sitios. Supngase un saldo actual de 100 consistente en todos los sitios. Sean dos transacciones T1 y T2, cada una depositando 10 en la cuenta. As, el saldo sera de 120 despus que ambas transacciones se ejecutaran. Supongamos que las transacciones se ejecutan secuencialmente: T1 primero y despus T2 . Supngase que la copia del saldo en uno de los sitios, por ejemplo s, no sea consistente debido a una estrategia de rplica perezosa con la copia principal despus de que se ejecute la transaccin T1 y que la transaccin T2 lea esta copia del saldo. Se puede ver que el saldo en el sitio principal sera, al final, de 110. 19.14 Estdiense y resmanse las facilidades que el sistema de bases de datos que se est utilizando ofrece, para tratar los estados inconsistentes que pueden alcanzarse con la propagacin perezosa de las actualizaciones. Respuesta: PENDIENTE. 19.15 Disctanse las ventajas e inconvenientes de los dos mtodos presentados en el Apartado 19.5.2, para la generacin de marcas temporales nicas globalmente. Respuesta: El enfoque centralizado tiene el problema de un posible cuello de botella en el sitio principal y el de elegir un nuevo sitio central si dejara de funcionar. El enfoque centralizado tiene el problema de que deben intercambiarse muchos mensajes para mantener el sistema justo, o un sitio puede situarse por delante de todos los otros y dominar la base de datos.

19.16 Considrese el siguiente algoritmo de deteccin de interbloqueo. Cuando la transaccin Ti, en el sitio S1, solicita un recurso a Tj, en el sitio S3, se enva un mensaje de solicitud con la marca temporal n. Se inserta el arco (Ti, Tj, n) en el grafo local de espera de S1. El arco (Ti, Tj, n) slo se inserta en el grafo local de espera de S3 , si Tj ha recibido el mensaje de solicitud y no se puede conceder de manera inmediata el recurso solicitado. La solicitud de Ti a Tj en el mismo sitio se trata de la manera habitual; no se asocia ninguna marca temporal con el arco (Ti, Tj). El coordinador central invoca el algoritmo de deteccin enviando el mensaje de inicio a cada sitio del sistema. Al recibir este mensaje, cada sitio enva al coordinador su grafo local de espera. Obsrvese que ese grafo contiene toda la informacin local que el sitio tiene sobre el estado del grafo real. El grafo de espera refleja un estado instantneo del sitio, pero no est sincronizado con respecto a ningn otro sitio. Cuando el controlador ha recibido una contestacin de cada sitio crea un grafo de la manera siguiente: El grafo contiene un vrtice para cada transaccin del sistema. El grafo tiene un arco (Ti, Tj) si y slo si Hay un arco (Ti, Tj) en uno de los grafos de espera. Aparece un arco (Ti, Tj, n) (para algn n) en ms de un grafo de espera. Prubese que, si hay un ciclo en el grafo creado, el sistema se halla en estado de interbloqueo y que, si no hay ningn ciclo en el grafo creado, el sistema no se hallaba en estado de interbloqueo cuando comenz la ejecucin del algoritmo. Respuesta: Supngase un ciclo Ti g Tj g g Tm g Ti que existe en el grafo construido por el controaldor. Los arcos del grafo sern locales de la forma (Tk, Tl) o distribuidos de la forma (Tk, Tl, n). Cada arco local (Tk, Tl) implica indudablemente que Tk est esperando a Tl. Dado que un arco distribuido (Tk, Tl, n) se inserta en el grafo slo si la peticin de Tk ha alcanzado Tl y Tl no puede liberar el bloqueo inmediatamente, Tk est, efectivamente, esperando a Tl . Por lo tanto, cada arco del ciclo representa, de hecho, una transaccin esperando a otra. Para una prueba detallada de que esto implica un interbloqueo, consltese Stuart et al [1984]. Ahora se va a probar la implicacin opuesta. Tan pronto como se descubre que Tk est esperando a Tl: a. se aade un arco local (Tk, Tl) si ambas estn en el mismo sitio. b. El arco (Tk, Tl, n) se aade en ambos sitios si Tk y Tl estn en sitios diferentes. Por lo tanto, si el algoritmo fuera capaz de agrupar en el mismo instante todos los grafos locales de espera, se descubrira definitivamente un ciclo en el grafo construido, en caso de que haya una espera circular en ese instante. Si hay una espera circular en el instante en que el algoritmo comienza la ejecucin, ninguno de los arcos que participan en ese ciclo pueden desaparecer hasta que termine el algoritmo. Por lo tanto, incluso si el algoritmo no puede agrupar todos los grafos locales al mismo tiempo, se detectar igualmente a cualquiera de los ciclos que existan justo antes de que se iniciase. 19.17 Considrese una relacin que est fragmentada horizontalmente por nmero-planta: empleado (nombre, direccin, sueldo, nmero-planta) Supngase que cada fragmento tiene dos rplicas: una almacenada en el sitio de Madrid y otra almacenada localmente en el sitio de la planta. Descrbase una buena estrategia de procesamiento de las consultas siguientes 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, Crdoba, Baha Blanca. d. Hallar el empleado peor pagado de la compaa.

Respuesta: a. i. ii. b i. ii.

Enviar la consulta nombre(empleado) a la planta de Managua. Permitir que Managua devuelva la respuesta Calcular el promedio en Madrid. Enviar la respuesta a Lima.

c. i. Enviar la consulta para encontrar el empleado mejor pagado a Buenos Aires, Rosario, Crdoba y Baha Blanca. ii. Calcular las consultas en estos sitios. iii Devolver las respuestas a Lima. d. i. ii. iii Enviar la consulta, para encontrar el empleado peor pagado, a Madrid. Calcular la consulta en Madrid. Enviar la respuesta a Lima.

19.18

Considrense las relaciones empleado (nombre, direccin, sueldo, nmero-planta) mquina (nmero-mquina, tipo, nmero-planta)

Supngase que la relacin empleado est fragmentada horizontalmente por nmero-planta y que cada fragmento se almacena localmente en el sitio de su planta correspondiente. Supngase que la relacin mquina se almacena entera en el sitio de Sucre. Descrbase una buena estrategia para el procesamiento de cada una de las consultas siguientes. a. Hallar todos los empleados de la planta que contiene el nmero de mquina 1130. b. Hallar todos los empleados de las plantas que contienen mquinas cuyo tipo sea trituradora. c. Hallar todas las mquinas de la planta de Almadn. d. Hallar empleado |x| mquina. Respuesta: a. i. Realizar nmero-planta (snmero-mquina = 1130 (mquina)) en Sucre. ii. Enviar la consulta nombre (empleado) a todos los sitios que estn en el resultado de la consulta 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 debera realizar nmero-planta (stipo =trituradora (mquina)) en Sucre. c. i. Realizar snmero-planta = x (mquina) en Sucre, donde x es el nmero de planta para Almadn. ii. Enviar las respuestas al sitio de destino. d. Estrategia 1: i. Agrupar mquina en Sucre por nmero de planta. ii. Enviar los grupos a los sitios con el correspondiente nmero de planta. iii Realizar una reunin local entre los datos locales y los recibidos. iv Unir los resultados en el sitio destino. Estrategia 2: Enviar la relacin mquina a Sucre y todos los fragmentos de la relacin empleado al sitio de destino. Entonces, realizar la reunin en el sitio de destino. Hay paralelismo en el clculo de la reunin, de acuerdo con la primera estrategia, pero no con la segunda. No obstante, en una WAN, la cantidad de datos a enviar es el principal factor de coste. Se espera que cada planta tendr ms de una mquina, por lo que el resultado de la reunin local en cada sitio ser un producto cruzado de las tuplas de los empleados y las mquinas de la planta. El tamao de este producto cruzado es mayor que el del fragmento de empleado en el sitio. Como consecuencia de la segunda estrategia, llevar a una

disminucin del envo de datos y ser ms eficiente. 19.19 Para cada una de las estrategias del Ejercicio 19.18, indquese el modo en que la eleccin de la estrategia depende: a. Del sitio en el que se formul la consulta b. Del sitio en el que se desea obtener el resultado Respuesta: a. Suponiendo que el coste de enviar la consulta es mnimo, el sitio al que la consulta sea remitida no afecta a la estrategia para evaluar la consulta. b. Por la primera consulta, se averigua que los nmeros de planta donde est presente el nmero de mquina 1130, se corresponden con Sucre. Entonces, las tuplas de los empleados en todas estas plantas se envan al sitio de destino. Se puede ver que esta estrategia es ms o menos independiente del sitio de destino. Lo mismo se puede decir de la segunda consulta. Para la tercera consulta, la seleccin se realiza en Sucre y los resultados se envan 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 los sitios de las plantas y sus resultados se unen en el sitio de destino. En la segunda estrategia, la relacin mquina en Sucre, as como todos los fragmentos de la relacin empleado, se envan primero al destino, donde se realiza la operacin reunin. No hay una forma evidente de optimizar estas dos estrategias segn el sitio de destino. En la respuesta al Ejercicio 19.18 se vio la razn por la que la segunda estrategia se esperaba que, como resultado, diera menos envos de datos que la primera. Esa razn es independiente del sitio de destino y por lo tanto se puede, en general, preferir la estrategia dos a la uno, sin importar el sitio de destino. 19.20 Calclese r |x s para las relaciones de la Figura 19.1.

Respuesta: El resultado es el siguiente: r|xs A 1 5 B 2 3 C 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|xrjrj|xri Esto se puede ver fcilmente desde

Figura 19.1 el Ejercicio 19.20, en el cual r|xss|xrr|xs

Relaciones para el Ejercicio 19.20.

s|xr

C 3 3 2

D 4 6 3
1

E 5 8 2

Por definicin, ri |x rj = Ri (ri |x| rj) y rj |x ri= Rj (ri |x| rj ), donde Ri y Rj son los esquemas de ri y rj respectivamente. Para que Ri (ri |x| rj) sea siempre igual a Rj (ri |x| rj ), los esquemas Ri y Rj deben ser el mismo.
1 1 1

19.22 Dado que la funcionalidad LDAP puede implementarse sobre un sistema de bases de datos, indquese la necesidad de la norma LDAP. Respuesta: Las razones son: Los protocolos de acceso a directorios son protocolos simplificados que atienden a un tipo limitado de accesos a datos. Los sistemas de directorio ofrecen un mecanismo sencillo para nombrar a los objetos de manera jerrquica, que pueden utilizarse en un sistema distribuido de directorio para especificar la informacin que se almacena en cada servidor de directorio. El sistema de directorios puede configurarse para que enve de manera automtica a un sitio las consultas formuladas en el otro, sin intervencin del usuario.

19.23 Descrbase el modo en que se puede utilizar LDAP para ofrecer varias vistas jerrquicas de los datos sin replicar los datos del nivel bsico. Respuesta: Esto se puede hacer empleando referencias. Por ejemplo, una organizacin puede mantener su informacin sobre departamentos geogrficamente (es decir, todos los departamentos en un sitio de la organizacin) o por estructuras (es decir, informacin sobre un departamento desde todos los sitios). Estas dos jerarquas se pueden mantener definiendo dos esquemas diferentes, con informacin de los departamentos en un sitio como la informacin de base. Las entradas en las dos jerarquas se referirn a la entrada de la informacin base, empleando referencias.

CAPITULO

20

BASES DE DATOS PARALELAS


Este captulo est indicado para un curso avanzado, pero tambin puede emplearse en proyectos de estudio independientes por estudiantes de primer curso. El captulo trata diversos aspectos del diseo de sistemas de bases de datos paralelas particionamiento de datos, paralelizacin de operaciones relacionales individuales y paralelizacin de expresiones relacionales. El captulo tambin trata brevemente algunos aspectos de sistemas, tales como la coherencia cach y la resistencia a fallos. Las aplicaciones ms importantes de las bases de datos paralelas hoy son los almacenamientos y los anlisis de grandes cantidades de datos. Por eso, los particionamientos de datos y los procesos de consultas paralelas se tratan con significativo detalle. La optimizacin de las consultas, por la misma razn, tambin es importante. Sin embargo, la optimizacin de consultas paralelas todava no es un problema completamente resuelto; la bsqueda exhaustiva, empleada por la optimizacin de consultas secuenciales, es demasiado cara en un sistema paralelo, forzando el empleo de heursticos. As, la optimizacin de consultas paralelas est en un rea de investigacin continua. La descripcin de algoritmos de procesamiento de consultas paralelas, est basada en el modelo sin compartimiento. Se puede pedir a los estudiantes que estudien como mejorar los algoritmos, si en su lugar se emplean mquinas de memoria compartida. Cambios a la tercera edicin: No hay cambios de importancia a la edicin anterior.

Ejercicios
20.1 Para cada una de las tres tcnicas de divisin, a saber, por turno rotatorio, por asociacin y en rangos, aprtese un ejemplo de una consulta para la que esa tcnica de divisin proporcione la respuesta ms rpida. Respuesta: Divisin por turno rotatorio: Cuando las relaciones son grandes y las consultas leen relaciones enteras, el turno rotatorio da una buena aceleracin y un tiempo de respuesta rpido. Divisin por asociacin: Para consultas concretas aporta la respuesta ms rpida, dado que cada disco puede procesar una consulta simultneamente. Si la divisin por asociacin es uniforme, incluso las exploraciones secuenciales de relaciones completas se pueden realizar eficientemente. Divisin en rangos: Para las consultas de rangos, que acceden a pocas tuplas, aporta una respuesta rpida. 20.2 Al llevar a cabo una seleccin de rango en un atributo dividido en rangos, es posible que slo haga falta acceder a un disco. Descrbanse las ventajas e inconvenientes de esta propiedad. Respuesta: Si hay pocas tuplas en el rango consultado, cada consulta se puede procesar rpidamente en un slo disco. Esto permite una ejecucin paralela de las consultas, con lo que se reduce la sobrecarga de iniciar consultas en varios discos. Por otro lado, si hay muchas tuplas en el rango consultado, a cada consulta le lleva mucho tiempo la ejecucin, a la vez que no hay paralelismo en su ejecucin. Adems, algunos discos se pueden convertir en puntos calientes, incrementando an ms el tiempo de respuesta. La divisin en rangos hbridos, en la que pequeos rangos (de unos pocos bloques cada uno) se dividen en forma de turnos rotatorios, aporta las ventajas de una divisin en rangos sin sus inconvenientes. 20.3 Indquense los factores que puedan dar lugar a un sesgo, cuando se divide una relacin basndose en uno de sus atributos utilizando: a. Divisin por asociacin b. Divisin en rangos En cada uno de los casos anteriores, indquese lo que se puede hacer para reducir el sesgo. Respuesta: a. Divisin por asociacin: Demasiados registros con el mismo valor de los atributos de la asociacin, o una funcin de asociacin elegida pobremente sin las propiedades de aleatoriedad y uniformidad, pueden terminar en una divisin sesgada. Para mejorar esta situacin, se debera experimentar con mejores funciones de asociacin para esa relacin. Divisin en rangos: Una distribucin no uniforme en los valores de los atributos de la divisin (incluyendo valores duplicados en los atributos de la divisin), que no se ha tenido en cuenta por un mal vector de divisin, es la principal razn de las divisiones sesgadas. Ordenando la relacin en funcin de los atributos de divisin y dividindola en n rangos con igual nmero de tuplas cada uno, se tendr un buen vector de divisin con un sesgo muy bajo. 20.4 Indquese la forma de paralelismo (entre consultas, entre operaciones o en operaciones) que sea b.

probablemente ms importante para cada una de las tareas siguientes. a. Incrementar la productividad de un sistema con muchas consultas pequeas b. Incrementar la productividad de un sistema con unas pocas consultas grandes, cuando el nmero de discos y procesadores es grande. Respuesta: a. Cuando hay muchas consultas pequeas, el paralelismo entre consultas aporta una buena productividad. Paralelizar cada una de estas pequeas consultas incrementara la sobrecarga inicial, sin una reduccin significativa del tiempo de respuesta. b. Con unas cuantas consultas grandes el paralelismo entre consultas es esencial para alcanzar tiempos de respuesta rpidos. Dado que hay gran nmero de procesadores y discos, slo el paralelismo en operaciones puede sacar partido del hardware paralelo para consultas que tpicamente tienen pocas operaciones, pero que necesitan procesar cada una un gran nmero de tuplas. 20.5 Con el paralelismo encauzado, suele resultar adecuado llevar a cabo varias operaciones de un cauce en un mismo procesador, aunque haya disponibles muchos procesadores. a. Explquese el motivo. b. Seran vlidos los argumentos anteriores si la mquina utilizara una arquitectura de memoria compartida? Explquense los motivos. c. Seran vlidos los argumentos anteriores con paralelismo independiente? (Es decir, hay casos en que, incluso si las operaciones no se encauzan y hay muchos procesadores disponibles, sigue siendo conveniente llevar a cabo varias operaciones en el mismo procesador?) Respuesta: a. La ganancia de velocidad que se obtiene paralelizando las operaciones se compensara con la sobrecarga de la transferencia de datos, dado que cada tupla producida por un operador habra de transferirse a 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 un tercer operador en comn. En ese caso, ejecutar las tres en el mismo procesador puede ser mejor que transferir tuplas entre los procesadores. 20.6 Se da un ejemplo de una reunin , que no sea una equirreunin simple, para la que pueda utilizarse paralelismo de particiones. Qu atributos deberan utilizarse para la divisin? 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 despus de la reunin. Por lo tanto, el paralelismo de particiones es til. r |x| (r.A (?s.B/20?)*20) (r.A<((?s.B/20?)+1)*20) s Esta es una consulta en la que una tupla r y una tupla s se renen entre s, en el caso de que caigan dentro del mismo rango de valores. Por lo tanto, el paralelismo de particiones aplica naturalmente a este escenario. Para ambas consultas, r debera estar particionada sobre el atributo A y s sobre el atributo B. 20.7 Considrese el procesamiento de reuniones utilizando fragmentos y rplicas simtricos con divisin en rangos. Cmo se puede optimizar la evaluacin si la condicin de reunin es de la forma | r.A - s.B| k, b.

donde k es una constante pequea. Aqu, | x | denota el valor absoluto de x. Una reunin con una condicin de reunin as, se denomina reunin de banda. Respuesta: La relacin r est dividida en n divisiones, r0, r1, . . . , rn-1 y s est tambin dividida en n divisiones, s0, s1, . . . , sn-1. Las divisiones estn replicadas y asignadas a los procesadores como se muestra en la figura siguiente.

Cada fragmento est replicado slo en 3 procesadores, a diferencia del caso general, donde est replicado sobre n procesadores. El nmero de procesadores requeridos ahora es aproximadamente 3n, en vez de n2 del caso general. Por lo tanto, dado el mismo nmero de procesadores, se pueden dividir las relaciones en ms fragmentos con esta optimizacin, es decir, haciendo ms rpida la reunin local. 20.8 Descrbase una buena manera de paralelizar lo siguiente. a. la operacin diferencia b. la agregacin utilizando la operacin count c. la agregacin utilizando la operacin count distinct d. la agregacin utilizando la operacin avg e. la reunin exterior por la izquierda, si la condicin de reunin slo implica igualdad f. la reunin exterior por la izquierda, si la condicin de reunin implica comparaciones distintas de la igualdad g. la reunin exterior completa, si la condicin de reunin implica comparaciones distintas de la igualdad Respuesta: a. Se puede paralelizar la operacin diferencia dividiendo las relaciones en todos los atributos y calculando las diferencias localmente, en cada procesador. Como en la agregacin, el coste de transferir las tuplas durante la divisin se puede reducir calculando las diferencias parcialmente en cada procesador, antes de la divisin. b. Supngase la referencia al atributo group-by como atributo A y al atributo sobre el que opera la funcin agregacin, como atributo B. count se realiza como sum (mencionada en el libro) salvo que, en vez de la suma, lo que se transfiere al procesador de destino correcto es un recuento del nmero de valores del atributo B, por cada valor del atributo A. Despus de la divisin, los recuentos parciales desde todos los procesadores se suman localmente en cada procesador, para obtener el resultado final.

c. Por esto, los recuentos parciales no se pueden sumar localmente antes de la divisin. En cambio, cada procesador transfiere todos los valores nicos de B, por cada valor de A, al procesador de destino correcto. Despus de la divisin, cada procesador cuenta localmente el nmero de tuplas nicas por cada valor de A y, a continuacin, obtiene el resultado final. d. De nuevo, esto se puede implementar como sum salvo que, por cada valor de A, un sum de los valores de B, as como un count del nmero de tuplas del grupo, se transfiere durante la divisin. Seguidamente cada procesador produce su resultado local, dividiendo la suma total por el nmero total de tuplas, para cada valor de A asignado a su divisin. e. Esto se puede realizar como una reunin natural dividida. Despus de la divisin, cada procesador calcula localmente la reunin externa por la izquierda, empleando cualquiera de la estrategias del Captulo 13. f. La reunin externa por la izquierda se puede calcular empleando una ampliacin de la tcnica Fragmentos y Rplicas, para calcular no equirreuniones. Considrese r ]x| s. Las relaciones estn divididas y r |x| s se calcula en cada sitio. Tambin se agrupan las tuplas de r que no se correspondieron con ninguna tupla de s; Supngase que se denota como di al conjunto de estas tuplas colgantes en el sitio i. Despus de realizar el paso anterior en cada sitio, por cada fragmento de r, se toma la interseccin de los dis desde cada procesador en el que estaba replicado el fragmento de r. Las intersecciones dan el conjunto real de tuplas colgantes; estas tuplas se rellenan con nulos y se aaden al resultado. Las intersecciones, seguidas por la suma de las tuplas rellenadas al resultado, se pueden hacer en paralelo mediante divisiones. g. El algoritmo es bsicamente lo mismo que antes, salvo que cuando se combinan los resultados, el procesamiento de las tuplas colgantes debe hacerse para ambas relaciones. 20.9 Recurdese que los histogramas se utilizan para generar particiones en rangos con carga equilibrada. a. Supngase que se tiene un histograma en el que los valores varan de 1 a 100 y estn divididos en 10 rangos, 1-10, 11-20, . . ., 91100, con frecuencias 15, 5, 20, 10, 10, 5, 5, 20, 5, y 5, respectivamente. Se da una funcin de divisin en rangos con carga equilibrada para dividir los valores en cinco particiones. b. Propngase un algoritmo para procesar una divisin en rangos con carga equilibrada con p particiones, dado un histograma de las distribuciones de frecuencias que contiene n rangos. Respuesta: a. Un vector de divisin 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 suposicin hecha respecto a este vector de divisin es que, en un rango del histograma, cada valor es igualmente probable. b. Considrese llamar a los rangos del histograma como h1, h2, . . , hh, y a las particiones como p1, p2, . .. , pp. Supngase que las frecuencias de los rangos del histograma son n1, n2, . . . , nh . Cada particin debera contener N/p tuplas, donde N = S hi=1 ni. Para construir el vector de divisin 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 divisin 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, el valor kthi ser donde sj : ej : kij : primer valor en hj ltimo valor en hj ki - S j-1l=1 nl sj + (ej - sj) * (kij / nj)

20.10

Descrbanse las ventajas e inconvenientes de utilizar paralelismo encauzado.

Respuesta: Ventajas: No es necesario grabar relaciones intermedias a disco, slo para leerlas de nuevo inmediatamente. Inconvenientes: a. No puede aprovechar los altos grados de paralelismo, dado que las tpicas consultas no tienen gran nmero de operaciones. b. No es posible encauzar los operadores que necesitan atender a todas las entradas antes de producir cualquier salida. c. Dado que cada operacin se ejecuta en un mismo procesador, las ms costosas tardan mucho en terminar. 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 en discos conectados a un procesador diferente , para evitar la prdida de los datos si falla uno de los procesadores. a. Por qu es conveniente dividir las copias de los elementos de los datos de un procesador entre varios procesadores? b. Cules son las ventajas e inconvenientes de utilizar almacenamiento RAID, en lugar de guardar otra copia de cada elemento de datos? Respuesta: a. Las copias de los elementos de los datos de un procesador deberan estar divididas entre otros procesadores, en vez de almacenarse en el mismo procesador, por las siguientes razones: para distribuir mejor entre los procesadores restantes el trabajo que debera hacerse, si el procesador fallara. incluso en ausencia de fallos, esta tcnica puede en cierto modo ocuparse de los puntos calientes creados por transacciones de slo lectura. b. RAID nivel 0 almacena una copia extra de cada elemento de datos (creacin de imagen). As, esto es similar a la creacin de imgenes realizada por la propia base de datos, excepto que el sistema de la base de datos no se ha de molestar por los detalles de llevar a cabo la creacin de imgenes. Slo facilita la grabacin al sistema RAID que, automticamente, realiza la creacin de imgenes. A continuacin se presentan loas ventajas e inconvenientes de los otros niveles RAID, en comparacin con la creacin de imgenes. Ventajas de los niveles RAID superiores: i. Menos caros que la creacin de imgenes, en trminos de requerimientos de espacio en disco. ii. Mejor velocidad de transferencia para grandes lecturas. De este modo, si predominan estos tipos de consultas, RAID tiene un tiempo de respuesta ms rpido que la creacin de imgenes. Inconvenientes de los niveles RAID superiores: i. Las escrituras son ms caras. ii. La reconstruccin de un disco destruido es ms cara.

CAPITULO

21

DESARROLLO DE APLICACIONES Y ADMINISTRACIN

Ejercicios
21.1 Cul es la razn principal por la que los servlets dan mejor rendimiento que los programas que utilizan la interfaz de pasarela comn (common gateway interface, CGI), pese a que los programas Java suelen ejecutarse ms lentamente que los programas C o C++? Respuesta: El interface CGI inicia un proceso nuevo para atender a cada solicitud, lo que tiene una sobrecarga significativa sobre el sistema operativo. Por otro lado, los servlets se ejecutan como hebras de un proceso existente, evitando estas sobrecargas. Adems, el proceso que ejecuta la hebras podra ser el propio proceso del servidor Web, evitando comunicaciones entre procesos que pueden ser costosas. As, para tareas de tamao moderado, la sobrecarga de Java es menor que la sobrecargas ahorradas al evitar crear y comunicar procesos. Para tareas que implican mucha actividad de la CPU, este puede no ser el caso, y empleando CGI con un programa C o C++, se puede mejorar el rendimiento. 21.2 Indquense algunas de las ventajas y de los inconvenientes de los protocolos sin conexin frente a los protocolos que mantienen las conexiones. Respuesta: La mayora de los ordenadores pueden aceptar un nmero limitado de conexiones simultneas. Con los protocolos sin conexin las conexiones se interrumpen tan pronto como se atiende la peticin y, de esta manera, otros clientes pueden abrir conexiones. De esta manera, se pueden atender ms clientes al mismo tiempo. Una peticin se puede dirigir a cualquier servidor para equilibrar la carga y, si un servidor cae, otro puede tomar el control sin que el cliente se percate del problema. El inconveniente de los protocolos sin conexiones es que, cada vez que se enva una peticin, ha de reestablecerse la conexin. Tambin se ha de enviar cada vez informacin sobre la sesin, en forma de cookies o campos ocultos. Esto los hace ms lentos que los protocolos que mantienen la conexin, en caso de que se requiera informacin de estado. 21.3 Indquense tres maneras en que se puede utilizar el almacenamiento en cach para acelerar el rendimiento de los servidores Web. Respuesta: El almacenamiento cach se puede emplear para mejorar el rendimiento, explotando las similitudes entre las transacciones. a. Si el cdigo de la aplicacin para la atencin de cada solicitud necesita abrir una conexin a la base de datos, que consume tiempo, se puede haber creado con antelacin un fondo de conexiones abiertas para que cada peticin utilice una de ellas. b. Los resultados de una consulta generada por una peticin se pueden almacenar en cach. Si la misma peticin llega de nuevo, o se genera la misma consulta, se puede emplear el resultado cach en vez de establecer una nueva conexin a la base de datos. c. Se puede almacenar en cach la pgina Web final, generada en respuesta a la peticin. Si la misma peticin llega de nuevo, se puede sacar la pgina almacenada en la memoria cach.

21.4 a. Cules son los tres niveles principales en los que se puede ajustar un sistema de bases de datos para mejorar su rendimiento? b. Aprtense dos ejemplos del modo en que se puede realizar el ajuste para cada uno de los niveles. Respuesta: a. Se hace referencia al ajuste del rendimiento de un sistema de base de datos, como es el caso de la modificacin 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 a diferentes niveles para aumentar el rendimiento; a saber: i. Diseo del esquema y las transacciones ii. Gestin de la memoria intermedia y de las transacciones iii Estructuras de acceso y almacenamiento iv Hardware: discos, CPU, busses etc. b. Se describen algunos ejemplos, para ajustar el rendimiento, de algunos de los principales componentes de un sistema de base de datos. i. Ajuste del esquema: En este captulo se han visto dos ejemplos de ajustes de esquema; a saber; divisin vertical de una relacin (recprocamente, reunin de dos relaciones) y desnormalizacin (recprocamente, normalizacin). Estos ejemplos reflejan el escenario general y las ideas que contiene se pueden aplicar para ajustar otros esquemas. Ajuste de las transacciones: Un enfoque empleado para acelerar la ejecucin de las consultas es mejorar su planificacin. Supngase que se necesita la reunin naturas de dos relaciones, por ejemplo cuenta e impositor, desde el ejemplo de la base de datos de un banco. Una reunin por mezcla-ordenacin (Apartado 13.5.4) sobre el atributo nmero-cuenta puede ser ms rpida que una simple reunin en bucle anidado sobre las relaciones. Otras maneras de ajustar transacciones son, descomponiendo las transacciones de actualizacin de larga duracin y combinando conjuntos de consultas relacionadas en una sola consulta. Ejemplos genricos de estos enfoques se dan en este captulo. Para los sistemas cliente servidor, en donde la consulta ha de transmitirse desde el cliente al servidor, el propio tiempo de transmisin de la consulta puede suponer una parte importante del coste total de la consulta. Empleando procedimientos almacenados se puede reducir significativamente el tiempo de respuesta de las consultas. Ajuste del gestor de la memoria intermedia: El gestor de la memoria intermedia puede incrementar o disminuir el nmero de pginas de la memoria intermedia, para modificar las tasas de fallo de pgina. Sin embargo, debe notarse que un gran nmero de pginas puede significar altos costes en la gestin de pestillos y en el mantenimiento de otras estructuras de datos, como las listas libres y las tablas de mapas de pginas. Ajuste del gestor de las transacciones: La planificacin de las transacciones afecta al rendimiento del sistema. Una consulta que calcula estadsticas 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 ningn cliente. As, el tiempo de respuesta para las transacciones de actualizacin es alto. Las consultas largas se ejecutan mejor cuando hay pocas tuplas, como es el caso de la noche. Los puntos de revisin tambin suponen un coste. Si el tiempo de recuperacin no es crtico, es preferible examinar un registro histrico grande (durante la recuperacin), en vez de gastar mucho tiempo (puntos de revisin) durante la operacin normal. Por lo tanto, puede merecer la pena ajustar los intervalos de los puntos de revisin, de acuerdo con la tasa de cadas y los tiempos de recuperacin requeridos Ajuste de las estructuras de acceso y almacenamiento: El tiempo de respuesta de una consulta se puede mejorar creando un ndice apropiado sobre la relacin. Por ejemplo, considrese una consulta en la que una impositora pregunta sobre su saldo en una v iv iii ii.

determinada cuenta. Esta consulta implicara la exploracin de la relacin cuenta, si no tiene ningn ndice sobre nmero-cuenta. Consideraciones similares sobre la indexacin tambin aplican al clculo de reuniones, es decir, un ndice sobre nmero-cuenta en la relacin cuenta, evita explorar cuenta cuando una se realiza con impositor una reunin natural de cuenta. En cambio, la indexacin puede perjudicar el rendimiento de las transacciones de actualizacin. Supngase que es necesario actualizar el saldo frecuentemente. Supngase tambin que hay un ndice sobre saldo (presumiblemente pata consultas por rangos) en cuenta. Ahora, por cada actualizacin del valor del saldo, el ndice tambin habr de actualizarse. Adems, las actualizaciones concurrentes sobre la estructura de ndices requerirn una sobrecarga adicional por bloqueos. Ntese que ,si no hubiera ndice sobre saldo, el tiempo de respuesta de cada actualizacin no sera mayor. El tipo de ndice elegido tambin afecta al rendimiento. En una consulta por rangos, un ndice conservando el orden (como los rboles B) es mejor que un ndice asociativo. Los agrupamientos de datos afecta al tiempo de respuesta de algunas consultas. Por ejemplo, supngase que las tuplas de la relacin cuenta estn agrupadas por nombre-sucursal. Entonces, el tiempo medio de ejecucin para una consulta que encuentra el saldo total depositado en una determinada sucursal, puede mejorar. Tener un ndice agrupado sobre nombre-sucursal aporta ms ventajas. Si el sistema de la base de datos tiene ms de un disco, los desagrupamientos de datos posibilitar accesos paralelos. Supngase que se tienen cinco discos y una hipottica situacin donde cada cliente tiene cinco cuentas y cada cuenta tiene gran cantidad de informacin histrica a la que se necesita acceder. Almacenando una cuenta por cliente por disco, se dispondr de acceso paralelo en todas las cuentas de un determinado cliente. As, la velocidad de una exploracin sobre impositor aumentar alrededor de cinco veces 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 y aumentando el nmero de discos o el tamao de sus bloques, o empleando un procesador ms rpido o mejorando la arquitectura del bus, se puede obtener una mejora en el rendimiento del sistema. 21.5 Cul es el motivo para separar una transaccin de larga duracin en una serie de transacciones ms breves? Qu problemas pueden surgir como consecuencia y cmo pueden evitarse? Respuesta: Las transacciones de actualizacin de larga duracin hacen que se grabe mucha informacin sobre el registro histrico y, por lo tanto, amplan el intervalo de puntos de revisin as como el tiempo de recuperacin despus de una cada. Una transaccin que realiza numerosas actualizaciones puede, incluso, originar el desbordamiento del registro histrico del sistema antes de que se comprometa la transaccin. Para evitar estos problemas con las transacciones de actualizacin de larga duracin, puede ser aconsejable descomponer la transaccin en otras ms pequeas. Esto se puede ver como una transaccin de grupo, se divide en muchas transacciones pequeas de mini lotes. Se obtiene el mismo efecto ejecutando la transaccin de grupo y las transacciones de mini lotes, las cuales estn planificadas en el orden en que aparecen sus operaciones en la transaccin de grupo. Sin embargo, ejecutar las transacciones de mini lotes en lugar de la transaccin de grupo tiene algunos costes, como es el caso de un esfuerzo extra cuando falla el sistema de recuperacin. Tambin, incluso si la transaccin de grupo cumple el requerimiento de aislamiento, el mini lote puede que no lo haga. As, el gestor de transacciones puede liberar los bloqueos mantenidos por los mini lotes, slo cuando la ltima transaccin del mini lote complete su ejecucin. 21.6 Supngase que un sistema ejecuta tres tipos de transacciones. Las transacciones de tipo A se ejecutan a razn de cincuenta por segundo, las transacciones de tipo B se ejecutan a cien por segundo y las transacciones de tipo C se ejecutan a doscientas por segundo. Supngase que la mezcla de transacciones tiene un veinticinco por ciento del tipo A, otro veinticinco por ciento del tipo B y un cincuenta por ciento del tipo C. a. Cul es el flujo promedio de transacciones del sistema, suponiendo que no hay interferencia entre vi

las transacciones? b. Qu factores pueden generar interferencias entre las transacciones de los diferentes tipos, haciendo que el flujo calculado sea incorrecto? Respuesta: a. Supngase que hay 100 transacciones en el sistema. La mezcla de transacciones podra ser de 25 transacciones de cada tipo A y B, junto con 50 transacciones del tipo C. De este modo, el tiempo empleado en ejecutar slo las transacciones del tipo A es 0,5 segundos y el de las transacciones slo del tipo B o slo del tipo C, es de 0,25 segundos. Dado que las transacciones no interfieren, el tiempo total empleado en ejecutar las 100 transacciones es 0,5+0,25+0,25 = 1 segundo, es decir, la productividad media sobre todas las transacciones en de 100 transacciones por segundo. b. Una de las ms importantes causas de interferencias en las transacciones es la contencin de bloqueos. En el ejemplo anterior, supngase que las transacciones de los tipos A y B son transacciones de actualizacin y que las del tipo C son consultas. Debido a la falta de correspondencia de la velocidad entre el procesador y el disco, es posible que una transaccin del tipo A est manteniendo un bloqueo sobre un elemento de datos caliente y est esperando a que se complete una escritura sobre el disco, mientras otra transaccin (posiblemente del tipo B o C) est esperando que A libere el bloqueo. En este escenario se malgastan algunos ciclos de CPU. Por lo tanto, la productividad observada sera menor que la calculada. Por el contrario, si las transacciones de tipos Ay B estn en el lmite del disco y las del tipo C en el lmite de la CPU y no hay contencin de bloqueos, la productividad observada puede ser incluso mejor que la calculada. La contencin de bloqueos puede conducir a interbloqueos, en cuyo caso se abortarn algunas transacciones. Los abortos y reinicios de transacciones (que pueden emplearse por una tcnica optimista de control de concurrencia) contribuyen a que la productividad observada sea menor que la calculada. Factores tales como los lmites en los tamaos de las estructuras de los datos y la variacin en el tiempo empleado por las funciones de contabilidad del gestor de transacciones, pueden causar tambin una diferencia entre los valores de la productividad observada y calculada. 21.7 Supngase que el precio de la memoria cae a la mitad y la velocidad de acceso al disco (nmero de accesos por segundo) se dobla, mientras el resto de los factores permanecen iguales. Cul sera el efecto de este cambio en las reglas de los cinco minutos y del minuto? Respuesta: Estos cambios no tendrn ningn efecto sobre las reglas de los cinco minutos y del minuto. El valor de n, es decir, la frecuencia de los accesos a pgina 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 a disco. As, cuando el precio de la memoria baja a la mitad y se dobla la velocidad de acceso, n permanece constante. 21.8 Indquense algunas de las caractersticas de las pruebas TPC que ayudan a hacer las medidas realistas y dignas de confianza. Respuesta: Algunas de las caractersticas 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 tamaos de las relaciones a las tasas esperadas de llegada de transacciones y d. Midiendo en euros el coste por unidad de produccin.

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 y otra informacin redundante, pero deberan tenerse en cuenta la sobrecarga de emplearlas. Por lo tanto, TPC-R y TPC-H se introdujeron como modificaciones al TPC-D; los dos emplean el mismo esquema y la misma carga de trabajo. TPC-R modela consultas de informes peridicos 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 prohbe las vistas materializadas y otra informacin redundante. 21.10 Indquense algunas ventajas e inconvenientes de las normas anticipativas frente a las normas reaccionarias. Respuesta: En ausencia de una norma anticipativa, puede resultar difcil compatibilizar los diferentes productos desarrollados por varias organizaciones. As, puede ser duro formular una norma reaccionaria, sin sacrificar alguno de los proyectos de desarrollo de productos. Este problema ha sido afrontado por la norma ODMG, al normalizar la sintaxis de punteros y los mecanismos de acceso. Por otro lado, una norma reaccionaria es usual que se forme despus de utilizar el producto intensamente y, por lo tanto, tiene una ventaja sobre una norma anticipativa, que se construye a partir de experiencias pragmticas. En la prctica, se ha encontrado que algunas normas anticipativas tienden a ser demasiado ambiciosas. SQL-3 es un ejemplo de una norma que es compleja y tiene un gran nmero de caractersticas. Algunas de estas caractersticas se pueden implementar en ningn sistema durante mucho tiempo y otras, sin duda, se encontrarn inadecuadas. 21.11 Supngase que alguien suplanta a una empresa y obtiene un certificado de una autoridad emisora de certificados. Cul es el efecto sobre las cosas (como las rdenes de compra o los programas) certificadas por la empresa suplantada y sobre las certificadas por otras empresas? Respuesta: El problema clave con los certificados digitales (cuando se usan fuera de lnea, sin contactar con el 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) una persona C dice ser un empleado de la compaa X y obtiene un nuevo certificado de clave pblica de la autoridad de certificacin A. Supngase que la autoridad A pens equivocadamente que C estaba actuando en nombre de la compaa X, entrega a C un certificado cert. Ahora, C puede comunicar con la persona Y, quien verifica el certificado cert presentado por C y cree que la clave pblica contenida en cert pertenece realmente a X. Ahora C se comunicara con Y empleando la clave pblica, e Y cree que la comunicacin es de la compaa X. La persona Y ahora puede revelar informacin confidencial a C, o aceptar ordenes de compra de C, o ejecutar programas certificados por C basados en la clave pblica, pensando que l se esta comunicando realmente con la empresa X. En cada caso hay un dao potencial hacia Y. Incluso si A detecta la suplantacin, mientras que Y no compruebe con A (el protocolo no exige esta comprobacin), no hay manera de que Y averige que el certificado est falsificado. Si X era la propia autoridad de certificacin, se pueden crear an ms niveles de certificados falsos. Pero los certificados que no son parte de esta cadena no estaran afectados.

CAPITULO

21

CONSULTAS AVANZADAS Y RECUPERACIN DE LA INFORMACIN


Este captulo trata las tcnicas de consultas avanzadas para bases datos y la recuperacin de la informacin. Las tcnicas de consultas avanzadas incluyen sistemas de apoyo a las decisiones, procesamiento en conexin analtica, incluyendo el soporte de SQL:1999 para OLAP y la extraccin inteligente de datos. Aunque la recuperacin de la informacin ha sido considerada por los investigadores como un campo independiente de las bases de datos, hay fuertes conexiones. Est aumentando la importancia de la recuperacin de la informacin distribuida, con la explosin de documentos en la Web y la importancia resultante de las tcnicas de bsquedas en la Web. Considerando la creciente importancia de todos los tpicos que se tratan en este captulo, algunos de los apartados del mismo se pueden asignar como material de lectura suplementario, incluso en un curso de introduccin. Estos podran incluir OLAP, algunas partes de la extraccin inteligente de datos y de la recuperacin de la informacin. La materia del captulo es tambin adecuada para sentar las bases de un curso avanzado o para mantener a los profesionales en contacto con los desarrollos recientes. Cambios a la tercera edicin: Se ha ampliado el tratamiento de OLAP con la cobertura de jerarquas y se han introducido nuevas materias sobre soporte a OLAP en SQL:1999, incluyendo agregacin extendida, clasificacin y ventanas. El apartado sobre extraccin inteligente de datos se ha ampliado significativamente con nuevas materias sobre los diferentes tipos de extraccin, incluyendo clasificacin, asociacin y agrupamiento, as como diferentes mtodos para la clasificacin y la regresin. Tambin se ha introducido el tratamiento de algoritmos para la construccin de rboles de decisin y para encontrar reglas de asociacin. Se ha ampliado la cobertura de los almacenes de datos con el tratamiento de esquemas de estrellas. Se ha ampliado la cobertura de la recuperacin de la informacin con un mejor tratamiento de la recuperacin de la informacin bsica y el tratamiento de la recuperacin de la informacin en la Web, aprovechando la informacin de hiperenlaces.

Ejercicios
22.1 Por cada una de las funciones de agregacin SQL sum, count, min y max, mustrese como calcular el valor agregado para el conjunto mltiple S1 U S2, dados los valores agregados en los conjuntos mltiples S1 y S2. Basado en lo anterior, dense expresiones para calcular valores agregados con agrupamiento en un subconjunto S, de los atributos de una relacin r(A, B, C, D, E), dados los valores agregados para agrupamiento de los atributos T S, para las funciones de agregacin siguientes: a. sum, count, min y max b. avg c. desviacin estndar Respuesta: Dados valores agregados en los conjuntos mltiples S1 y S2, se pueden calcular los correspondientes valores agregados sobre el conjunto mltiple 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)) Supngase los conjuntos de atributos T = (A, B, C, D) y S = (A, B). Supngase que la agregacin sobre el conjunto T se almacena en la tabla t-on-agregacin con columnas de agregacin 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 por la 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-agregacin groupby A, B ) b. La agregacin avg sobre el conjunto de atributos S se calcula por la consulta: (select A, B, sum(t-suma)/sum(t-contador) as s-avg from t-on-agregacin groupby A, B ) c. Para calcular la desviacin estndar se emplea la frmula alternativa:

lo cual se obtiene expandiendo la frmula

Si S est dividido en n conjuntos S1, S2, . . . Sn se mantiene la siguiente relacin:

Empleando esta frmula, la agregacin 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-agregacin groupby A, B 22.2 Mustrese la manera de expresar group by cube(a, b, c, d) usando rollup; la respuesta debe tener slo una clusula 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 slo una clusula group by con cube y rollup. Respuesta: Considrese un ejemplo de jerarquas de las dimensiones de la Figura 22.4. No se puede expresar una consulta para buscar agregaciones en grupos (Ciudad, Hora del da) y (Ciudad, Fecha) empleando slo una clusula group by con cube y rollup. Cualquier clusula sencilla groupby con cube y rollup que calcule estos dos grupos, tambin calculara otros grupos. 22.4 Dada una relacin E(estudiante, asignatura, notas), escrbase una consulta para encontrar los n estudiantes con mejores notas, empleando la clasificacin. Respuesta: Se supone que varios estudiantes no tienen las mismas notas dado que, de lo contrario, la pregunta no es unvoca; la consulta siguiente devuelve unvocamente todos los estudiantes con las mismas notas como los n estudiantes, de manera que puede devolver ms de n estudiantes. select estudiante, sum(notas) as total, rank() over (order by (total) desc) as trank from S groupby estudiante having trank n 22.5 Dada la relacin r(a, b, c, d), mustrsese la manera de usar las caractersticas ampliadas del SQL para generar un histograma de d frente a a, dividiendo a en 20 partes iguales (es decir, cada parte contiene un 5% 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 s groupby tile20

22.6 Escrbase una consulta para hallar saldos acumulativos, equivalente a la mostrada en el Apartado 22.2.5, pero sin utilizar las estructuras ampliadas para la creacin de ventanas de SQL. Respuesta: select t1.nmero-cuenta, t1.fecha-hora, suma(t2.valor) from transaction as t1, transaction as t2 where t1.nmero-cuenta = t2.nmero-cuenta and t2.fecha-hora < t1.fecha-hora groupby t1.nmero-cuenta, t1.fecha-hora order by t1.nmero-cuenta, t1.fecha-hora 22.7 Considrese el atributo saldo de la relacin cuenta. Escrbase una consulta en SQL para calcular un histograma de los valores de saldo, dividiendo el rango desde cero hasta el mximo saldo de una cuenta presente, en tres rangos iguales. Respuesta: (select 1, count(*) from cuenta where 3* saldo <= (select max(saldo) from cuenta) ) union (select 2, count(*) from cuenta where 3* saldo > (select max(saldo) from cuenta) and 1,5 * saldo <= (select max(saldo) from cuenta) ) union (select 3, count(*) from cuenta where 1,5 * saldo > (select max(saldo) from cuenta) ) 22.8 Considrese la relacin ventas del Apartado 22.2. Escrbase una consulta en SQL para calcular la operacin cubo para la relacin, dada la relacin de la Figura 22.2. No se debe utilizar la constructora with cube. Respuesta: (select color, tamao, sum(nmero) from ventas groupby color, tamao ) union (select color, all, sum(nmero) from ventas groupby color ) union (select all, tamao, sum(nmero) from ventas

groupby tamao ) union (select all, all, sum(nmero) from ventas ) 22.9 Constryase un clasificador de rboles de decisin con divisiones binarias en cada nodo, utilizando las tuplas de la relacin r(A, B, C) que se muestra ms abajo como datos de formacin; el atributo C denota la clase. Mustrese el rbol final y, con cada nodo, la mejor divisin para cada atributo junto con su valor de ganancia de la informacin. (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 Supngase que hay dos reglas de clasificacin, una que dice que la gente con sueldos entre 10.000 y 20.000 tienen una calificacin de crdito de buena y otra que dice que la gente con sueldos entre 20.000 y 30.000 tienen una calificacin de crdito de buena. Hay que indicar las condiciones para las que se pueden sustituir las reglas, sin prdida de informacin, por una sola regla que diga que las personas con sueldos entre 10.000 y 30.000 tienen una calificacin de crdito de buena. Respuesta: Considrese el siguiente par de reglas y sus niveles de confianza: Nmero 1. 2. Regla Confianza 60% " personas P, 10.000 < P.sueldo 20.000 P.crdito = bueno 90% " personas P, 20.000 < P.sueldo 30.000 P.crdito = bueno

La nueva regla ha de estar asignada a un nivel de confianza que se encuentre entre los niveles de confianza de las reglas 1 y 2. Al reemplazar las reglas originales por la nueva regla se originar una prdida del nivel de confianza en la clasificacin de las personas, dado que no se puede distinguir entre los niveles de confianza de las personas que ganan entre 10.000 y 20.000, de aquellas que ganan entre 20.000 y 30.000. Por lo tanto, se pueden combinar ambas reglas sin prdida de informacin, slo si sus niveles de confianza son los mismos. 22.11 Supngase que la mitad de las transacciones en una tienda de ropa adquieren vaqueros y que una tercera parte adquieren camisetas. Supngase adems que la mitad de las transacciones que adquieren vaqueros tambin adquieren camisetas. Escrbanse todas las reglas de asociacin (no triviales) que se puedan deducir de la informacin 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 " transacciones T, true compra(T, vaqueros) " transacciones T, true compra(T, camisetas) " transacciones T, compra(T, vaqueros) compra(T, camisetas) " transacciones T, compra(T, camisetas) compra(T, vaqueros) 22.12 Apoyo 50% 33% 25% 25% Confianza 50% 33% 50% 75%

Considrese el problema de hallar conjuntos de artculos de gran tamao.

a. Descrbase la manera de encontrar el soporte para una coleccin dada de conjuntos de elementos, utilizando slo una exploracin de los datos. Supngase que los conjuntos de artculos y la informacin asociada, como los recuentos, caben en la memoria. b. Supngase un conjunto de artculos que tiene un soporte menor que j. Prubese que ningn superconjunto de este conjunto de artculos puede tener soporte mayor o igual que j. Respuesta: a. Sea {S1, S2, . . . , Sn} la coleccin de conjuntos de artculos para los que se quiere encontrar el soporte. Asciese un contador contadorSi) con cada conjunto de artculos Si. Inicialcese el contador a cero. Examnense ahora las transacciones, una por una. Sea S(T ) el conjunto de artculos de una transaccin T . Por cada conjunto de artculos Si que es un subconjunto de S(T ), incremntese el contador correspondiente, contador(Si). Cuando se hayan rastreado todas las transacciones, los valores de contador(Si) darn, para cada i, el soporte para el conjunto de artculos Si. b. Sea A un conjunto de artculos. Considrese cualquier conjunto de artculos B, que sea un superconjunto de A. Sean tA y tB los conjuntos de transacciones que adquieren todos los artculos en A y B, respectivamente. Por ejemplo, supngase que A es {a, b, c} y B es {a, b, c, d}. Una transaccin que adquiera todos los artculos de B debe haber adquirido todos los artculos de A (dado que A B). De este modo, cada transaccin en tA est tambin en tB. Esto implica que el nmero de transacciones en tB es, a lo sumo, el nmero de transacciones en tA. En otras palabras, el soporte para B es, como mximo, el soporte para A. Entonces, si cualquier conjunto de artculos tiene un soporte menor que j, todos los sper conjuntos de este conjunto de artculos tienen soporte menor que j. 22.13 Descrbanse las ventajas e inconvenientes de una arquitectura dirigida por el origen para la recoleccin de datos en los almacenes de datos, en comparacin con una arquitectura dirigida por el destino. Respuesta: En una arquitectura dirigida por el destino para la recoleccin de datos, las transferencias de datos desde la fuente al almacn de datos se basan en la demanda del almacn, mientras que en una arquitectura dirigida 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 estn disponibles. En una arquitectura dirigida por el destino, para capturar los datos en cuanto estn disponibles, el almacn tendra que comprobar frecuentemente las fuentes, originando una alta sobrecarga. La fuente no ha de mantener informacin histrica. Tan pronto como se actualizan los datos, la fuente puede enviar un mensaje de actualizacin al destino y olvidarse el histrico de las actualizaciones. Por el contrario, en una arquitectura dirigida por el destino, cada fuente ha de mantener un histrico de los datos que an no han sido recogidos por el almacn de datos. As, los requerimientos de almacenamiento de las fuentes son menores 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 almacn durante un tiempo. Es ms fcil implementar fuentes pasivas y un solo almacn activo. En una arquitectura dirigida por el destino, cada fuentes es requerida para que aporte slo una funcionalidad bsica de ejecucin de consultas. El almacn tiene ms control cuando, para llevar a cabo actividades de recoleccin de datos y procesar consultas de usuarios, no es una buena idea desarrollar simultneamente ambos, dado que pueden entrar en conflictos de bloqueos.

22.14 Considrese el esquema dibujado en la Figura 22.9. Se da una consulta de SQL:1999 para resumir las cifras de ventas y los precios por tienda y por fecha, junto con las jerarquas para tienda y fecha. Respuesta: select id-almacn, ciudad, provincia, pas, fecha, mes, trimestre, ao, sum(nmero), sum(precio) from ventas, almacn, fecha where ventas.id-almacn = almacn.id-almacn and ventas.fecha = fecha.fecha groupby rollup(pas, provincia, ciudad, id-almacb), rollup(ao, trimestre, mes, fecha) 22.15 Calclese la importancia (mediante las definiciones adecuadas de la frecuencia de los trminos y de la frecuencia inversa de los documentos) de cada una de las preguntas de este captulo para la consulta relacin SQL. Respuesta: No se consideran las preguntas que no contienen ninguna de la palabras clave, dado que su importancia para la palabra clave es cero. El nmero de palabras en una pregunta incluye las palabras de parada. Se emplean las ecuaciones dadas en el Apartado 22.5.1.1 para calcular la importancia; el registro histrico de trminos en la ecuacin se asume que est para la base 2. Q.# # palabras 84 22 46 22 33 32 77 30 26 # SQL 1 0 1 1 1 1 0 1 1 # relatcin 1 1 1 0 1 3 1 0 1 SQL relacin SQL trm freq. trm freq. relv. 0,0170 0,0000 0,0310 0,0641 0,0430 0,0443 0,0000 0,0473 0,0544 0,0170 0,0641 0,0310 0,0000 0,0430 0,1292 0,0186 0,0000 0,0544 0,0002 0,0000 0,0006 0,0029 0,0013 0,0013 0,0000 0,0015 0,0020 relacin Total relv. relv. 0,0002 0,0029 0,0006 0,0000 0,0013 0,0040 0,0002 0,0000 0,0020 0,0004 0,0029 0,0013 0,0029 0,0026 0,0054 0,0002 0,0015 0,0041

1 4 5 6 7 8 9 14 15

22.16 Explquese la diferencia entre un falso positivo y un rechazo falso. Si es fundamental que las consultas de recuperacin de la informacin no pierdan ninguna informacin importante, explicar si es aceptable tener falsos positivos o rechazos falsos. Por qu? Respuesta: Los sistemas de recuperacin de la informacin localizan documentos que contienen una determinada palabra clave, utilizando un ndice que asocia esta palabra clave sobre un conjunto de identificadores de documentos contenidos en l. Cada palabra clave puede estar contenida en un gran nmero de documentos. Para ahorrar espacio de almacenamiento para los identificadores de los documentos correspondientes a una palabra clave, el ndice, a veces, se almacena de tal manera que la recuperacin es aproximada. El error en esta aproximacin puede conducir a una de las dos situaciones: un rechazo falso sucede cuando algunos documentos importantes no se recuperan; un falso positivo tiene lugar cuando se recuperan algunos documentos sin importancia. De este modo, para las consultas de recuperacin de la informacin que tienen la obligacin de no perder informacin relevante, es aceptable tener falsos positivos, pero no rechazos falsos. 22.17 Supngase que se desea hallar documentos que contengan como mnimo k palabras clave de un

conjunto dado de n. Supngase tambin 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 algoritmo eficiente para hallar el conjunto de documentos deseado. Respuesta: Sea S un conjunto de n palabras clave. Un algoritmo para encontrar todos los documentos que contienen al menos k de estas palabras clave, se presenta a continuacin: Este algoritmo calcula un contador de referencia por cada identificador de documentos. Un contador de referencia de i para un identificador de documentos d significa que, al menos, i de las palabras claves en S estn presentes en el documento identificadas por d. El algoritmo mantiene una lista de registros, cada uno con dos campos: un identificador de documentos y el contador de referencia para este identificador. Esta lista se mantiene ordenada sobre el campo identificador de documentos. inicializar la lista L a la lista vaca; for (cada palabra clave c en S) do begin 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 lista L) 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) then producir R; Ntese que la ejecucin de la segunda instruccin for hace que la lista D se fusione con la lista L . Dado que las listas L y D estn ordenadas, el tiempo empleado en esta fusin es proporcional a la suma de las longitudes de las dos listas. As, el algoritmo se ejecuta en tiempo (como mximo) proporcional a n veces la suma total de los nmeros de identificadores de documentos correspondientes a cada palabra clave en S.

CAPITULO

23

TIPOS DE DATOS AVANZADOS Y NUEVAS APLICACIONES


Este captulo cubre los tipos de datos automticos y las nuevas aplicaciones, incluyendo bases de datos temporales, bases de datos espaciales, geogrficas y bases de datos porttiles y personales. En concreto, en los ltimos aos ha aumentado la importancia de los tipos de datos mencionados anteriormente y los sistemas de bases de datos comerciales estn incrementando la provisin de complementos para tales tipos de datos, por medio de ampliaciones a los sistemas de bases de datos, denominadas de diferentes maneras cartuchos o extenders. Este captulo 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 el trabajo individual de un primer curso. Cambios a la tercera edicin: En la edicin anterior esta materia formaba parte del captulo 21, pero en esta edicin ese captulo se dividido en dos, los captulos 22 y 23. El tratamiento de los rboles R se ha ampliado con una descripcin informal sobre los algoritmos de insercin y borrado. Se han actualizado las comunicaciones mviles de datos.

Ejercicios
23.1 Indquense los dos tipos de tiempo y en lo que se diferencian. Indquese el motivo de que haya dos tipos de tiempo asociados con cada tupla. Respuesta: Una base de datos temporal modela los cambios en los estados de algunos aspectos del mundo real. Los intervalos de tiempo que relacionan los datos almacenados en una base de datos temporal pueden ser de dos tipos: momento vlido y momento de transaccin. El momento vlido de un hecho es el conjunto de intervalos de tiempo en el que el hecho es cierto en el mundo real. El momento de transaccin de un hecho es el conjunto de intervalos de tiempo en el que el hecho es actual en el sistema de la base de datos. Slo el momento de transaccin depende del sistema y se genera por el sistema de la base de datos. Supngase que se considera el ejemplo de la base de datos del banco para que sea bitemporal. Slo el concepto de momento vlido permite al sistema responder a consultas tales como: Cul era el saldo de Santos hace dos das? Por otro lado se pueden responder, basndose en el momento de transaccin, a consultas como: Qu se grab hace dos das como saldo de Santos? La diferencia entre los dos momentos es importante. Por ejemplo, supngase que hace tres das el cajero cometi un error al introducir el saldo de Santos y que hasta ayer no se corrigi el error. Este error significa que hay una diferencia entre los resultados de las dos consultas ( si ambas se ejecutasen hoy). 23.2 Indquese si se conservarn las dependencias funcionales si se convierte una relacin en una relacin temporal aadindole un atributo temporal. Indquese el modo en que se resuelve el problema en las bases de datos temporales. Respuesta: Las dependencias funcionales pueden violarse cuando se amplia una relacin para que incluya un atributo temporal. Por ejemplo, supngase que se aade un atributo temporal a la relacin cuenta, en el ejemplo de la base de datos bancaria. La dependencia nmero-cuenta g saldo puede ser violada, dado que el saldo de un cliente cambiara con el tiempo. Para solucionar este problema los sistemas de bases de datos temporales tienen un nocin ligeramente diferente de dependencia funcional, denominada dependencia funcional temporal. Por ejemplo, la dependencia funcional temporal nmero-cuenta gT saldo sobre el esquema-cuenta significa que, por cada instancia cuenta de esquema-cuenta, todas las instantneas de cuenta cumplen la dependencia funcional nmero-cuenta g saldo; es decir que en cualquier momento, cada cuenta tendr un solo saldo bancario correspondiente a l. 23.3 Supngase que se tiene una relacin que contiene las coordenadas x, y junto con los nombres de varios restaurantes. Supngase tambin que las nicas consultas que se plantearn sern de la forma siguiente: La consulta especifica un punto y pregunta si hay algn restaurante exactamente en ese punto. Indquese el tipo de ndice que sera preferible, rbol R o rbol B. Indquese el motivo. Respuesta: La consulta dada no es una consulta por rangos, dado que slo requiere buscar por un punto. Esta consulta se puede responder de forma eficiente mediante un ndice rbol B sobre el par de atributos (x, y). 23.4 Considrense datos vectoriales bidimensionales en que los elementos de datos no se solapan. Indquese si es posible convertir esos datos vectoriales en datos lineales. En caso de que sea posible, indquense los inconvenientes de almacenar los datos lineales obtenidos de esa conversin en lugar de los datos vectoriales originales. Respuesta: Para convertir datos vectoriales que no se solapan en datos lineales, se definen los valores para justamente esos pxeles que se encuentran sobre cualquiera de los elementos de datos (regiones); los otros pxel tienen un valor por defecto. Los inconvenientes de este enfoque son: prdida de precisin en la informacin de la localizacin ( dado que los datos lineales pierden resolucin), un requerimiento de almacenamiento mucho mayor y la

prdida de informacin de resumen (como la forma de una regin). 23.5 Supngase que se dispone de una base de datos espacial que soporta consultas regionales (con regiones circulares) pero no consultas de vecino ms prximo. Descrbase un algoritmo para encontrar el vecino ms prximo haciendo uso de varias consultas regionales. Respuesta: Supngase que se desea buscar el vecino ms prximo de un punto P, en una base de datos de puntos en el plano. La idea es emitir mltiples consultas regionales centradas en P. Cada consulta regional cubre una rea de puntos mayor que la consulta anterior. El procedimiento se detiene cuando el resultado de una consulta regional no est vaco. Se calcula la distancia desde P a cada punto dentro de esta regin y se publica el conjunto de puntos ms cercanos. 23.6 Supngase que se desean almacenar segmentos rectilneos en un rbol R. Si un segmento rectilneo no es paralelo a los ejes, su caja lmite puede ser grande y contener una gran rea vaca. Descrbase el efecto en el rendimiento de tener cajas lmite de gran tamao en las consultas que piden los segmentos rectilneos que interceptan una regin dada. Descrbase brevemente una tcnica para mejorar el rendimiento de esas consultas y aprtese un ejemplo de sus ventajas. Sugerencia: se pueden dividir los segmentos en partes ms pequeas. Respuesta:

Figura 21.17 a) : Representacin de un segmento mediante un rectngulo

Figura 21.17 b) : Divisin de cada segmento en cuatro partes. La cajas lmite de gran tamao tienden a solapar incluso donde la regin de solape no contiene ninguna informacin. La Figura 21.17 a) muestra una regin R dentro de la cual se ha de localizar un segmento. Ntese que, aunque ninguno de los cuatro segmentos se encuentra en R, debido a las cajas lmite grandes, se han de verificar cada una de las cuatro cajas lmite para confirmar esto. Se observa una mejora significativa en la Figura 21.17 b), donde cada segmento est dividido en mltiples partes, cada una con su propia caja lmite. En el segundo caso, la caja R no forma parte de las cajas indexadas por el rbol R. En

general, el dividir un segmento en partes ms pequeas origina que las cajas lmite lo sean tambin, malgastndose menos el rea. 23.7 Se da un procedimiento recursivo para calcular de manera eficiente la mezcla espacial de dos relaciones con ndices de rbol R. (Sugerencia: Utilcense cajas lmite para verificar si las entradas de hojas bajo 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 lmite de n1 y n2 no interseccionan) return; if(tanto n1 como n2 son hojas) output todos los pares de entradas (e1, e2) tales que e1n1 e2n2 y e1 e2solapan if(n1 no es una hoja) NS1 = conjunto de hijos de n1; else NS1 = { n1 }; if(n2 no es una hoja) NS2 = conjunto de hijos de n2; else NS2 = { n2 }; for each ns1 en NS1 y ns2 en NS2; SpJoin(ns1, ns2); end 23.8 Estdiese el soporte de los datos espaciales ofrecido por el sistema de bases de datos que se est utilizando e implemntese lo siguiente: a. Un esquema para representar la ubicacin geogrfica de los restaurantes y caractersticas como la cocina que se sirve en cada restaurante y su nivel de precios. b. Una consulta para hallar los restaurantes econmicos que sirven comida india y que se hallan a menos de nueve kilmetros de casa del lector (supngase cualquier ubicacin para la casa del lector). c. Una consulta para hallar, para cada restaurante, su distancia al restaurante ms cercano que sirve la misma cocina y con el mismo nivel de precios. Respuesta: PENDIENTE DE RESOLVER 23.9 Indquense los problemas que se producen en un sistema de medios continuos si los datos se entregan demasiado lentamente o demasiado rpidamente. Respuesta: Los sistemas de medios continuos generalmente manejan un gran nmero de datos, que se han de llevar a una velocidad constante. Supngase que el sistema aporta los fotogramas de las imgenes para una televisin. La velocidad de entrega de los datos desde el sistema, debera corresponderse con la velocidad de visualizacin de los fotogramas de la televisin. Si la velocidad de entrega fuese demasiado lenta, la pantalla peridicamente se paralizara o se quedara en blanco dado que, durante un tiempo, no habra nuevos datos que visualizar. Por el contrario, si la velocidad de entrega fuese demasiado rpida, la memoria intermedia de datos con destino al televisor se desbordara, causando una prdida de datos; los datos perdidos no se visualizaran nunca. 23.10 Descrbase el modo en que las ideas subyacentes a la organizacin RAID (Apartado 11.3) pueden

utilizarse en un entorno de datos de difusin, donde puede que haya ocasionalmente ruido que impida la recepcin de parte de los datos que se estn transmitiendo. Respuesta: Los conceptos de RAID se pueden emplear para mejorar la fiabilidad de la difusin de datos a travs de sistemas inalmbricos. Cada bloque de datos que se va a transmitir se divide en unidades de igual tamao. Se calcula un valor de suma de chequeo para cada unidad y se aade a la unidad. Ahora se calculan los datos de paridad para estas unidades. Una suma de chequeo para el dato de paridad se aade al dato, para formar una unidad de paridad. Tanto las unidades de datos como las de paridad se difunden, una tras otra, como una sola transmisin. En la recepcin de la difusin, el receptor emplea las sumas de chequeo para verificar si cada unidad se recibe sin errores. Si se encuentra una unidad con errores, se puede reconstruir desde las otras unidades. El tamao de la unidad se debe elegir cuidadosamente. Las unidades pequeas no slo requieren calcular ms sumas de chequeo, sino que la posibilidad de que una explosin de ruido corrompa ms de una unidad, es tambin alta. El problema de emplear unidades grandes es que aumenta la probabilidad de que el ruido afecte a una unidad; por lo tanto, ha de haber un equilibrio. 23.11 Indquense tres caractersticas principales de la informtica mvil en redes inalmbricas que son diferentes de las de los sistemas distribuidos tradicionales. Respuesta: Algunas de las principales caractersticas que los diferencian son las siguientes. En los sistemas distribuidos, el que un anfitrin se desconecte de la red se considera un fallo, mientras que se permite como una caracterstica de los sistemas porttiles. Los sistemas distribuidos se administran generalmente de forma centralizada mientras que, en las computadoras porttiles, cada ordenador personal que forma parte del sistema se administra por el usuario (propietario) de la mquina y hay, si acaso, una pequea administracin central. En los sistemas distribuidos convencionales, cada mquina tiene una localizacin determinada y una direccin de red. Esto no es cierto para las computadoras porttiles y, de hecho, es lo opuesto al propsito de la informtica mvil. Las consultas hechas sobre un sistema de computacin mvil pueden implicar la localizacin y velocidad de un ordenador anfitrin. En un sistema distribuido, se permite a cada ordenador un tamao arbitrario y puede consumir gran cantidad de energa elctrica (casi) ininterrumpidamente. Los sistemas mviles generalmente tienen pequeos ordenadores que funcionan a baja potencia, con pequeas bateras. 23.12 Indquense tres factores que haya que considerar en la optimizacin de las consultas para la informtica mvil que no se consideren en los optimizadores de consultas tradicionales. Respuesta: El factor de influencia ms importante sobre el coste del procesamiento de consultas, en un sistema tradicional de bases de datos, es la E/S a disco. Sin embargo, en la informtica mvil, el minimizar la cantidad de energa requerida para ejecutar una consulta es una tarea importante en un optimizador de consultas. Para reducir el consumo de energa (la carga de las bateras) el optimizador de consultas en un ordenador mvil minimiza el tamao y el nmero 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 el tiempo de conexin y la cantidad de datos transferidos. Sin embargo, los usuarios de computadoras porttiles generalmente cargan con el coste de acuerdo a estos parmetros. Por ello, se deberan minimizar estos parmetros mediante un optimizador de consultas de la computadora porttil.

23.13 Defnase un modelo en que se difundan repetidamente los datos, donde el medio de transmisin se modele como un disco virtual Descrbase el modo en que el tiempo de acceso y la velocidad de transferencia de datos del disco virtual se diferencian de los valores correspondientes a un disco duro normal. Respuesta: Se pueden distinguir dos modelos de difusin de datos. En el caso de un medio de difusin puro, donde el receptor no puede comunicar con el difusor, este transmite datos con ciclos de transmisin peridicos del conjunto de datos, de tal manera que los nuevos receptores puedan ponerse al corriente de toda la informacin difundida. Por ello, los datos se difunden en un ciclo continuo. Este perodo del ciclo se puede considerar semejante al peor caso de latencia rotacional en una unidad de disco. Aqu no hay concepto del tiempo de bsqueda. El valor para la latencia del ciclo depende de la aplicacin, pero es posible que sea al menos 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 tambin se puede aadir un equivalente de latencia de acceso a disco, entre el receptor enviando una peticin y el difusor recibiendo la peticin y respondindola. La latencia es una funcin del volumen de peticiones y del ancho de banda del medio de difusin. A su vez, las consultas pueden cumplirse sin ni siquiera enviar una peticin, dado que el difusor da la casualidad que enva los datos en un ciclo, o basados en alguna otra peticin de los receptores. A pesar de todo, la latencia es probable que sea al menos del orden de segundos, de nuevo muy superior que los correspondientes valores para un disco duro. Un tpico disco duro puede transferir datos a la velocidad de 1 a 5 mega bytes por segundo. Por el contrario, el ancho de banda de una canal de difusin es generalmente de slo unos pocos kilo bytes por segundo. La latencia total es probablemente del orden de segundos a cientos o incluso miles de segundos, en comparacin con los pocos mili segundos de un disco duro. 23.14 Considrese una base de datos de documentos en la que todos los documentos se conserven en una base de datos central. En las computadoras porttiles se guardan copias de algunos documentos. Supngase que la computadora porttil A actualiza una copia del documento 1 mientras est desconectada y que, al mismo tiempo, la computadora porttil B actualiza una copia del documento 2 mientras est desconectada. Mustrese el modo en que el esquema del vector versin puede asegurar la actualizacin adecuada de la base de datos central y de las computadoras porttiles cuando se vuelva a conectar una computadora porttil. Respuesta: Sea C la computadora sobre la que se carga la base de datos central. Cada computadora porttil (anfitrin) i almacena, con su copia de cada documento d, una versin - vector que es un conjunto de nmeros de versin Vd,i,j con una entrada por cada otro anfitrin j, que almacena una copia del documento d que posiblemente pudo actualizar. El anfitrin A actualiza el documento 1 mientras est desconectado de C. Por ello, de acuerdo al esquema del vector versin, el nmero de versin V1,A,A se incrementa en uno. Supngase ahora que el anfitrin A se reconecta a C. Esta pareja intercambia el vector versin y encuentra que el nmero de versin V1,A,A es, en uno, mayor que V1,C,A (asumiendo que la copia del documento 1 almacenada en el anfitrin A, fue actualizada muy recientemente slo por el anfitrin A). Siguiendo el esquema del vector versin, la versin del documento 1 en C se actualiza y se refleja el cambio mediante un incremento en el nmero de versin V1,C,A. Ntese que estos son los nicos cambios hechos por el anfitrin. Anlogamente, cuando el anfitrin B se conecta al anfitrin C, se intercambian los vectores versin y el anfitrin B encuentra que V1,B,A es, en uno, menor que V1,C,A . De este modo, el nmero de versin V1,B,A se incrementa en uno y la copia del documento 1 se actualiza en el anfitrin B. As se ve que el esquema del vector versin asegura la adecuada actualizacin de la base de datos central, justamente para el caso considerado. Este argumento se puede generalizar fcilmente para el caso en que se realicen, fuera de lnea, mltiples actualizaciones a copias del documento 1 sobre el anfitrin A, as como sobre el anfitrin B y el C. Es similar el argumento para las actualizaciones fuera de lnea del documento 2. 23.15 Se da un ejemplo para mostrar que el esquema del vector versin no asegura la secuenciabilidad. (Sugerencia: Utilcese el ejemplo del Ejercicio 23.14 con la suposicin de que los documentos 1 y 2 estn disponibles en las dos computadoras porttiles A y B, y tngase en cuenta la posibilidad de que un documento

pueda leerse aunque no se actualice). Respuesta: Considrese el ejemplo dado en el ejercicio anterior. Supngase que los anfitriones A y B no estn conectados entre s. A su vez, supngase que copias idnticas de los documentos 1 y 2 estn almacenadas en los anfitriones A y B. Sea {X = 5} el contenido inicial del documento 1 y {X = 10} el del documento 2. Si prdida de generalidad, supngase que se inicializan a cero todos los vectores versin. Supngase que el anfitrin A actualiza el nmero de su copia del documento 1 con el de su copia del documento 2. Entonces, el contenido de ambos documentos (en el anfitrin A) son ahora {X = 10} . El nmero de versin V1,A, A se ha incrementado en 1. Mientras el anfitrin B est desconectado del anfitrin A, actualiza el nmero en su copia del documento 2 con el de su copia en el documento 1. As, los contenidos de ambos documentos (en el anfitrin B) son ahora {X = 5} . El nmero de versin V2,A, A se ha incrementado en 1. Posteriormente, cuando se conecten entre s los anfitriones A y B, intercambiarn vectores versin. El esquema del vector versin actualiza la copia del documento 1en el anfitrin B a {X = 10} y la copia del documento 2 en el anfitrin A a {X = 5} . As, las dos copias de cada documento son idnticas, a saber, el documento 1 contiene {X = 10} y el documento 2 {X = 5}. Sin embargo, ntese que una planificacin secuencial de ambas actualizaciones (una sobre el anfitrin A y otra sobre el B), implicara que ambos documentos tendran el mismo contenido. Por lo tanto, este ejemplo muestra que el esquema del vector versin no asegura la secuencialidad.

CAPITULO

24

PROCESAMIENTO AVANZADO DE TRANSACCIONES


En este captulo se va mas all de los esquemas de procesamiento bsico de transacciones discutidos previamente, tratando conceptos de procesamiento de transacciones ms avanzados, incluyendo monitores de procesamiento de transacciones, sistemas de flujos de trabajo, bases de datos en memoria principal, sistemas de transacciones en tiempo real y gestin de transacciones de larga duracin por medio de transacciones anidadas, transacciones multinivel y niveles dbiles de consistencia. El captulo finaliza tratando los niveles dbiles de consistencia empleados para gestionar los sistemas de bases de datos mltiples. Este captulo es adecuado para un curso avanzado. La secciones sobre monitores TP y flujos de trabajo pueden tratarse tambin en un curso de introduccin, como material de trabajo individual. Cambios a la tercera edicin: El tratamiento de los sistemas de copia de seguridad remotos se ha trasladado desde al captulo sobre recuperacin, mientras que el procesamiento de transacciones, en bases de datos mltiples, se ha trasladado a este captulo desde la posicin anterior, en el captulo de bases de datos distribuidas.

Ejercicios
24.1 Explquese el modo en que los monitores TP administran los recursos de la memoria y del procesador, de manera ms efectiva que los sistemas operativos habituales. Respuesta: En un sistema operativo tpico, cada cliente se representa por un proceso que ocupa mucha memoria. As mismo, las sobrecargas de los procesos multitarea son elevadas. Un monitor TP tiene ms de proveedor de servicios que de entorno para la ejecucin de procesos cliente. Los procesos cliente se ejecutan en sus propios sitios y envan solicitudes al monitor TP, siempre que desean aprovecharse de algn servicio. El mensaje se encamina al servidor adecuado por medio del monitor TP, devolviendo al cliente los resultados del servicio. La ventaja de este esquema es que el mismo proceso servidor puede servir simultneamente a varios clientes, empleando mltiples hebras. Esto ahorra espacio de memoria y reduce los costes de CPU en la conservacin de las propiedades ACID y en la planificacin de procesos enteros. Incluso sin mltiples hebras, el monitor TP puede cambiar dinmicamente el nmero de servidores en ejecucin, en funcin de cualquier factor que afecte al buen rendimiento. Todo esto no es posible con una configuracin de sistema operativo tpico. 24.2 Comprense las caractersticas de los monitores TP con las proporcionadas por los servidores Web que soportan servlets (estos servidores se han denominado TP-lite). Respuesta: PENDIENTE. 24.3 Considrese el proceso de admisin de nuevos alumnos en la universidad (o de nuevos empleados en la organizacin). a. Se da una imagen de alto nivel del flujo de trabajo, comenzando por el procedimiento de matrcula de los estudiantes. b. Indquense los estados de terminacin aceptables y los pasos que implican intervencin de personas. c. Indquense los posibles errores (incluido el vencimiento del tiempo lmite) y el modo en que se tratan. d. Estdiese 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 tambin necesitan la gestin de la concurrencia y de la recuperacin. Indquense tres motivos por los que no se puede aplicar simplemente un sistema relacional de bases de datos empleando bloqueo de dos fases, registro histrico de operaciones fsicas 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 de una tarea puede estar condicionado al resultado (tales como comprometido o abortado) de algunas otras tareas. Todas las tareas no se pueden ejecutar independiente y concurrentemente, empleando compromiso de dos fases slo para compromisos atmicos. b. Cuando termine una tarea, habr de exponer sus actualizaciones para que otras tareas, ejecutando las mismas entidades de procesamiento, no tengan que esperar mucho. El bloqueo de dos fases es una forma demasiado 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 ante fallos. Una ejecucin de flujo de trabajo debe finalizar en un estado de terminacin aceptable. Por esto y por la exposicin temprana de actualizaciones no comprometidas, el procedimiento de recuperacin ser bastante

diferente. Habrn de emplearse algunas formas de registro histrico lgico y transacciones de compensacin. Adems, para realizar una recuperacin en avance de un flujo de trabajo fallido, las rutinas de recuperacin necesitan restaurar la informacin sobre el estado del planificador y las tareas, no slo los elementos de datos actualizados. Por esto no se puede usar un simple registro histrico de escritura anticipada. 24.5 Si toda la base de datos cabe en la memoria principal, indquese si contina haciendo falta un sistema de bases de datos para administrar los datos. Explquese la respuesta. Respuesta: Incluso si toda la base de datos cabe en memoria principal, se necesita un sistema de gestin de bases de datos para realizar tareas como control de concurrencia, recuperacin, registro histrico, etc., a la hora de conservar las propiedades ACID de las transacciones. 24.6 Considrese un sistema de bases de datos en memoria principal que se recupera de un fallo del sistema. Explquense las ventajas relativas de Volver a cargar toda la base de datos en memoria principal, antes de reanudar el procesamiento de las transacciones 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 alta velocidad o accesos a datos en tiempo real con la garanta de que, una vez que se inicien, no tendrn que esperar por accesos a disco para coger los datos. Sin embargo, ninguna transaccin 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 iniciarse inmediatamente; sin embargo, las transacciones pueden ver largos e impredecibles retrasos en los accesos a disco, hasta que toda la base de datos se cargue en memoria. 24.7 En la tcnica de compromiso en grupo, cuntas transacciones deben formar parte de cada grupo? Explquese la respuesta. Respuesta: Como los registros del registro histrico se escriben para almacenamiento estable en mltiplos de un bloque, se deberan comprometer los grupos de transacciones de tal manera que el ltimo bloque, conteniendo los registros del registro histrico del grupo actual, est casi lleno. 24.8 Indquese si un sistema de transacciones de alto rendimiento es necesariamente un sistema de tiempo real. Por qu s, o por qu no? Respuesta: Un sistema de alto rendimiento no es necesariamente un sistema de tiempo real. En un sistema de alto rendimiento la principal finalidad es ejecutar cada transaccin tan rpido como sea posible, teniendo ms recursos y utilizndolos mejor. De este modo la velocidad media y el tiempo de respuesta son las principales cosas a optimizar. En un sistema en tiempo real, la velocidad no es el tema central. Aqu, cada transaccin tiene una fecha lmite y tener cuidado de que finalice dentro de la fecha lmite o emplee un tiempo extra, tan pequeo como sea posible, es el tema crtico. 24.9 En un sistema de bases de datos que utilice el registro histrico de escritura adelantada indquese, en el peor caso posible, el nmero de accesos a disco necesarios para leer un elemento de datos. Explquese el motivo por el que esto supone un problema para los diseadores de sistemas de bases de datos de tiempo real. Respuesta: En el peor de los casos, una lectura puede causar que una pgina del bfer se escriba en disco

(precedida por los correspondientes registros del histrico), seguido por la lectura desde disco de la pgina que contiene los datos a acceder. Esto emplea dos o ms accesos a disco y el tiempo requerido es varios ordenes de magnitud mayor que la referencia de memoria principal, requerida en el mejor de los casos. Por lo tanto, la variancia del tiempo de ejecucin de una transaccin es muy alta y slo se puede estimar pobremente. Por eso es difcil planificar los calendarios que necesitan finalizar en una fecha lmite. 24.10 Explquese el motivo por el que puede que no resulte prctico exigir la secuencialidad para las transacciones de larga duracin. Respuesta: En presencia de transacciones de larga duracin, el tratar de asegurar secuencialidad tiene varios inconvenientes: a. Con un esquema de espera para el control de concurrencias, las transacciones de larga duracin forzarn largos tiempos de espera. Esto significa que el tiempo de respuesta ser alto, la concurrencia ser baja, con lo que sufrir el rendimiento. Tambin se incrementa la probabilidad de impases. b. Con un esquema basado en marcas temporales, mucho trabajo hecho por una transaccin de larga duracin se perder si se ha de abortar. c. Las transacciones de larga duracin son generalmente interactivas y es muy difcil imponer secuencialidad con interactividad. As, el requerimiento de secuencialidad no es prctico. Alguna otra nocin de consistencia de base de datos ha de emplearse para soportar transacciones de larga duracin. 24.11 Considrese un proceso con varias hebras que entrega mensajes desde una cola duradera de mensajes persistentes. Pueden ejecutarse de manera concurrente diferentes hebras, que intentan entregar mensajes diferentes. En caso de fallo en la entrega, el mensaje debe restaurarse en la cola. Modlense las acciones que lleva a cabo cada hebra como una transaccin multinivel, de manera que no haga falta mantener los bloqueos en la cola hasta que se entregue cada mensaje. Respuesta: Cada hebra puede modelarse como una transaccin T que toma un mensaje desde la cola y lo dirige. Se pueden escribir transacciones T como una transaccin multinivel, con subtransacciones T1 y T2. La subtransaccin T1 saca un mensaje de la cola y la subtransaccin T2 lo dirige. Cada subtransaccin libera bloqueos una vez que se completa, permitiendo a otras transacciones acceder a la cola. Si falla la transaccin T2 en la conduccin del mensaje, la transaccin T1 se deshar mediante la invocacin de una transaccin compensadora, que restaurar el mensaje en la cola. 24.12 Disctanse las modificaciones que hay que hacer en cada uno de los esquemas de recuperacin tratados en el Captulo 17, si se permiten las transacciones anidadas. Explquense tambin las diferencias que se producen si se permiten las transacciones multinivel. Respuesta: El algoritmo de recuperacin avanzada del Apartado17.9 : La operacin rehacer, que repite la historia, es igual que antes. A continuacin se discute la manera en que se gestiona la operacin rehacer. Recuperacin con transacciones anidadas: Cada subtransaccin necesita tener un nico TID, porque una subtransaccin fallida podra tener que ser independientemente retrocedida y reinicializada. Si una subtransaccin falla, las acciones de recuperacin dependen de si la transaccin de nivel superior no terminada debe abortar o continuar. Si debe abortar, todas las subtransacciones, terminadas o no, se deshacen mediante una lectura hacia atrs del registro histrico (esto es posible porque los bloqueos, sobre los elementos de datos modificados, no se liberan tan pronto como finaliza una subtransaccin). Si la transaccin anidada va a continuar, solo se deshace la transaccin fallida y

despus continua la transaccin de nivel superior. En el caso de un fallo del sistema, dependiendo de la aplicacin, puede ser necesario abortar la transaccin anidada entera o (por ejemplo en el caso de transacciones de larga duracin) las subtransacciones incompletas y reanudar la transaccin anidada. Si se debe abortar la transaccin anidada, la vuelta atrs puede hacerse de la manera usual mediante el algoritmo de recuperacin, durante la operacin deshacer. Si la transaccin anidada debe reiniciarse, cualquier subtransaccin incompleta que necesite ser retornada puede hacerlo como antes. Para reiniciar la transaccin anidada, la informacin sobre el estado de la transaccin, tal como los bloques mantenidos y el estado de la ejecucin, debe haberse anotado en el histrico y se debe restaurar durante la recuperacin. Las transacciones por lotes pequeos (discutidas en el Apartado 21.2.7) son un ejemplo de transacciones anidadas que se deben reiniciar. Recuperacin con transacciones multinivel: Adems de lo hecho en el caso anterior, se han de gestionar los problemas causados por la exposicin de actualizaciones realizadas por subtransacciones comprometidas, de transacciones de nivel superior incompletas. Una subtransaccin comprometida puede tener bloqueos liberados que almacena, para que la transaccin compensadora los adquiera. Esto es claro en el caso de fallos de transacciones, pero es ms complicado en el caso de fallos del sistema. El problema es que una subtransaccin de nivel inferior a, de una transaccin de nivel superior A, puede tener bloqueos liberados que han de ser readquiridos para compensar a A durante la recuperacin. Desafortunadamente, puede haber alguna otra subtransaccin de nivel inferior b, de una transaccin de nivel superior B, que arranque y adquiera los bloqueos liberados por a, antes de que finalice A. De este modo, los registros deshacer para b pueden preceder la operacin del registro comprometido por A. Pero si b no hubiera terminado en el momento en que falla el sistema, primero debe ser retrocedida y liberada de sus bloqueos, para permitir a la transaccin compensadora de A readquirir los bloqueos. Esto complica la operacin deshacer, ya no puede hacerse en una lectura hacia atrs del registro histrico. La recuperacin multinivel se describe con detalle en David Lomet, MLR: Un mtodo de recuperacin para sistemas multinivel, ACM SIGMOD Conf. on the Management of Data 1992, San Diego. Recuperacin en un esquema de paginacin en la sombra : En un esquema basado en la paginacin en la sombra, la implementacin se complicar mucho si las subtransacciones se van a ejecutar de manera concurrente. Si se van a ejecutar secuencialmente, la tabla de pginas actual se copia a la tabla de pginas en la sombra, al final de cada subtransaccin. La idea general de recuperacin es, entonces, similar al esquema basado en registros histricos, excepto en que las operaciones deshacer y rehacer se hacen mucho ms fcilmente, como en el Apartado 17.5. 24.13 Indquese la finalidad de las transacciones compensadoras. Presntense dos ejemplos de su utilizacin. Respuesta: Una transaccin compensadora se emplea para realizar un deshacer semntico de los cambios hechos previamente por transacciones comprometidas. Por ejemplo, una persona podra ingresar un cheque en su cuenta de ahorro. Entonces la base de datos se actualizara para reflejar el nuevo saldo. Dado que lleva unos pocos das dar el visto bueno al cheque, podra descubrirse ms tarde que el cheque se rechaz, en cuyo caso se ejecutara una transaccin de compensadora para restar el importe del cheque rechazado desde la cuenta del impositor. Otro ejemplo de cuando se empleara una transaccin compensadora es en un programa de evaluacin. Si la calificacin de un estudiante en una tarea se va a cambiar despus de haberse registrado, un programa compensador (generalmente una opcin del propio programa de evaluacin) se ejecuta para cambiar la calificacin y rehacer los promedios, etc.

24.14 Considrese un sistema con varias bases de datos en el que se garantice que, como mximo, est activa una transaccin global en un momento dado y que cada sistema local asegura la secuencialidad local. a. Sugiranse maneras de que el sistema con varias bases de datos pueda asegurar que haya como mximo una transaccin global activa, en cualquier momento dado. b. Demustrese, mediante un ejemplo, que resulta posible que se produzca una planificacin global no secuenciable, pese a estas suposiciones. Respuesta: a. Se puede tener un elemento de datos especial en algn sitio sobre el que, antes de iniciar una transaccin global, se tenga un bloqueo. El bloqueo debera liberarse despus que se complete la transaccin. Esto asegura el requerimiento de una sola transaccin global activa. Para reducir la dependencia sobre el sitio particular en que tiene lugar, se puede generalizar la solucin seleccionando el esquema para elegir uno de los sitios actuales que sea el coordinador, y requerir que el bloqueo se solicite sobre el elemento de datos que reside en el coordinador elegido actualmente. b. La siguiente planificacin implica dos sitios y cuatro transacciones. T1 y T2 son transacciones locales ejecutndose en los sitios 1 y 2 respectivamente. TG1 y TG2 son transacciones globales ejecutndose en ambos sitios. X1, Y1 son elementos de datos en el sitio 1, y X2, Y2 estn en el sitio 2. T1 write(Y1) T2 TG1 read(Y1) write(X2) read(X2) write(Y2) read(Y2) write(X1) read(X1) En esta planificacin , TG2 se inicia slo despus de que TG1 termine. Dentro de cada sitio hay secuencialidad local. En el sitio 1, TG2 T1 TG1 es un orden secuencial. En el sitio 2, TG1 T2 TG2 es un orden secuencial. Todava la planificacin global no es secuenciable. 24.15 Considrese un sistema con varias bases de datos en el que cada sitio local asegura la secuencialidad local y todas las transacciones globales son slo de lectura. a. Demustrese mediante un ejemplo que pueden producirse ejecuciones no secuenciables en este sistema. b. Mustrese la manera en que se podra utilizar un esquema de billete para asegurar la secuencialidad global. Respuesta: a. Se supone el mismo sistema que el de la respuesta del Ejercicio 24.14, excepto en que ahora las dos transacciones globales son de slo lectura. Considrese la planificacin siguiente. T1 write(X1) read(X1) read(X2) write(X2) read(X2) T2 TG1 TG2 read(X1) TG2

Aunque hay secuencialidad local en ambos sitios, la planificacin global no es secuenciable. b. Dado que la secuencialidad est garantizada, cualquier ciclo en el amplio sistema del grafo precedente debe implicar,al menos, dos sitios y dos transacciones globales diferentes. El esquema de billete asegura que siempre que dos transacciones globales tengan acceso a los datos de un sitio, entran en conflicto con los datos (el billete) de cada sitio. El gestor de transacciones globales controla el acceso del billete, de tal manera que las transacciones globales se ejecutan con el mismo orden secuencial en todos los sitios. As se elimina la probabilidad de su participacin en un ciclo del amplio sistema del grafo precedente

S-ar putea să vă placă și