Anda di halaman 1dari 38

Fundamentos de diseo de bases de datos Quinta edicin

ABRAHAM,SILBERSCHATZ Universidad de Yale HENRYF.KORTH Universidad de Lehigh S. SUDARSHAN Instituto tecnolgico indio, Bombay

Traduccin FERNANDO SENZ PREZ ANTONIO GARCA CORDERO JESS CORREAS FERNNDEZ Universidad Complutense de Madrid

Revisin tcnica LUIS GRAU FERNNDEZ Universidad Nacional de Educacin a Distancia

MADRID BOGOT BUENOS AIRES CARACAS GUATEMALA LISBOA MXICO NUEVA YORK PANAM SAN JUAN SANTIAGO SAO PAULO AUCKLAND HAMBURGO LONDRES MILN MONTREAL NUEVA DELHl PARS SAN FRANCISCO SIDNEY SINGAPUR ST. LOUIS TOKIO TORONTO
'!'

Contenido

Prefacio Captulo 1
1.1 1.9 1.2 1.3 1.4 1.5 1.6 1.7

XIII Introduccin
1 2 1.10 1.11 1.12 1.13 1.14 Gestin de transacciones 17 Minera y anlisis de datos 18 Arquitectura de las bases de datos 19 Usuarios y administradores de bases de datos Historia de los sistemas de bases de datos 22 Resumen 24 Ejercicios 25 Notas bibliogrficas 26

Aplicaciones de los sistemas de bases de datos

Propsito de los sistemas de bases de datos Visin de los datos 4 Lenguajes de bases de datos 7 Bases de datos relacinales 9 Diseo de bases de datos 11 Bases de datos basadas en objetos y semiestructuradas 15 1.8 Almacenamiento de datos y consultas 16

PARTE 1
Captulo 2

BASES DE DATOS RELACINALES


El modelo relacional
2.5 Valores nulos 53 2.6 Modificacin de la base de datos 2.7 Resumen 56 Ejercicios 57 Notas bibliogrficas 59 54

2.1 La estructura de las bases de datos relacinales 29 2.2 Operaciones fundamentales del lgebra relacional 36 2.3 Otras operaciones del lgebra relacional 44 2.4 Operaciones del lgebra relacional extendida 48

Captulo 3
3.1 3.2 3.3 3.4 3.5 3.6 3.7

SQL
3.8 Consultas complejas 80 3.9 Vistas 81 . 3.10 Modificacin de la base de datos 3.11 Reunin de relaciones** 90 3.12 Resumen 94 Ejercicios 95 Notas bibliogrficas 98

Introduccin 61 Definicin de datos 62 Estructura bsica de las consultas SQL Operaciones sobre conjuntos 71 Funciones de agregacin 73 Valores nulos 75 Subconsultas anidadas 76

65

84

Contenido

Captulo 4
4.1 4.2 4.3 4.4 4.5 4.6

SQL avanzado
4.7 Consultas recursivas** 126 4.8 Caractersticas avanzadas de SQL 129 4.9 Resumen 132 Ejercicios 133 Notas bibliogrficas 133

Tipos de datos y esquemas 101 Restricciones de integridad 105 Autorizacin 111 SQL incorporado 112 SQL dinmico 114 Funciones y procedimientos** 121

Captulo 5

Otros lenguajes relacinales


5.4 Resumen 151 Ejercicios 152 Notas bibliogrficas 153

5.1 El clculo relacional de tupias 137 5.2 El clculo relacional de dominios 141 5.3 Query-by-Example 144

PARTE 2
Captulo 6
6.1 6.2 6.3 6.4 6.5 6.6 6.7

DISEO DE BASES DE DATOS


Diseo de bases de datos y el modelo E-R
6.8 Diseo de una base de datos 6.8 Diseo de una base de datos para banco 6.9 Reduccin a esquemas relacionales 6.10 Otros aspectos del diseo de datos 6.11 El lenguaje de modelado UML 6.12 Resumen 200 Ejercicios 201 Notas bibliogrficas 205

Visin general del proceso de diseo 157 El modelo entidad-relacin 159 Restricciones 164 Diagramas entidad-relacin 168 Aspectos del diseo entidad-relacin 172 Conjuntos de entidades dbiles 177 Caractersticas del modelo E-R extendido 178

Captulo 7

Diseo de bases de datos relacinales


7.6 Descomposicin mediante dependencias: multivaloradas 232 211 7.7 Ms formas normales 236 7.8 Proceso de diseo de las basse de datos 7.9 Modelado de datos temporales. 7.10 Resumen 241 Ejercicios 242 Notas bibliogrficas

7.1 Caractersticas de los buenos diseos relacinales 207 7.2 Dominios atmicos y la primera forma normal 7.3 Descomposicin mediante dependencias funcionales 212 7.4 Teora de las dependencias funcionales 219 7.5 Algoritmos de descomposicin 227

245

Captulo 8

Diseo y desarrollo de aplicaciones


8.7 Autorizacin en SQL 8.8 Seguridad de las aplicaciones

8.2 Interfaces de usuario y herramientas 147 266 8.2 Interfaces Web para bases de datos 250

8.3 Fundamentos de Web 251 8.4 Servlets y JSP 255 281 8.5 Creacin de aplicaciones Web de gran tamao 8.6 Disparadores 261

8.9 Resumen 279 Ejercicios 259 Notas bibliogrficas 285

Contenido

PARTE 3
Captulo 9
9.1 9.2 9.3 9.4 9.5 9.6

BASES DE DATOS ORIENTADAS A OBJETOS Y XML


Bases de datos basadas en objetos
9.7 Implementacin de las caractersticas O-R 303 9.8 Lenguajes de programacin persistentes 304 9.9 Sistemas orientados a objetos y sistemas relacinales orientados a objetos 310 9.10 Resumen 311 Ejercicios 312 Notas bibliogrficas 315

Visin general 289 Tipos de datos complejos 290 Tipos estructurados y herencia en SQL 291 Herencia de tablas 296 Tipos array y multiconjunto en SQL 297 Identidad de los objetos y tipos de referencia en SQL 301

Captulo 10
10.1 10.2 10.3 10.4 10.5

XML
10.6 Almacenamiento de datos XML 10.7 Aplicaciones XML 342 10.8 Resumen 346 Ejercicios 348 Notas bibliogrficas 350 338

Motivacin 317 Estructura de los datos XML 320 Esquema de los documentos XML 323 Consulta y transformacin 328 La interfaz de programacin de aplicaciones de XML 337

PARTE 4 ALMACENAMIENTO DE DATOS


Captulo 11 Almacenamiento y estructura de archivos
11.1 Visin general de los medios fsicos de 11.6 Organizacin de los archivos 374 almacenamiento 355 11.7 Organizacin de los registros en archivos 378 Discos magnticos 358 11.8 Almacenamiento con diccionarios de datos 381 RAID 363 11.9 Resumen 383 Almacenamiento terciario 370 Ejercicios 384 Acceso al almacenamiento 371 Notas bibliogrficas 386

11.2 11.3 11.4 11.5

Captulo 12
12.1 12.2 12.3 12.4 12.5 12.6 12.7

Indexacin y asociacin
12.8 Comparacin de la indexacin ordenada y la asociacin 419 12.9 ndices de mapas de bits 420 12.10 Definicin de ndices en SQL 423 12.11 Resumen 424 Ejercicios 426 Notas bibliogrficas 428

Conceptos bsicos 389 ndices ordenados 390 Archivos de ndices de rbol B+ 396 Archivos de ndices de rbol B 405 Accesos bajo varias claves 406 Asociacin esttica 409 Asociacin dinmica 414

PARTE 5
Captulo 13

OTROS TEMAS
Transacciones
13.6 13.7 13.8 13.9 Recuperabilidad 446 Implementacin del aislamiento 448 Comprobacin de la secuencialidad 448 Resumen 449 Ejercicios 451 Notas bibliogrficas 453

13.1 Concepto de transaccin 433 13.2 Estados de una transaccin 436 13.3 Implementacin de la atomicidad y la durabilidad 438 13.4 Ejecuciones concurrentes 439 13.5 Secuencialidad 442

XII

Contenido

Captulo 14
14.1 14.2 14.3 14.4

Anlisis y minera de datos


455 14.5 Resumen 479 Ejercicios 481 Notas bibliogrficas

Sistemas de ayuda a la toma de decisiones Anlisis de datos y OLAP 456 Almacenes de datos 466 Minera de datos 469

482

Captulo 15
15.1 15.2 15.3 15.4

Tipos de datos avanzados y nuevas aplicaciones


15.5 Computadoras porttiles y bases de datos personales 499 15.6 Resumen 504 Ejercicios 505 Notas bibliogrficas 507

Motivacin 485 El tiempo en las bases de datos 486 Datos espaciales y geogrficos 488 Bases de datos multimedia 497

Bibliografa ndice 517

509

Este libro es una versin abreviada de la quinta edicin de Fundamentos de bases de datos (publicada por McGraw-Hill/Interamericana de Espaa a principios de 2006) y orientada a cursos de diseo de bases de datos, en el que se han omitido los aspectos avanzados y de implementacin de los sistemas gestores de bases de datos que se pueden encontrar en la versin completa. La gestin de las bases de datos ha evolucionado desde una aplicacin informtica especializada hasta convertirse en parte esencial de los entornos informticos modernos. Por tanto, el conocimiento acerca de los sistemas de bases de datos se ha convertido en una parte imprescindible de la formacin en informtica. En este texto se presentan los conceptos fundamentales de la gestin de las bases de datos. Estos conceptos incluyen aspectos del diseo de bases de datos y de los lenguajes. Este libro est orientado a un primer curso de bases de datos para los niveles tcnicos y superiores. Adems del material bsico para un primer curso, el texto tambin contiene material avanzado que se puede usar como complemento del curso o como material introductorio de un curso avanzado. En este libro se asume que se dispone de conocimientos bsicos sobre estructuras de datos bsicas, organizacin de computadoras y un lenguaje de programacin de alto nivel (tipo Pascal). Los conceptos se presentan usando descripciones intuitivas, muchas de las cuales estn basadas en el ejemplo propuesto de una entidad bancaria. Se tratan los resultados tericos importantes, pero se omiten las demostraciones formales. En lugar de las demostraciones se usan figuras y ejemplos para sugerir su justificacin. Las descripciones formales y las pruebas pueden hallarse en los artculos de investigacin y en los textos avanzados a los que se hace referencia en las notas bibliogrficas. Los conceptos y algoritmos fundamentales tratados en este libro suelen basarse en los usados en sistemas de bases de datos comerciales o experimentales ya existentes. El objetivo es presentar esos conceptos y algoritmos en un marco general que no est vinculado a ningn sistema de bases de datos en concreto. En esta versin abreviada de la quinta edicin de Fundamentos de bases de datos se ha mantenido el estilo global de las ediciones anteriores, mientras que su contenido y organizacin han evolucionado para reflejar las modificaciones que se estn produciendo en el modo en que las bases de datos se disean, se gestionan y se usan. Tambin se han tenido en cuenta las tendencias en la enseanza de los conceptos de bases de datos y se han hecho adaptaciones para facilitar esas tendencias donde ha resultado conveniente. Antes de describir el contenido del libro con detalle, se destacarn algunas de las caractersticas de la quinta edicin. Tratamiento precoz de SQL. Muchos profesores usan SQL como componente principal de sus proyectos de fin de curso (vistese el sitio Web http://www.mhe.es/silberschatz5 para ver proyectos de ejemplo). Con objeto de proporcionar a los estudiantes tiempo suficiente para realizar los proyectos, especialmente en universidades que trabajen por trimestres, resulta fundamental ensear SQL tan pronto como sea posible. Con esto en mente se han llevado a cabo varias modificaciones en la organizacin del libro:
XIII

1. Aplazar la presentacin del modelo entidad-relacin hasta la Parte 2, titulada "Diseo de bases de datos". 2. Racionalizar la introduccin del modelo relacional mediante el aplazamiento del tratamiento del clculo relacional hasta el Captulo 5, mientras se mantiene el tratamiento del lgebra relacional en el Captulo 2. 3. Dedicar dos de los primeros captulos a SQL. El Captulo 3 trata las caractersticas bsicas de SQL, incluidas la definicin y la manipulacin de los datos. El Captulo 4 trata caractersticas ms avanzadas, como las restricciones de integridad, SQL dinmico y los constructores procedimentales. Entre el material nuevo de este captulo figura un tratamiento ms amplio de JDBC, de los constructores procedimentales en SQL, de la recursin en SQL y de las nuevas caractersticas de SQL:2003. Este captulo tambin incluye una breve visin general de las autorizaciones, aunque su tratamiento detallado se pospone hasta el Captulo 8. Estas modificaciones permiten que los estudiantes comiencen a escribir consultas de SQL en una etapa inicial del curso y que se familiaricen con el empleo de los sistemas de bases de datos. Esto tambin permite a los estudiantes desarrollar una intuicin sobre el diseo de bases de datos que facilita la enseanza de las metodologas de diseo en la Parte 2 del texto. Se ha descubierto que los estudiantes aprecian mejor los aspectos del diseo de bases de datos con esta organizacin. Una parte nueva (la Parte 2) que est dedicada al diseo de las bases de datos. La Parte 2 del texto contiene tres captulos dedicados al diseo de las bases de datos y de las aplicaciones para bases de datos. Aqu se incluye un captulo (el Captulo 6) sobre el modelo entidad-relacin que contiene todo el material del captulo correspondiente de la cuarta edicin (el Captulo 2), adems de varias actualizaciones significativas. Tambin se presenta en el Captulo 6 una breve visin general del proceso de diseo de las bases de datos. Los profesores que prefieran comenzar el curso con el modelo E-R pueden empezar por este captulo sin prdida de continuidad, ya que se ha hecho todo lo posible para evitar las dependencias con cualquier captulo anterior salvo con el Captulo 1. El Captulo 7, sobre el diseo relacional, presenta el material tratado en el Captulo 7 de la cuarta edicin, pero con un estilo nuevo y ms legible. Los conceptos de diseo del modelo E-R se usan para crear una visin general intuitiva de los aspectos del diseo relacional, adelantndose a la presentacin del enfoque formal al diseo mediante dependencias funcionales y multivalo-radas y la normalizacin algortmica. Este captulo tambin incluye un apartado nuevo sobre los aspectos temporales del diseo de bases de datos. La Parte 2 concluye con un nuevo captulo, el Captulo 8, que describe el diseo y el desarrollo de las aplicaciones de bases de datos, incluidas las aplicaciones Web, los servlets, JSP, los disparadores y los aspectos de seguridad. Para atender a la creciente necesidad de proteger el software de ataques, el tratamiento de la seguridad ha aumentado significativamente respecto de la cuarta edicin. Tratamiento completamente revisado y actualizado de las bases de datos basadas en objetos y de XML. La Parte 3 incluye un captulo profundamente revisado sobre las bases de datos basadas en objetos que pone el nfasis en las caractersticas relacinales de objetos de SQL y sustituye a los captulos independientes sobre bases de datos orientadas a objetos y bases de datos relaci nales de objetos de la cuarta edicin. Se ha eliminado parte del material introductorio sobre la orientacin a objetos de cursos anteriores con el que los estudiantes estn familiarizados, al igual que los detalles sintcticos del ahora obsoleto estndar ODMG. No obstante, se han conservado conceptos importantes subyacentes a las bases de datos orientadas a objetos, incluyendo nuevo material sobre el estndar JDO para aadir persistencia a Java. La Parte 3 incluye tambin un captulo sobre el diseo y la consulta de datos XML, que se ha revisado a fondo respecto del captulo correspondiente de la cuarta edicin. Contiene un tratamiento mejorado de XML Schema y de XQuery, tratamiento del estndar SQL/XML y ms ejemplos de aplicaciones XML, incluyendo servicios Web.

Prefacio

xv

Material reorganizado sobre la minera de datos. La minera de datos y el procesamiento ana ltico en conexin son actualmente usos extremadamente importantes de las bases de datosya no slo "temas avanzados". En la Parte 5 se incluye un captulo sobre minera y anlisis de datos. El tratamiento de los temas que no se han mencionado anteriormente, como las estructuras de almacenamiento, se ha actualizado respecto de sus equivalentes de la cuarta edicin, aunque su organizacin general permanezca relativamente intacta. El tratamiento de QBE en el Captulo 5 se ha revisado, eliminando los detalles sintcticos de la agregacin y de las actualizaciones que no corresponden a ninguna implementacin real, pero se han conservado los conceptos fundamentales de QBE.

Organizacin
El texto est organizado en cinco partes principales y tres apndices. Visin general (Captulo 1). En el Captulo 1 se proporciona una visin general de la naturaleza y propsito de los sistemas de bases de datos. Se explica cmo se ha desarrollado el concepto de sistema de bases de datos, cules son las caractersticas usuales de los sistemas de bases de datos, lo que proporciona al usuario un sistema de bases de datos y cmo se comunican los sistemas de bases de datos con los sistemas operativos. Tambin se introduce un ejemplo de aplicacin de las bases de datos: una entidad bancaria que consta de muchas sucursales. Este ejemplo se usa a lo largo de todo el libro. Este captulo es de naturaleza justificativa, histrica y explicativa. Parte 1: Bases de datos relacinales (Captulos 2 a 5). El Captulo 2 introduce el modelo relacional de datos y trata de conceptos bsicos y del lgebra relacional. Este captulo tambin ofrece una breve introduccin a las restricciones de integridad. Los Captulos 3 y 4 se centran en el ms influyente de los lenguajes relacinales orientados al usuario: SQL. Mientras que el Captulo 3 ofrece una introduccin bsica a SQL, el Captulo 4 describe caractersticas de SQL ms avanzadas, incluido el modo de establecer comunicacin entre un lenguaje de programacin y una base de datos que soporte SQL. El Captulo 5 trata de otros lenguajes relacinales, incluido el clculo relacional y QBE. Los captulos de esta parte describen la manipulacin de los datos: consultas, actualizaciones, inserciones y eliminaciones, y dan por supuesto que se ha proporcionado un diseo de esquema. Los aspectos del diseo de esquemas se posponen hasta la Parte 2. Parte 2: Diseo de bases de datos (Captulos 6 a 8). El Captulo 6 ofrece una visin general del proceso de diseo de las bases de datos, con el nfasis puesto en el diseo mediante el modelo de' datos entidad-relacin. Este modelo ofrece una vista de alto nivel de los aspectos del diseo de las bases de datos y de los problemas que se hallan al capturar la semntica de las aplicaciones realistas en las restricciones de un modelo de datos. La notacin de los diagramas de clase UML tambin se trata en este captulo. El Captulo 7 introduce la teora del diseo de las bases de datos relacinales. Se tratan la teora de las dependencias funcionales y de la normalizacin, con el nfasis puesto en la motivacin y la comprensin intuitiva de cada forma normal. Este captulo comienza con una visin general del diseo relacional y se basa en la comprensin intuitiva de la implicacin lgica de las dependencias funcionales. Esto permite introducir el concepto de normalizacin antes de haber tratado completamente la teora de la dependencia funcional, que se presenta ms avanzado el captulo. Los profesores pueden decidir usar nicamente este tratamiento inicial de los Apartados 7.1 a 7.3 sin prdida de continuidad. Los profesores que empleen todo el captulo conseguirn que los estudiantes tengan una buena comprensin de los conceptos de normalizacin para justificar algunos de los conceptos ms difciles de comprender de la teora de la dependencia funcional. El Captulo 8 trata del diseo y del desarrollo de las aplicaciones. Este captulo pone nfasis en la creacin de aplicaciones de bases de datos con interfaces basadas en Web. Adems, el captulo trata de la seguridad de las aplicaciones. Parte 3: Bases de datos basadas en objetos y XML (Captulos 9 y 10). El Captulo 9 trata de las bases de datos basadas en objetos. Este captulo describe el modelo de datos relacional orientado

Prefacio

a objetos, que ampla el modelo de datos relacional para dar soporte a tipos de datos complejos, la herencia de tipos y la identidad de los objetos. Este captulo tambin describe el acceso a las bases de datos desde lenguajes de programacin orientados a objetos. El Captulo 10 trata del estndar XML para la representacin de datos, que est experimentando un uso creciente en el intercambio y el almacenamiento de datos complejos. Este captulo tambin describe los lenguajes de consultas para XML. Parte 4: Almacenamiento de datos (Captulos 11 y 12). El Captulo 11 trata de la estructura de disco, de archivos y del sistema de archivos. En el Captulo 12 se presenta una gran variedad de tcnicas de acceso a los datos, incluidos los ndices asociativos y de rbol B +. Parte 5: Otros temas (Captulos 13 a 15). El Captulo 13 se centra en los fundamentos de los sistemas de procesamiento de transacciones, incluidas la atomicidad, la consistencia, el aislamiento y la durabilidad de las transacciones, as como la nocin de la secuencialidad. El Captulo 14 introduce el concepto de almacn de datos y explica la minera de datos y el procesamiento analtico en conexin (onine analytical processing, OLAP), incluido el soporte de OLAP y del almacenamiento de datos por SQL:1999. El Captulo 15 trata de los tipos de datos avanzados y de las nuevas aplicaciones, incluidos los datos temporales, los datos espaciales y geogrficos, y los aspectos de la gestin de bases de datos mviles y personales. Apndices en Internet. Aunque la mayor parte de las nuevas aplicaciones de bases de datos usan el modelo relacional o el modelo relacional orientado a objetos, los modelos de datos de red y jerrquico se siguen usando en algunas aplicaciones heredadas. Para los lectores interesados en estos modelos de datos se ofrecen apndices que describen los modelos de datos de red y jerrquico, en los Apndices A y B respectivamente; los apndices slo se encuentran disponibles en la direccin http://www.mhe.es/silberschatz5'. Estos apndices slo estn disponibles en ingls. El Apndice C describe el diseo avanzado de bases de datos relacinales, incluida la teora de las dependencias multivaloradas, las dependencias de reunin y las formas normales de proyeccin-reunin y de dominio-clave. Este apndice est pensado para quienes deseen estudiar la teora del diseo de bases de datos relacinales con ms detalle y para los profesores que deseen hacerlo en sus cursos. De nuevo, este apndice est disponible nicamente en la pgina Web del libro.

La quinta edicin
La produccin de esta quinta edicin ha estado guiada por los muchos comentarios y sugerencias que se han recibido relativos a ediciones anteriores, por nuestras propias observaciones al ejercer la docencia en la Universidad de Yale, la Universidad de Lehigh y el IIT de Bombay y por nuestro anlisis de las direcciones hacia las que est evolucionando la tecnologa de las bases de datos. El procedimiento bsico fue reescribir el material de cada captulo, actualizando el material antiguo, aadiendo explicaciones sobre desarrollos recientes de la tecnologa de las bases de datos y mejorando las descripciones de los temas que los estudiantes hallaban difciles de comprender. Al igual que en la cuarta edicin, cada captulo tiene una lista de trminos de repaso que puede ayudar a los lectores a repasar los temas principales que se han tratado en l. La mayor parte de los captulos tambin contiene al final una seccin que ofrece informacin sobre las herramientas de software relacionadas con el tema del captulo. Tambin se han aadido ejercicios nuevos y referencias actualizadas.

Nota para los profesores


Este libro contiene material tanto bsico como avanzado, que puede que no se abarque en un solo semestre. Se han marcado varios apartados como avanzados mediante el smbolo **. Estos apartados pueden omitirse, si se desea, sin prdida de continuidad. Los ejercicios que son difciles (y pueden omitirse) tambin estn marcados mediante el smbolo "**".

Prefacio

xvn

Es posible disear los cursos usando varios subconjuntos de los captulos. A continuacin se esbozan varias de las posibilidades: Los apartados del Captulo 4 desde el Apartado 4.6 en adelante pueden omitirse en los cursos introductorios. El Captulo 5 puede omitirse si los estudiantes no van a usar el clculo relacional ni QBE como parte del curso. Los Captulos 9 (Bases de datos orientadas a objetos) y 10 (XML) pueden omitirse en los cursos introductorios. El Captulo 14, que trata de la minera de datos, puede usarse como material para estudio individual u omitirse en los cursos introductorios.

Cmo entrar en contacto con los autores y otros usuarios


Se ha hecho todo lo posible por eliminar del texto las erratas y errores. Pero, como en los nuevos desarrollos de software, probablemente queden fallos. En la pgina Web del libro se puede obtener una lista de erratas actualizada. Se agradecer que se notifique cualquier error u omisin del libro que no se encuentre en la lista de erratas actual. Nos alegrar recibir sugerencias de mejoras para el libro. Tambin son bienvenidas las contribuciones para la pgina Web del libro que puedan resultar tiles para otros lectores, como ejercicios de programacin, sugerencias de proyectos, laboratorios y tutoriales en lnea, y ayudas a la docencia. El correo electrnico debe dirigirse a db-book@cs.yale.edu. El resto de la correspondencia debe enviarse a Avi Silberschatz, Department of Computer Science, Vale University, 51 Prospect Street, P.O. Box 208285, New Haven, CT 06520-8285, EE.UU. Tambin se dispone de una lista de correo mediante la cual los usuarios del libro pueden comunicarse entre s y con los autores, y recibir actualizaciones del libro y otra informacin relacionada. La lista est moderada, por lo que en ella no se recibe correo basura. Se ruega seguir el enlace a la lista de correo de la pgina Web del libro para suscribirse.

Agradecimientos
Esta edicin se ha beneficiado de los muchos y tiles comentarios que nos han proporcionado los estudiantes que han usado las cuatro ediciones anteriores. Adems, muchas personas nos han escrito o hablado acerca del libro, y nos han ofrecido sugerencias y comentarios. Aunque no podemos mencionarlos aqu a todos, damos las gracias especialmente a los siguientes: A Hani Abu-Salem, Universidad DePaul; Jamel R. Alsabbagh, Universidad Grand Valley State; Ramzi Bualuan, Universidad Notre Dame; Zhengxin Chen, Universidad de Nebraska en Omaha; Jan Chomick, Universidad SUNY Buffalo; Qin Ding, Universidad Penn State en Harrisburg; Fran-tisek Franek, Universidad McMaster; Shashi K. Gadia, Universidad Iowa State; William Hankley, Universidad Kansas State; Randy M. Kaplan, Universidad Drexel; Mark Llewellyn, Universidad de Central Florida; Marty Maskarinec, Universidad Western Illinois; Yiu-Kai Dermis Ng, Universidad Brigham Young; Sunil Prabhakar, Universidad Purdue; Stewart Shen, Universidad Od Dominion; Anita Whitehall, Foothill College; Christopher Wilson, Universidad de Oregn; Weining Zhang, Universidad de Texas en San Antonio; todos ellos revisaron el libro y sus comentarios nos ayudaron mucho a formular esta quinta edicin. A Anastassia Ailamaki, Sailesh Krishnamurthy, Spiros Papadimitriou y Bianca Schroeder (Universidad Carnegie Mellon) por escribir el apndice que describe el sistema de bases de datos PostgreSQL. A Hakan Jakobsson (Oracle) por el apndice sobre el sistema de bases de datos Oracle. A Sriram Padmanabhan (IBM) por el apndice que describe el sistema de bases de datos DB2 de IBM.

xviii

Prefacio

A Sameet Agarwal, Jos A. Blakeley, Thierry D'Hers, Gerald Hinson, Dirk Myers, Vaqar Pirzada Bill Ramos, Balaji Rathakrishnan, Michael Rys, Florian Waas y Michael Zwilling (todos ellos de Microsoft) por el apndice sobre el sistema de bases de datos Microsoft SQL Server. A Jos Blakeley tambin por coordinar y editar el Captulo 29, y a Csar Galindo-Legaria, Goetz Graefe, Kalen. Delaney y Thomas Casey (todos ellos de Microsoft) por sus aportaciones a la edicin anterior del captulo sobre SQL Server de Microsoft. A Chen Li y a Sharad Mehrotra por ofrecer material sobre JDBC y sobre seguridad que nos ha ayudado a actualizar y ampliar el Captulo 8. A Valentn Dinu, Goetz Graefe, Bruce Hiilyer, Chad Hogg, Nahid Rahman, Patrick Schmid, Jen Storey, Prem Thomas, Liu Zhenming y, especialmente, a N.L. Sarda por su respuesta, que nos ayud a preparar la quinta edicin. A Rami Khouri, Nahid Rahman y Michael Rys por su respuesta a las versiones de borrador de los captulos de la quinta edicin. A Raj Ashar, Janek Bogucki, Gavin M. Bierman, Christian Breimann, Tom Chappell, Y. C. Chir. Laurens Damen, Prasanna Dhandapani, Arvind Hulgeri, Zheng Jiaping, Graham J. L. Kemp, Hae Choon Lee, Sang-Won Lee, Thanh-Duy Nguyen, D. B. Phatak, Juan Altmayer Pizzorno, Rajarshi Rakshit, Greg Riccardi, N. L. Sarda, Max Smolens, Nikhil Sethi y Tim Wahls por sealar errores en la cuarta edicin. A Marilyn Turnamian, cuya excelente ayuda como secretara fue esencial para la finalizacin a tiempo de esta quinta edicin. La editora fue Betsy Jones. La editora patrocinadora fue Kelly Lowery. La editora de desarrollo fue Melinda D. Bilecki. La directora del proyecto fue Peggy Selle. El director ejecutivo de mercadotecnia fue Michael Weitz. La directora de mercadotecnia fue Dawn Bercier. La ilustradora y diseadora de la cubierta fue JoAnne Schopler. El editor de copia autnomo fue George Watson. La correctora de pruebas autnoma fue Judy Gantenbein. La diseadora fue Laurie Janssen. El indexador autnomo fue Tobiah Waldron. Esta edicin se basa en las cuatro ediciones anteriores, por lo que volvemos a dar las gracias a las muchas personas que nos ayudaron con las cuatro primeras ediciones, como R. B. Abhyankar, Don Ba-tory, Phil Bernhard, Harn Boral, Paul Bourgeois, Phil Bohannon, Robert Brazile, Yuri Breitbart, Michael Carey, Soumen Chakrabarti, J. Edwards, Christos Faloutsos, Homma Farian, Alan Fekete, Shashi Ga-dia, Jim Gray, Le Gruenwald, Eitan M. Gurari, Ron Hitchens, Yannis Ioannidis, Hyoung-Joo Kim, Won Kim, Henry Korth (padre de Henry F.), Carol Kroll, Gary Lindstrom, Irwin Levinstein, Ling Liu, Da-ve Maier, Keith MarzuUo, Fletcher Mattox, Sharad Mehrotra, Jim Melton, Alberto Mendelzon, Hctor Garcia-Molina, Ami Motro, Bhagirath Narahari, Ail Nigam, Cyril Orji, Meral Ozsoyoglu, Bruce Porter. Jim Peterson, K.V. Raghavan, Krithi Ramamritham, Mike Reiter, Odinaldo Rodriguez, Mark Roth, Marek Rusinkiewicz, Sunita Sarawagi, N.L. Sarda, S. Seshadri, Shashi Shekhar, Amit Sheth, Nandit Soparkar. Greg Speegle, Dilys Thomas y Marianne Winslett. Marilyn Turnamian y Nandprasad Joshi ofrecieron ayuda como secretarias para la cuarta edicin y Marilyn tambin prepar un primer borrador del diseo de la cubierta para la cuarta edicin. Lyn Dupr edit la copia de la tercera edicin y Sara Strandtman edit el texto de la tercera edicin. Nilesh Dalvi, Sumit Sanghai, Gaurav Bhalotia, Arvind Hulgeri K.V. Raghavan, Prateek Kapadia, Sara Strandtman, Greg Speegle y Dawn Bezviner ayudaron a preparar el manual para los profesores de ediciones anteriores. La nueva cubierta es una evolucin de las cuatro primeras ediciones. La idea de usar barcos como parte del concepto de la cubierta nos la sugiri inicialmente Bruce Stephan. Finalmente, Sudarshan quiere agradecer a su esposa, Sita, su amor y su apoyo, y a su hijo Madhur su amor. Hank quiere agradecer a su mujer, Joan, y a sus hijos, Abby y Joe, su amor y su comprensin. Avi quiere agradecer a Valerie su amor, su paciencia y su apoyo durante la revisin de este libro. A.S. H. F. K. S.S.

C A P I T U L O

Un sistema gestor de bases de datos (SGBD) consiste en una coleccin de datos interrelacionados y un conjunto de programas para acceder a dichos datos. La coleccin de datos, normalmente denominada base de datos, contiene informacin relevante para una empresa. El objetivo principal de un SGBD es proporcionar una forma de almacenar y recuperar la informacin de una base de datos de manera que sea tanto prctica como eficiente. Los sistemas de bases de datos se disean para gestionar grandes cantidades de informacin. La gestin de los datos implica tanto la definicin de estructuras para almacenar la informacin como la provisin de mecanismos para la manipulacin de la informacin. Adems, los sistemas de bases de datos deben garantizar la fiabilidad de la informacin almacenada, a pesar de las cadas del sistema o de los intentos de acceso no autorizados. Si los datos van a ser compartidos entre diferentes usuarios, el sistema debe evitar posibles resultados anmalos. Dado que la informacin es tan importante en la mayora de las organizaciones, los cientficos informticos han desarrollado una gran cuerpo de conceptos y tcnicas para la gestin de los datos. Estos conceptos y tcnicas constituyen el objetivo central de este libro. En este captulo se presenta una breve introduccin a los principios de los sistemas de bases de datos.

1.1 Aplicaciones de los sistemas de bases de datos


Las bases de datos se usan ampliamente. Algunas de sus aplicaciones representativas son: Banca: para informacin de los clientes, cuentas, prstamos y transacciones bancarias.
o Lneas

areas: para reservas e informacin de horarios. Las lneas areas fueron de las primeras en usar las bases de datos de forma distribuida geogrficamente. Universidades: para informacin de los estudiantes, matrculas en las asignaturas y cursos.

o Transacciones

de tarjetas de crdito: para compras con tarjeta de crdito y la generacin de los extractos

mensuales. Telecomunicaciones: para guardar un registro de las llamadas realizadas, generar las facturas mensuales, mantener el saldo de las tarjetas telefnicas de prepago y para almacenar informacin sobre las redes de comunicaciones. Finanzas: para almacenar informacin sobre compaas tenedoras, ventas y compras de productos financieros, como acciones y bonos; tambin para almacenar datos del mercado en tiempo real para permitir a los clientes la compraventa en lnea y a la compaa la compraventa automtica. Ventas: para informacin de clientes, productos y compras.
i

Captulo 1

Introduccin

Comercio en lnea: para los datos de ventas ya mencionados y para el seguimiento de los pedidos Web, generacin de listas de recomendaciones y mantenimiento de evaluaciones de productos en lnea. Produccin: para la gestin de la cadena de proveedores y para el seguimiento de la produccin de artculos en las factoras, inventarios en los almacenes y pedidos. o Recursos humanos: para informacin sobre los empleados, salarios, impuestos sobre los sueldos y prestaciones sociales, y para la generacin de las nminas. Como muestra esta lista, las bases de datos forman una parte esencial de casi todas las empresas actuales. Durante las ltimas cuatro dcadas del siglo veinte, el uso de las bases de datos creci en todas las empresas. En los primeros das, muy pocas personas interactuaban directamente con los sistemas de bases de datos, aunque sin darse cuenta interactuaban indirectamente con bases de datoscon informes impresos como los extractos de las tarjetas de crdito, o mediante agentes como los cajeros de los bancos y los agentes de reservas de las lneas areas. Despus vinieron los cajeros automticos y permitieron a los usuarios interactuar directamente con las bases de datos. Las interfaces telefnicas con las computadoras (sistemas de respuesta vocal interactiva) tambin permitieron a los usuarios tratar directamente con las bases de datosla persona que llamaba poda marcar un nmero y pulsar las teclas del telfono para introducir informacin o para seleccionar opciones alternativas, para conocer las horas de llegada o salida de los vuelos, por ejemplo, o para matricularse de asignaturas en una universidad. La revolucin de Internet a finales de los aos noventa aument significativamente el acceso directo del usuario a las bases de datos. Las organizaciones convirtieron muchas de sus interfaces telefnicas a las bases de datos en interfaces Web, y dejaron disponibles en lnea muchos servicios. Por ejemplo cuando se accede a una librera en lnea y se busca en una coleccin de libros o de msica, se est accediendo a datos almacenados en una base de datos. Cuando se realiza un pedido en lnea, el pedido se almacena en una base de datos. Cuando se accede al sitio Web de un banco y se consultan el estado de la cuenta y los movimientos, la informacin se recupera del sistema de bases de datos del banco. Cuando se accede a un sitio Web, puede que se recupere informacin personal de una base de datos para seleccionar los anuncios que se deben mostrar. Ms an, los datos sobre los accesos Web pueden almacenarse en una base de datos As, aunque las interfaces de usuario ocultan los detalles del acceso a las bases de datos, y la mayora de la gente ni siquiera es consciente de que estn interactuando con una base de datos, el acceso a las bases de datos forma actualmente una parte esencial de la vida de casi todas las personas. La importancia de los sistemas de bases de datos se puede juzgar de otra formaactualmente, los fabricantes de sistemas de bases de datos como Oracle estn entre las mayores compaas de software del mundo, y los sistemas de bases de datos forman una parte importante de la lnea de productos de compaas ms diversificadas como Microsoft e IBM.

1.2 Propsito de los sistemas de bases de datos


Los sistemas de bases de datos surgieron en respuesta a los primeros mtodos de gestin informatizada de los datos comerciales. A modo de ejemplo de dichos mtodos, tpicos de los aos sesenta, considrese parte de una entidad bancaria que, entre otros datos, guarda informacin sobre todos los clientes y todas las cuentas de ahorro. Una manera de guardar la informacin en la computadora es almacenarla en archivos del sistema operativo. Para permitir que los usuarios manipulen la informacin, el sistema tiene varios programas de aplicacin que gestionan los archivos, incluyendo programas para: Efectuar cargos o abonos en las cuentas. Aadir cuentas nuevas. Calcular el saldo de las cuentas. Generar los extractos mensuales.

1.2

Propsito de los sistemas de bases de datos

Estos programas de aplicacin los han escrito programadores de sistemas en respuesta a las necesidades del banco. Se aaden nuevos programas de aplicacin al sistema segn surgen las necesidades. Por ejemplo, supngase que una caja de ahorros decide ofrecer cuentas corrientes. En consecuencia, se crean nuevos archivos permanentes que contienen informacin acerca de todas las cuentas corrientes abiertas en el banco y puede que haya que escribir nuevos programas de aplicacin para afrontar situaciones que no se dan en las cuentas de ahorro, como los descubiertos. As, con el paso del tiempo, se aaden ms archivos y programas de aplicacin al sistema. Los sistemas operativos convencionales soportan este sistema de procesamiento de archivos tpico. El sistema almacena los registros permanentes en varios archivos y necesita diferentes programas de aplicacin para extraer y aadir a los archivos correspondientes. Antes de la aparicin de los sistemas gestores de bases de datos (SGBDs), las organizaciones normalmente almacenaban la informacin en sistemas de este tipo. Guardar la informacin de la organizacin en un sistema de procesamiento de archivos tiene una serie de inconvenientes importantes: Redundancia e inconsistencia de los datos. Debido a que los archivos y programas de aplicacin los crean diferentes programadores en el transcurso de un largo perodo de tiempo, es probable que los diversos archivos tengan estructuras diferentes y que los programas estn escritos en varios lenguajes de programacin diferentes. Adems, puede que la informacin est duplicada en varios lugares (archivos). Por ejemplo, la direccin y el nmero de telfono de un cliente dado pueden aparecer en un archivo que contenga registros de cuentas de ahorros y en un archivo que contenga registros de cuentas corrientes. Esta redundancia conduce a costes de almacenamiento y de acceso ms elevados. Adems, puede dar lugar a la inconsistencia de los datos; es decir, puede que las diferentes copias de los mismos datos no coincidan. Por ejemplo, puede que el cambio en la direccin de un cliente est reflejado en los registros de las cuentas de ahorro pero no en el resto del sistema. Dificultad en el acceso a los datos. Supngase que uno de los empleados del banco necesita averiguar los nombres de todos los clientes que viven en un cdigo postal dado. El empleado pide al departamento de procesamiento de datos que genere esa lista. Debido a que esta peticin no fue prevista por los diseadores del sistema original, no hay un programa de aplicacin a mano para satisfacerla. Hay, sin embargo, un programa de aplicacin que genera la lista de todos los clientes. El empleado del banco tiene ahora dos opciones: bien obtener la lista de todos los clientes y extraer manualmente la informacin que necesita, o bien pedir a un programador de sistemas que escriba el programa de aplicacin necesario. Ambas alternativas son obviamente insatisfac-torias. Supngase que se escribe el programa y que, varios das ms tarde, el mismo empleado necesita reducir esa lista para que incluya nicamente a aquellos clientes que tengan una cuenta con saldo igual o superior a 10.000 . Como se puede esperar, no existe ningn programa que genere tal lista. De nuevo, el empleado tiene que elegir entre dos opciones, ninguna de las cuales es satisfactoria. La cuestin aqu es que los entornos de procesamiento de archivos convencionales no permiten recuperar los datos necesarios de una forma prctica y eficiente. Hacen falta sistemas de recuperacin de datos ms adecuados para el uso general. Aislamiento de datos. Como los datos estn dispersos en varios archivos, y los archivos pueden estar en diferentes formatos, es difcil escribir nuevos programas de aplicacin para recuperar los datos correspondientes. Problemas de integridad. Los valores de los datos almacenados en la base de datos deben satisfacer ciertos tipos de restricciones de consistencia. Por ejemplo, el saldo de ciertos tipos de cuentas bancarias no puede nunca ser inferior a una cantidad predeterminada (por ejemplo, 25 ). Los de-sarrolladores hacen cumplir esas restricciones en el sistema aadiendo el cdigo correspondiente en los diversos programas de aplicacin. Sin embargo, cuando se aaden nuevas restricciones, es difcil cambiar los programas para hacer que se cumplan. El problema se complica cuando las restricciones implican diferentes elementos de datos de diferentes archivos.

Captulo 1

Introduccin

Problemas de atomicidad. Los sistemas informticos, como cualquier otro dispositivo mecnico o elctrico, est sujeto a fallos. En muchas aplicaciones es crucial asegurar que, si se produce algn fallo, los datos se restauren al estado consistente que exista antes del fallo. Considrese un programa para transferir 50 desde la cuenta A a la B. Si se produce un fallo del sistema durante la ejecucin del programa, es posible que los 50 fueran retirados de la cuenta A pero no abonados en la cuenta B, dando lugar a un estado inconsistente de la base de datos. Evidentemente, resulta esencial para la consistencia de la base de datos que tengan lugar tanto el abono como el cargo, o que no tenga lugar ninguno. Es decir, la transferencia de fondos debe ser atmica debe ocurrir en su totalidad o no ocurrir en absoluto. Resulta difcil asegurar la atomicidad en los sistemas convencionales de procesamiento de archivos. Anomalas en el acceso concurrente. Para aumentar el rendimiento global del sistema y obtener una respuesta ms rpida, muchos sistemas permiten que varios usuarios actualicen los datos simultneamente. En realidad, hoy en da, los principales sitios de comercio electrnico de Internet pueden tener millones de accesos diarios de compradores a sus datos. En tales entornos es posible la interaccin de actualizaciones concurrentes y puede dar lugar a datos inconsistentes. Considrese una cuenta bancaria A, que contenga 500 . Si dos clientes retiran fondos (por ejemplo, 50 y 100 , respectivamente) de la cuenta A aproximadamente al mismo tiempo, el resultado de las ejecuciones concurrentes puede dejar la cuenta en un estado incorrecto (o inconsistente). Supngase que los programas que se ejecutan para cada retirada leen el saldo anterior, reducen su valor en el importe que se retira y luego escriben el resultado. Si los dos programas se ejecutan concurrentemente, pueden leer el valor 500 , y escribir despus 450 y 400 , respectivamente. Dependiendo de cul escriba el valor en ltimo lugar, la cuenta puede contener 450 o 400 , en lugar del valor correcto, 350 . Para protegerse contra esta posibilidad, el sistema debe mantener alguna forma de supervisin. Pero es difcil ofrecer supervisin, ya que muchos programas de aplicacin diferentes que no se han coordinado con anterioridad pueden tener acceso a los datos. Problemas de seguridad. No todos los usuarios de un sistema de bases de datos deben poder acceder a todos los datos. Por ejemplo, en un sistema bancario, el personal de nminas slo necesita ver la parte de la base de datos que contiene informacin acerca de los diferentes empleados del banco. No necesitan tener acceso a la informacin acerca de las cuentas de clientes. Pero, como los programas de aplicacin se aaden al sistema de procesamiento de datos de una forma ad hoc, es difcil hacer cumplir tales restricciones de seguridad. Estas dificultades, entre otras, motivaron el desarrollo de los sistemas de bases de datos. En el resto del libro se examinarn los conceptos y los algoritmos que permiten que los sistemas de bases de datos resuelvan los problemas de los sistemas de procesamiento de archivos. En general, en este libro se usa una entidad bancaria como ejemplo de aplicacin tpica de procesamiento de datos que puede encontrarse en una empresa.

1.3 Visin de los datos


Un sistema de bases de datos es una coleccin de datos interrelacionados y un conjunto de programas que permiten a los usuarios tener acceso a esos datos y modificarlos. Una de las principales finalidades de los sistemas de bases de datos es ofrecer a los usuarios una visin abstracta de los datos. Es decir, el sistema oculta ciertos detalles del modo en que se almacenan y mantienen los datos.

1.3.1 Abstraccin de datos


Para que el sistema sea til debe recuperar los datos eficientemente. La necesidad de eficiencia ha llevado a los diseadores a usar estructuras de datos complejas para la representacin de los datos en la base de datos. Dado que muchos de los usuarios de sistemas de bases de datos no tienen formacin en informtica, los desarrolladores ocultan esa complejidad a los usuarios mediante varios niveles de abstraccin para simplificar la interaccin de los usuarios con el sistema:

1.3

Visin de los datos

Figura 1.1

Los tres niveles de abstraccin de datos.

Nivel fsico. El nivel ms bajo de abstraccin describe cmo se almacenan realmente los datos. El nivel fsico describe en detalle las estructuras de datos complejas de bajo nivel. Nivel lgico. El nivel inmediatamente superior de abstraccin describe qu datos se almacenan en la base de datos y qu relaciones existen entre esos datos. El nivel lgico, por tanto, describe toda la base de datos en trminos de un nmero pequeo de estructuras relativamente simples. Aunque la implementacin de esas estructuras simples en el nivel lgico puede involucrar estructuras complejas del nivel fsico, los usuarios del nivel lgico no necesitan preocuparse de esta complejidad. Los administradores de bases de datos, que deben decidir la informacin que se guarda en la base de datos, usan el nivel de abstraccin lgico. Nivel de vistas. El nivel ms elevado de abstraccin slo describe parte de la base de datos. Aunque el nivel lgico usa estructuras ms simples, queda algo de complejidad debido a la variedad de informacin almacenada en las grandes bases de datos. Muchos usuarios del sistema de bases de datos no necesitan toda esta informacin; en su lugar slo necesitan tener acceso a una parte de la base de datos. El nivel de abstraccin de vistas existe para simplificar su interaccin con el sistema. El sistema puede proporcionar muchas vistas para la misma base de datos. La Figura 1.1 muestra la relacin entre los tres niveles de abstraccin. Una analoga con el concepto de tipos de datos en lenguajes de programacin puede clarificar la diferencia entre los niveles de abstraccin. La mayora de los lenguajes de programacin de alto nivel soportan el concepto de tipo estructurado. Por ejemplo, en los lenguajes tipo Pascal se pueden declarar registros de la manera siguiente: type cliente = record id_cliente: string; nombre_cliente: string; calle_cliente: string; ciudad_cliente: string; end; Este cdigo define un nuevo tipo de registro denominado cliente con cuatro campos. Cada campo tiene un nombre y un tipo asociados. Una entidad bancaria puede tener varios tipos de estos registros, incluidos: cuenta, con los campos nmero_cuenta y saldo. o, con los campos nombre_empleado y sueldo. En el nivel fsico, los registros cliente, cuenta o empleado se pueden describir como bloques de posiciones consecutivas de almacenamiento (por ejemplo, palabras o bytes). El compilador oculta este nivel

Captulo 1

Introduccin

de detalle a los programadores. De manera parecida, el sistema de base de datos oculta muchos de los detalles de almacenamiento de los niveles inferiores a los programadores de bases de datos. Los administradores de bases de datos, por otro lado, pueden ser conscientes de ciertos detalles de la organizador, fsica de los datos. En el nivel lgico cada registro de este tipo se describe mediante una definicin de tipo, como en el fragmento de cdigo anterior, y tambin se define la relacin entre estos tipos de registros. Los programadores que usan un lenguaje de programacin trabajan en este nivel de abstraccin. De manera parecida, los administradores de bases de datos suelen trabajar en este nivel de abstraccin. Finalmente, en el nivel de vistas, los usuarios de computadoras ven un conjunto de programas de aplicacin que ocultan los detalles de los tipos de datos. De manera parecida, en el nivel de vistas se definen varias vistas de la base de datos y los usuarios de la base de datos pueden verlas. Adems de ocultar los detalles del nivel lgico de la base de datos, las vistas tambin proporcionan un mecanisme de seguridad para evitar que los usuarios tengan acceso a ciertas partes de la base de datos. Por ejemplo los cajeros de un banco slo ven la parte de la base de datos que contiene informacin de las cuentas de los clientes; no pueden tener acceso a la informacin referente a los sueldos de los empleados.

1.3.2 Ejemplares y esquemas


Las bases de datos van cambiando a lo largo del tiempo conforme la informacin se inserta y se elimina La coleccin de informacin almacenada en la base de datos en un momento dado se denomina ejemplar de la base de datos. El diseo general de la base de datos se denomina esquema de la base de datos. Los esquemas se modifican rara vez, si es que se modifican. El concepto de esquemas y ejemplares de las bases de datos se puede comprender por analoga con los programas escritos en un lenguaje de programacin. El esquema de la base de datos se corresponde con las declaraciones de las variables (junto con las definiciones de tipos asociadas) de los programas Cada variable tiene un valor concreto en un instante dado. Los valores de las variables de un programa en un instante dado se corresponden con un ejemplar del esquema de la base de datos. Los sistemas de bases de datos tiene varios esquemas divididos segn los niveles de abstraccin. El esquema fsico describe el diseo de la base de datos en el nivel fsico, mientras que el esquema lgico describe su diseo en el nivel lgico. Las bases de datos tambin pueden tener varios esquemas en el nivel de vistas, a veces denominados subesquemas, que describen diferentes vistas de la base de datos De stos, el esquema lgico es con mucho el ms importante en trminos de su efecto sobre los programas de aplicacin, ya que los programadores crean las aplicaciones usando l esquema lgico. El esquema fsico est oculto bajo el esquema lgico, y generalmente puede modificarse fcilmente sin afectar a los programas de aplicacin. Se dice que los programas de aplicacin muestran independencia fsica respecto de los datos si no dependen del esquema fsico y, por tanto, no hace falta volver a escribirlos si se modifica el esquema fsico. Se estudiarn los lenguajes para la descripcin de los esquemas, despus de introducir el concepto de modelos de datos en el apartado siguiente.

1.3.3 Modelos de datos


Bajo la estructura de las bases de datos se encuentra el modelo de datos: una coleccin de herramientas conceptuales para describir los datos, sus relaciones, su semntica y las restricciones de consistencia Los modelos de datos ofrecen un modo de describir el diseo de las bases de datos en los niveles fsicc lgico y de vistas. En este texto se van a tratar varios modelos de datos diferentes. Los modelos de datos pueden clasificarse en cuatro categoras diferentes: Modelo relacional. El modelo relacional usa una coleccin de tablas para representar tanto los datos como sus relaciones. Cada tabla tiene varias columnas, y cada columna tiene un nombre nico. El modelo relacional es un ejemplo de un modelo basado en registros. Los modelos basados en registros se denominan as porque la base de datos se estructura en registros de frmate fijo de varios tipos. Cada tabla contiene registros de un tipo dado. Cada tipo de registro define un nmero fijo de campos, o atributos. Las columnas de la tabla se corresponden con los atribute;

1.4

Lenguajes de bases de datos

del tipo de registro. El modelo de datos relacional es el modelo de datos ms ampliamente usado, y una gran mayora de sistemas de bases de datos actuales se basan en el modelo relacional. Los Captulos 2 al 7 tratan el modelo relacional en detalle. El modelo entidad-relacin. El modelo de datos entidad-relacin (E-R) se basa en una percepcin del mundo real que consiste en una coleccin de objetos bsicos, denominados entidades, y de las relaciones entre ellos. Una entidad es una "cosa" u "objeto" del mundo real que es distinguible de otros objetos. El modelo entidad-relacin se usa mucho en el diseo de bases de datos y en el Captulo 6 se examina detalladamente. Modelo de datos orientado a objetos. El modelo de datos orientado a objetos es otro modelo de datos que est recibiendo una atencin creciente. El modelo orientado a objetos se puede considerar como una extensin del modelo E-R con los conceptos de la encapsulacin, los mtodos (funciones) y la identidad de los objetos. En el Captulo 9 se examina este modelo de datos. Modelo de datos semiestructurados. El modelo de datos semiestructurados permite la especificacin de datos donde los elementos de datos individuales del mismo tipo pueden tener diferentes conjuntos de atributos. Esto lo diferencia de los modelos de datos mencionados anteriormente, en los que cada elemento de datos de un tipo particular debe tener el mismo conjunto de atributos. El lenguaje de marcas extensible ( XML, eXtensible Markup Language) se emplea mucho para representar datos semiestructurados. Se estudia en el Captulo 10. El modelo de datos de red y el modelo de datos jerrquico precedieron cronolgicamente al relacional. Estos modelos estuvieron ntimamente ligados a la implementacin subyacente y complicaban la tarea del modelado de datos. En consecuencia, se usan muy poco hoy en da, excepto en el cdigo de bases de datos antiguas que sigue estando en servicio en algunos lugares. Se describen brevemente en los Apndices A y B para los lectores interesados.

1.4 Lenguajes de bases de datos


Los sistemas de bases de datos proporcionan un lenguaje de definicin de datos para especificar el esquema de la base de datos y un lenguaje de manipulacin de datos para expresar las consultas y las modificaciones de la base de datos. En la prctica, los lenguajes de definicin y manipulacin de datos no son dos lenguajes diferentes; en cambio, simplemente forman parte de un nico lenguaje de bases de datos, como puede ser el muy usado SQL. _

1.4.1 Lenguaje de manipulacin de datos


Un lenguaje de manipulacin de datos (LMD) es un lenguaje que permite a los usuarios tener acceso a los datos organizados mediante el modelo de datos correspondiente o manipularlos. Los tipos de acceso son: La recuperacin de la informacin almacenada en la base de datos. La insercin de informacin nueva en la base de datos. El borrado de la informacin de la base de datos. La modificacin de la informacin almacenada en la base de datos. Hay fundamentalmente dos tipos: Los LMDs procedimentales necesitan que el usuario especifique qu datos se necesitan y cmo obtener esos datos. Los LMDs declarativos (tambin conocidos como LMDs no procedimentales) necesitan que el usuario especifique qu datos se necesitan sin que haga falta que especifique cmo obtener esos datos.

Captulo 1

Introduccin

Los LMDs declarativos suelen resultar ms fciles de aprender y de usar que los procedimentales. Sin embargo, como el usuario no tiene que especificar cmo conseguir los datos, el sistema de bases de datos tiene que determinar un medio eficiente de acceso a los datos. Una consulta es una instruccin que solicita que se recupere informacin. La parte de los LMDs implicada en la recuperacin de informacin se denomina lenguaje de consultas. Aunque tcnicamente sea incorrecto, resulta habitual usar las expresiones lenguaje de consultas y lenguaje de manipulacin de datos como sinnimas. Existen varios lenguajes de consultas de bases de datos en uso, tanto comercial como experimen-talmente. El lenguaje de consultas ms ampliamente usado, SQL, se estudiar en los Captulos 3 y 4. Tambin se estudiarn otros lenguajes de consultas en el Captulo 5. Los niveles de abstraccin que se trataron en el Apartado 1.3 no slo se aplican a la definicin o estructuracin de datos, sino tambin a su manipulacin. En el nivel fsico se deben definir los algoritmos que permitan un acceso eficiente a los datos. En los niveles superiores de abstraccin se pone el nfasis en la facilidad de uso. El objetivo es permitir que los seres humanos interacten de manera eficiente con el sistema. El componente procesador de consultas del sistema de bases de datos (que se estudia en los Captulos 13 y 14) traduce las consultas LMD en secuencias de acciones en el nivel fsico del sistema de bases de datos.

1.4.2 Lenguaje de definicin de datos


Los esquemas de las bases de datos se especifican mediante un conjunto de definiciones expresadas mediante un lenguaje especial denominado lenguaje de definicin de datos (LDD). El LDD tambin se usa para especificar ms propiedades de los datos. La estructura de almacenamiento y los mtodos de acceso usados por el sistema de bases de datos se especifican mediante un conjunto de instrucciones en un tipo especial de LDD denominado lenguaje de almacenamiento y definicin de datos. Estas instrucciones definen los detalles de implementacin de los esquemas de las bases de datos, que suelen ocultarse a los usuarios. Los valores de los datos almacenados en la base de datos deben satisfacer ciertas restricciones de consistencia. Por ejemplo, supngase que el saldo de una cuenta no debe caer por debajo de 100 . El LDD proporciona facilidades para especificar tales restricciones. Los sistemas de bases de datos las comprueban cada vez que se modifica la base de datos. En general, las restricciones pueden ser predicados arbitrarios relativos a la base de datos. No obstante, los predicados arbitrarios pueden resultar costosos de comprobar. Por tanto, los sistemas de bases de datos se concentran en las restricciones de integridad que pueden comprobarse con una sobrecarga mnima: Restricciones de dominio. Se debe asociar un dominio de valores posibles a cada atributo (por ejemplo, tipos enteros, tipos de carcter, tipos fecha/hora). La declaracin de un atributo como parte de un dominio concreto acta como restriccin de los valores que puede adoptar. Las res-tricciones de dominio son la forma ms elemental de restriccin de integridad. El sistema las comprueba fcilmente siempre que se introduce un nuevo elemento de datos en la base de datos. Integridad referencial. Hay casos en los que se desea asegurar que un valor que aparece en una relacin para un conjunto de atributos dado aparece tambin para un determinado conjunto de atributos en otra relacin (integridad referencial). Las modificaciones de la base de datos pueden causar violaciones de la integridad referencial. Cuando se viola una restriccin de integridad, el procedimiento normal es rechazar la accin que ha causado esa violacin. Asertos. Un aserto es cualquier condicin que la base de datos debe satisfacer siempre. Las res-tricciones de dominio y las restricciones de integridad referencial son formas especiales de aser-tos. No obstante, hay muchas restricciones que no pueden expresarse empleando nicamente esas formas especiales. Por ejemplo: "Cada prstamo tiene como mnimo un cliente tenedor de una cuenta con un saldo mnimo de 1.000,00 " debe expresarse en forma de aserto. Cuando se crea un aserto, el sistema comprueba su validez. Si el aserto es vlido, cualquier modificacin futura de la base de datos se permite nicamente si no hace que se viole ese aserto. Autorizacin. Puede que se desee diferenciar entre los usuarios en cuanto al tipo de acceso que se les permite a diferentes valores de los datos de la base de datos. Estas diferenciaciones se

1.5

Bases de datos relacinales

expresan en trminos de autorizacin, cuyas modalidades ms frecuentes son: autorizacin de lectura, que permite la lectura pero no la modificacin de los datos; autorizacin de insercin, que permite la insercin de datos nuevos, pero no la modificacin de los datos ya existentes; autorizacin de actualizacin, que permite la modificacin, pero no la eliminacin, de los datos; y la autorizacin de eliminacin, que permite la eliminacin de datos. A cada usuario se le pueden asignar todos, ninguno o una combinacin de estos tipos de autorizacin. El LDD, al igual que cualquier otro lenguaje de programacin, obtiene como entrada algunas instrucciones y genera una salida. La salida del LDD se coloca en el diccionario de datos, que contiene metadatoses decir, datos sobre datos. El diccionario de datos se considera un tipo especial de tabla, a la que slo puede tener acceso y actualizar el propio sistema de bases de datos (no los usuarios normales). El sistema de bases de datos consulta el diccionario de datos antes de leer o modificar los datos reales.

1.5 Bases de datos relacionales


Las bases de datos relacinales se basan en el modelo relacional y usan un conjunto de tablas para representar tanto los datos como las relaciones entre ellos. Tambin incluyen un LMD y un LDD. La mayor parte de los sistemas de bases de datos relacinales comerciales emplean el lenguaje SQL, que se trata en este apartado y que se tratar con gran detalle en los Captulos 3 y 4. En el Captulo 5 se estudiarn otros lenguajes influyentes.

1.5.1 Tablas
Cada tabla tiene varias columnas, y cada columna tiene un nombre nico. En la Figura 1.2 se presenta un ejemplo de base de datos relacional consistente en tres tablas: una muestra detalles de los clientes de un banco, la segunda muestra las cuentas y la tercera muestra las cuentas que pertenecen a cada cliente. La primera tabla, la tabla cliente, muestra, por ejemplo, que el cliente identificado por id_cliente 19.28-3.746 se llama Gonzlez y vive en la calle Arenal en La Granja. La segunda tabla, cuenta, muestra, por ejemplo, que la cuenta C-101 tiene un saldo de 500 y la C-201 un saldo de 900 . La tercera tabla muestra las cuentas que pertenecen a cada cliente. Por ejemplo, la cuenta C-101 pertenece al cliente cuyo id_cliente es 19.283.746 (Gonzlez), y los clientes 19.283.746 (Gonzlez) y 01.928.374 (Gmez) comparten el nmero de cuenta C-201 (pueden compartir un negocio). El modelo relacional es un ejemplo de modelo basado en registros. Los modelos basados en registros se denominan as porque la base de datos se estructura en registros de formato fijo de varios tipos. Cada tabla contiene registros de un tipo dado. Cada tipo de registro define un nmero fijo de campos, o atributos. Las columnas de la tabla se corresponden con los atributos del tipo de registro. No es difcil ver cmo se pueden almacenar las tablas en archivos. Por ejemplo, se puede usar un carcter especial (como la coma) para delimitar los diferentes atributos de un registro, y otro carcter especial (como el carcter de nueva lnea) para delimitar los registros. El modelo relacional oculta esos detalles de implementacin de bajo nivel a los desarrolladores de bases de datos y a los usuarios. El modelo de datos relacional es el modelo de datos ms ampliamente usado, y una gran mayora de los sistemas de bases de datos actuales se basan en el modelo relacional. Los Captulos 2 al 7 tratan el modelo relacional con detalle. Obsrvese tambin que en el modelo relacional es posible crear esquemas que tengan problemas tales como informacin duplicada innecesariamente. Por ejemplo, supngase que se almacena nmero_cuenta como atributo de un registro cliente. Entonces, para representar el hecho de que tanto la cuentas C-101 como la cuenta C-201 pertenece al cliente Gonzlez (con idjzliente 19.283.746) sera necesario almacenar dos filas en la tabla cliente. Los valores de nombre_cliente, calle_cliente y ciudad_cliente de Gonzlez estaran innecesariamente duplicados en las dos filas. En el Captulo 7 se estudiar el modo de distinguir los buenos diseos de esquema de los malos.

10

Captulo 1

Introduccin

id_cliente 19.283.746 67.789.901 18.273.609 32.112.312 33.666.999 01.928.374

nombre-cliente Gonzlez Lpez Abril Santos Ruprez Gmez

calle_cliente Arenal, 12 Mayor, 3 Preciados, 123 Mayor, 100 Ramblas, 175 Carretas, 72

ciudad_cliente La Granja Peguerinos Valsan Peguerinos Len Cerceda

(a) La tabla cliente nmero_cuenta C-101 C-215 C-102 C-305 C-201 C-217 C-222 saldo 500 700 400 350 900 750 700

(b) La tabla cuenta Id_cliente 19.283.746 19.283.746 01.928.374 67.789.901 18.273.609 32.112.312 33.666.999 01.928.374 nmero_cuenta C-101 C-201 C-215 C-102 C-305 C-217 C-222 C-201

(c) La tabla impositor Figura 1.2 Un ejemplo de base de datos relacional.

1.5.2 Lenguaje de manipulacin de datos


El lenguaje de consultas de SQL no es procedimental. Usa como entrada varias tablas (posiblemente slo una) y devuelve siempre una sola tabla. A continuacin se ofrece un ejemplo de consulta SQL que halla el nombre de todos los clientes que residen en Peguerinos:

select cliente.nombre_cliente from cliente where cliente.ciudad_cliente = 'Peguerinos'

La consulta especifica que hay que recuperar (select) las filas de (from) la tabla cliente en las que (where la ciudad_cliente es Peguerinos, y que slo debe mostrarse el atributo nombre_cliente de esas filas. Ms concretamente, el resultado de la ejecucin de esta consulta es una tabla con una sola columna denomi-nada nombre_cliente y un conjunto de filas, cada una de las cuales contiene el nombre de un cliente cuya ciudad_cliente es Peguerinos. Si la consulta se ejecuta sobre la tabla de la Figura 1.2, el resultado constar de dos filas, una con el nombre Lpez y otra con el nombre Santos. Las consultas pueden involucrar informacin de ms de una tabla. Por ejemplo, la siguiente consulta busca todos los nmeros de cuenta y sus saldos del cliente con id_cliente 19.283.746.

1.6

Diseo de bases de datos

11

select cuenta.nmero_cuenta, cuenta.saldo from mvositor, cuenta where impositor.id_cliente = '19.283.746' and impositor.nmero_cuenta = cuenta.nmero_cuenta Si la consulta anterior se ejecutase sobre las tablas de la Figura 1.2, el sistema encontrara que las dos cuentas denominadas C-101 y C-201 pertenecen al cliente 19.283.746 y el resultado consistira en una tabla con dos columnas (nmero_cuenta, saldo) y dos filas (C-101,500) y (C-201,900).

1.5.3 Lenguaje de definicin de datos


SQL ofrece un LDD elaborado que permite definir tablas, restricciones de integridad, asertos, etc. Por ejemplo, la siguiente instruccin del lenguaje SQL define la tabla cuenta: crate table cuenta (nmero_cuenta char(10), saldo integer) La ejecucin de esta instruccin LDD crea la tabla cuenta. Adems, actualiza el diccionario de datos, que contiene metadatos (1.4.2). Los esquemas de las tablas son ejemplos de metadatos.

1.5.4 Acceso a las bases de datos desde los programas de aplicacin


SQL no es tan potente como la mquina universal de Turing; es decir, hay algunos clculos que no pue-den obtenerse mediante ninguna consulta SQL. Esos clculos deben escribirse en un lenguaje anfitrin, como Cobol, C, C++ o Java. Los programas de aplicacin son programas que se usan para interactuar de esta manera con las bases de datos. Algunos de los ejemplos de un sistema bancario seran los progra-mas que generan las nminas, realizan cargos en las cuentas, realizan abonos en las cuentas o transfieren fondos entre las cuentas. Para tener acceso a la base de datos, las instrucciones LMD deben ejecutarse desde el lenguaje anfitrin. Hay dos maneras de conseguirlo: Proporcionando una interfaz de programas de aplicacin (conjunto de procedimientos) que se pueda usar para enviar instrucciones LMD y LDD a la base de datos y recuperar los resultados. El estndar de conectividad abierta de bases de datos (ODBC, Open Data Base Connectivity) definido por Microsoft para su empleo con el lenguaje C es un estndar de interfaz de programas de aplicacin usado habitualmente. El estndar de conectividad de Java con bases de datos (JDBC, Java Data Base Connectivity) ofrece las caractersticas correspondientes para el lenguaje Java. Extendiendo la sintaxis del lenguaje anfitrin para que incorpore las llamadas LMD dentro del programa del lenguaje anfitrin. Generalmente, un carcter especial precede a las llamadas LMD y un preprocesador, denominado precompilador LMD, convierte las instrucciones LMD en lla madas normales a procedimientos en el lenguaje anfitrin.

1.6 Diseo de bases de datos


Los sistemas de bases de datos se disean para gestionar grandes cantidades de informacin. Esas grandes cantidades de informacin no existen aisladas. Forman parte del funcionamiento de alguna empresa, cuyo producto final puede que sea la informacin obtenida de la base de datos o algn dispositivo o servicio para el que la base de datos slo desempea un papel secundario. El diseo de bases de datos implica principalmente el diseo del esquema de las bases de datos. El diseo de un entorno completo de aplicaciones para la base de datos que satisfaga las necesidades de la empresa que se est modelando exige prestar atencin a un conjunto de aspectos ms amplio. Este texto se centrar inicialmente en la escritura de las consultas a la base de datos y en el diseo de los esquemas de las bases de datos. En el Captulo 8 se estudia el proceso general de diseo de las aplicaciones.

Captulo 1

Introduccin

1.6.1 Proceso de diseo


Los modelos de datos de alto nivel resultan tiles a los diseadores de bases de datos al ofrecerles un marco conceptual en el que especificar, de manera sistemtica, los requisitos de datos de los usuarios de las bases de datos y la manera en que se estructurar la base de datos para satisfacer esos requisitos. La fase inicial del diseo de las bases de datos, por tanto, es caracterizar completamente los requisitos de datos de los hipotticos usuarios de la base de datos. Los diseadores de bases de datos deben interac-tuar ampliamente con los expertos y usuarios del dominio para llevar a cabo esta tarea. El resultado de esta fase es la especificacin de los requisitos de los usuarios. A continuacin, el diseador escoge un modelo de datos y, mediante la aplicacin de los conceptos del modelo de datos elegido, traduce esos requisitos en un esquema conceptual de la base de datos. El esquema desarrollado en esta fase de diseo conceptual ofrece una visin general detallada de la empresa. El diseador revisa el esquema para confirmar que todos los requisitos de datos se satisfacen realmente y no entran en conflicto entre s. El diseador tambin puede examinar el diseo para eliminar cualquier caracterstica redundante. En este punto, la atencin se centra en describir los datos y sus relaciones, ms que en especificar los detalles del almacenamiento fsico. En trminos del modelo relacional, el proceso de diseo conceptual implica decisiones sobre qu atributos se desea capturar en la base de datos y cmo agruparlos para formar las diferentes tablas. La parte "qu" es, esencialmente, una decisin conceptual, y no se seguir estudiando en este texto. La parte del "cmo" es, esencialmente, un problema informtico. Hay dos vas principales para afrontar el problema. La primera supone usar el modelo entidad-relacin (Apartado 1.6.3); la otra es emplear un conjunto de algoritmos (denominados colectivamente como normalizacin) que toma como entrada el conjunto de todos los atributos y genera un conjunto de tablas (Apartado 1.6.4). Un esquema conceptual completamente desarrollado tambin indica los requisitos funcionales de la empresa. En la especificacin de requisitos funcionales los usuarios describen el tipo de operaciones (o transacciones) que se llevarn a cabo con los datos. Un ejemplo de estas operaciones es modificar o actualizar los datos, buscar y recuperar datos concretos y eliminar datos. En esta etapa del diseo conceptual el diseador puede revisar el esquema para asegurarse de que satisface los requisitos funcionales. El proceso de pasar de un modelo de datos abstracto a la implementacin de la base de datos contina con dos fases de diseo finales. En la fase de diseo lgico el diseador relaciona el esquema conceptual de alto nivel con el modelo de implementacin de datos del sistema de bases de datos que se va a usar. El diseador usa el esquema de bases de datos especfico para el sistema resultante en la fase de diseo fsico posterior, en la que se especifican las caractersticas fsicas de la base de datos. Entre esas caractersticas estn la forma de organizacin de los archivos y las estructuras de almacenamiento interno; se estudian en el Captulo 11.

1.6.2 Diseo de la base de datos para una entidad bancaria


Para ilustrar el proceso de diseo, examinemos el modo en que puede disearse una base de datos para una entidad bancaria. La especificacin inicial de los requisitos de los usuarios puede basarse en entrevistas con los usuarios de la base de datos y en el anlisis de la entidad realizado por el propio diseador. La descripcin que surge de esta fase de diseo sirve como base para especificar la estructura conceptual de la base de datos. stas son las principales caractersticas de la entidad bancaria: El banco est organizado en sucursales. Cada sucursal se ubica en una ciudad determinada y queda identificada por un nombre nico. El banco supervisa los activos de cada sucursal. Los clientes quedan identificados por el valor de su id_cliente. El banco almacena el nombre de cada cliente y la calle y la ciudad en la que vive. Los clientes pueden abrir cuentas y solicitar prstamos. Cada cliente puede asociarse con un empleado del banco en concreto, que pued actuar como prestamista o como asesor personal para ese cliente. El banco ofrece dos tipos de cuenta: de ahorro y corriente. Las cuentas pueden tener como titular a ms de un cliente, y cada cliente puede abrir ms de una cuenta. A cada cuenta se le asigna un nmero de cuenta nico. El banco guarda un registro del saldo de cada cuenta y de la fecha

1.6

Diseo de bases de datos

13

ms reciente en que cada cliente titular de esa cuenta tuvo acceso a ella. Adems, cada cuenta de ahorro tiene una tasa de inters y se registran los descubiertos de las cuentas corrientes. El banco ofrece prstamos a sus clientes. Cada prstamo se origina en una sucursal concreta y puede tener como titulares a uno o ms clientes. Cada prstamo queda identificado por un nmero de prstamo nico. De cada prstamo el banco realiza un seguimiento del importe del prstamo y de sus pagos. Aunque el nmero de pago del prstamo no identifica de manera nica un pago concreto entre todos los del banco, el nmero de pago identifica cada pago concreto de un prstamo dado. Se registran la fecha y el importe de cada pago. Los empleados del banco quedan identificados por el valor de su id_empleado. La administracin del banco almacena el nombre y nmero de telfono de cada empleado, el nombre de las personas dependientes de cada empleado y el nmero de id_empleado del jefe de cada empleado. El banco tambin realiza un seguimiento de la fecha de contratacin y, por tanto, de la antigedad de cada empleado. En las entidades bancarias reales, el banco realizara un seguimiento de los depsitos y de los reinte-gros de las cuentas de ahorro y corrientes, igual que realiza un seguimiento de los pagos de las cuentas de crdito. Dado que los requisitos de modelado para ese seguimiento son parecidas y nos gustara que la aplicacin de ejemplo no tuviera un tamao excesivo, en nuestro modelo no se realiza el seguimiento de esos depsitos y reintegros.

1.6.3 El modelo entidad-relacin


El modelo de datos entidad-relacin (E-R) est basado en una percepcin del mundo real que consiste en un conjunto de objetos bsicos, denominados entidades, y de las relaciones entre esos objetos. Una entidad es una "cosa" u "objeto" del mundo real que es distinguible de otros objetos. Por ejemplo, cada persona es una entidad, y las cuentas bancarias pueden considerarse entidades. Las entidades se describen en las bases de datos mediante un conjunto de atributos. Por ejemplo, los atributos nmero_cuenta y saldo pueden describir una cuenta concreta de un banco y constituyen atributos del conjunto de entidades cuenta. Anlogamente, los atributos nombre_cliente, calle_cliente y ciudad_cliente pueden describir una entidad cliente. Se usa un atributo extra, id_cliente, para identificar unvocamente a los clientes (dado que es posible que haya dos clientes con el mismo nombre, calle y ciudad). Se debe asignar un identificador de cliente nico a cada cliente. En Estados Unidos, muchas empresas usan el nmero de la seguridad social de cada persona (un nmero nico que el Gobierno de Estados Unidos asigna a cada persona) como identificador de cliente. Una relacin es una asociacin entre varias entidades. Por ejemplo, la relacin impositor asocia un cliente con cada cuenta que tiene. El conjunto de todas las entidades del mismo tipo, y el conjunto de todas las relaciones del mismo tipo se denominan, respectivamente, conjunto de entidades y conjunto de relaciones. La estructura lgica general (esquema) de la base de datos se puede expresar grficamente mediante un diagrama E-R, que est constituido por los siguientes componentes: Rectngulos, que representan conjuntos de entidades. Elipses, que representan atributos. Rombos, que representan conjuntos de relaciones entre miembros de varios conjuntos de entida-des. Lneas, que unen los atributos con los conjuntos de entidades entre s, y tambin los conjuntos de entidades con las relaciones. Cada componente se etiqueta con la entidad o relacin que representa. Como ilustracin, considrese parte de un sistema bancario de bases de datos consistente en los clien-tes y las cuentas que tienen esos clientes. La Figura 1.3 muestra el diagrama E-R correspondiente. El

Captulo 1

Introduccin

Figura 1.3 id_cliente 19.283.746 19.283.746 01.928.374 67.789.901 18.273.609 32.112.312 33.666.999 01.928.374

Un ejemplo de diagrama E-R. nmero_cuenta C-101 C-201 C-215 C-102 C-305 C-217 C-222 C-201 saldo 500 900 700 400 350 750 700 900

Figura 1.4

La tabla impositor'.

diagrama E-R indica que hay dos conjuntos de entidades, cliente y cuenta, con los atributos descritos anteriormente. El diagrama tambin muestra la relacin impositor entre cliente y cuenta. Adems de entidades y relaciones, el modelo E-R representa ciertas restricciones que los contenidos de la base de datos deben cumplir. Una restriccin importante es la correspondencia de cardinalidades, que expresa el nmero de entidades con las que otra entidad se puede asociar a travs de un conjunto de relaciones. Por ejemplo, si cada cuenta slo debe pertenecer a un cliente, el modelo puede expresar esa restriccin. El modelo entidad-relacin se usa ampliamente en el diseo de bases de datos, y en el Captulo 6 se explora en detalle.

1.6.4 Normalizacin
Otro mtodo de diseo de bases de datos es usar un proceso que suele denominarse normalizacin. El objetivo es generar un conjunto de esquemas de relaciones que permita almacenar informacin sin redundancias innecesarias, pero que tambin permita recuperar la informacin con facilidad. El enfoque es disear esquemas que se hallen en la forma normal adecuada. Para determinar si un esquema de relacin se halla en una de las formas normales deseadas, hace falta informacin adicional sobre la empresa real que se est modelando con la base de datos. El enfoque ms frecuente es usar dependencias funcionales, que se tratan en el Apartado 7.4. Para comprender la necesidad de la normalizacin, obsrvese lo que puede fallar en un mal diseo de base de datos. Algunas de las propiedades no deseables de un mal son: Repeticin de la informacin. Imposibilidad de representar determinada informacin. Se examinarn estos problemas con la ayuda de un diseo de bases de datos modificado para el ejemplo bancario. Supngase que, en lugar de tener las dos tablas separadas cuenta e impositor, se tiene una sola tabla, impositor', que combina la informacin de las dos tablas (como puede verse en la Figura 1.4). Obsrvese que hay dos filas de impositor' que contienen informacin sobre la cuenta C-201. La repeticin de informacin en este diseo alternativo no es deseable. La repeticin de informacin malgasta espacio.

1.7

Bases de datos basadas en objetos y semiestructuradas

15

id_cliente nombre-diente 19.283.746 Gonzlez 19.283.746 Gonzlez 67.789.901 Lpez 18.273.609 Abril 32.112.312 Santos 33.666.999 Ruprez 01.928.374 Gmez

calle-cliente Arenal, 12 Arenal, 12 Mayor, 3 Preciados, 123 Mayor, 100 Ramblas, 175 Carretas, 72

ciudad-cliente La Granja La Granja Peguerinos Valsan Peguerinos Len Cerceda

nmero_cuenta C-101 C-201 C-102 C-305 C-217 C-222 C-201

Figura 1.5

La tabla cliente'.

Adems, complica las actualizaciones de la base de datos. Supngase que se desea modificar el saldo de la cuenta C-201 de 900 a 950 . Esta modificacin debe reflejarse en las dos filas; comprese con el diseo original, en el que esto dara lugar a la actualizacin de una sola fila. Por tanto, las actualizaciones resultan ms costosas bajo el diseo alternativo que bajo el diseo original. Cuando se lleva a cabo la actualizacin de la base de datos alternativa, hay que asegurarse de que todas las tupias que afectan a la cuenta C-201 se actualicen, o la base de datos mostrar dos valores de saldo diferentes para la cuenta C-201. Examnese ahora el problema de la "imposibilidad de representar determinada informacin". Supngase que, en vez de tener las dos tablas separadas cliente e impositor, se tuviera una sola tabla, cliente', que combinara la informacin de esas dos tablas (como puede verse en la Figura 1.5). No se puede re-presentar directamente la informacin relativa a los clientes (id_diente, nombre_cliente, calle_cliente, ciudad _cliente) a menos que el cliente tenga, como mnimo, una cuenta en el banco. Esto se debe a que las filas de cliente' necesitan valores de nmero_cuenta. Una solucin de este problema es introducir valores nulos. Los valores nulos indican que el valor no existe (o es desconocido). Los valores desconocidos pueden ser valores ausentes (el valor existe, pero no se tiene la informacin) o valores desconocidos (no se sabe si el valor existe realmente o no). Como se ver ms adelante, los valores nulos resultan difciles de tratar, y es preferible no recurrir a ellos. Si no se desea tratar con valores nulos, se puede crear un elemento concreto de informacin del cliente slo si el cliente tiene cuenta en el banco (obsrvese que los clientes pueden tener un prstamo pero no tener ninguna cuenta). Adems, habra que eliminar esa informacin cuando el cliente cerrara la cuenta. Claramente, esta situacin no es deseable ya que, bajo el diseo original de la base de datos, la informacin de los clientes estara disponible independientemente de si el cliente tiene cuenta en el banco o no, y sin necesidad de recurrir a los valores nulos.

1.7 Bases de datos basadas en objetos y semiestructuradas


Varias reas de aplicaciones de los sistemas de bases de datos estn limitadas por las restricciones del modelo de datos relacional. En consecuencia, los investigadores han desarrollado varios modelos de datos para tratar con estos dominios de aplicacin. Los modelos de datos que se tratarn en este texto son el orientado a objetos y el relacional orientado a objetos, representativos de los modelos de datos basados en objetos, y XML, representativo de los modelos de datos semiestructurados.

1.7.1 Modelos de datos basados en objetos


El modelo de datos orientado a objetos se basa en el paradigma de los lenguajes de programacin orientados a objetos, que actualmente se usa en gran medida. La herencia, la identidad de los objetos y la encapsulacin (ocultacin de la informacin), con mtodos para ofrecer una interfaz para los objetos, estn entre los conceptos principales de la programacin orientada a objetos que han encontrado aplicacin en el modelado de datos. El modelo de datos orientado a objetos tambin soporta un sistema elaborado de tipos, incluidos los tipos estructurados y las colecciones. El modelo orientado a objetos puede considerarse una extensin del modelo E-R con los conceptos de encapsulacin, mtodos (funciones) e identidad de los objetos.

16

Captulo 1

Introduccin

El modelo de datos relacional orientado a objetos extiende el modelo relacional tradicional con gran variedad de caractersticas como los tipos estructurados y las colecciones, as como la orientacin a objetos. En el Captulo 9 se examinan las bases de datos relacionales orientadas a objetos (es decir, las bases de datos construidas segn el modelo relacional orientado a objetos), as como las bases de datos orientadas a objetos (es decir, las bases de datos construidas segn el modelo de datos orientado a objetos).

1.7.2 Modelos de datos semiestructurados


Los modelos de datos semiiestructurados permiten la especificacin de los datos en los que cada elemento de datos del mismo tipo puede tener conjuntos de atributos diferentes. Esto los diferencia de los modelos de datos mencionados anteriormente, en los que todos los elementos de datos de un tipo dado deben tener el mismo conjunto de atributos. El lenguaje XML se dise inicialmente como un modo de aadir informacin de marcas a los documentos de texto, pero se ha vuelto importante debido a sus aplicaciones en el intercambio de datos. XML ofrece un modo de representar los datos que tienen una estructura anidada y, adems, permite una granflexibilidad en la estructuracin de los datos, lo cual es importante para ciertas clases de datos no tradicionales. En el Captulo 10 se describe el lenguaje XML, diferentes maneras de expresar las consultas sobre datos representados en XML y la transformacin de los datos XML de una forma a otra.

1.8 Almacenamiento de datos y consultas


Los sistemas de bases de datos estn divididos en mdulos que tratan con cada una de las responsabilidades del sistema general. Los componentes funcionales de los sistemas de bases de datos pueden dividirse grosso modo en los componentes gestor de almacenamiento y procesador de consultas. El gestor de almacenamiento es importante porque las bases de datos suelen necesitar una gran can-tidad de espacio de almacenamiento. Las bases de datos corporativas tienen un tamao que va de los centenares de gigabytes hasta, para las bases de datos de mayor tamao, los terabytes de datos. Un gigabyte son aproximadamente 1.000 megabytes (1.000 millones de bytes), y un terabyte es aproxima-damente un milln de megabytes (1 billn de bytes). Debido a que la memoria principal de las computadoras no puede almacenar toda esta informacin, la informacin se almacena en discos. Los datos se intercambian entre los discos de almacenamiento y la memoria principal cuando sea necesario. Como el intercambio de datos con el disco es lento comparado con la velocidad de la unidad central de procesamiento, es fundamental que el sistema de base de datos estructure los datos para minimizar la necesidad de intercambio de datos entre los discos y la memoria principal. El procesador de consultas es importante porque ayuda al sistema de bases de datos a simplificar y facilitar el acceso a los datos. Las vistas de alto nivel ayudan a conseguir este objetivo; con ellas, los usua-rios del sistema no se ven molestados innecesariamente con los detalles fsicos de la implementacin del sistema. Sin embargo, el rpido procesamiento de las actualizaciones y de las consultas es importante Es funcin del sistema de bases de datos traducir las actualizaciones y las consultas escritas en lenguajes no procedimentales, en el nivel lgico, en una secuencia eficiente de operaciones en el nivel fsico.

1.8.1 Gestor de almacenamiento


Un gestor de almacenamiento es un mdulo de programa que proporciona la interfaz entre los datos de bajo nivel almacenados en la base de datos y los programas de aplicacin y las consultas remitidas al sistema. El gestor de almacenamiento es responsable de la interaccin con el gestor de archivos. Los datos en bruto se almacenan en el disco mediante el sistema de archivos que suele proporcionar un sistema operativo convencional. El gestor de almacenamiento traduce las diferentes instrucciones LML a comandos de bajo nivel del sistema de archivos. As, el gestor de almacenamiento es responsable de almacenamiento, la recuperacin y la actualizacin de los datos de la base de datos. Entre los componentes del gestor de almacenamiento se encuentran: Gestor de autorizaciones e integridad, que comprueba que se satisfagan las restricciones de integridad y la autorizacin de los usuarios para tener acceso a los datos.

1.9

Gestin de transacciones

17

Gestor de transacciones, que garantiza que la base de datos quede en un estado consistente (correcto) a pesar de los fallos del sistema, y que la ejecucin concurrente de transacciones transcurra si conflictos. Gestor de archivos, que gestiona la asignacin de espacio de almacenamiento de disco y las estructuras de datos usadas para representar la informacin almacenada en el disco. Gestor de la memoria intermedia, que es responsable de traer los datos desde el disco de almacenamiento a la memoria principal y decidir los datos a guardar en la memoria cach. El gestor de la memoria intermedia es una parte fundamental de los sistemas de bases de datos, ya que permite que la base de datos maneje tamaos de datos que son mucho mayores que el tamao de la memoria principal. El gestor de almacenamiento implementa varias estructuras de datos como parte de la implementa-cin fsica del sistema: Archivos de datos, que almacenan la base de datos en s misma. Diccionario de datos, que almacena metadatos acerca de la estructura de la base de datos; en particular, su esquema. ndices, que pueden proporcionar un acceso rpido a los elementos de datos. Como el ndice de este libro de texto, los ndices de las bases de datos facilitan punteros a los elementos de datos que tienen un valor concreto. Por ejemplo, se puede usar un ndice para buscar todos los registros cuenta con un nmero_cuenta determinado. La asociacin es una alternativa a la indexacin que es ms rpida en algunos casos, pero no en todos. Se estudiarn los medios de almacenamiento, las estructuras de archivos y la gestin de la memoria intermedia en el Captulo 11. Los mtodos de acceso eficiente a los datos mediante indexacin o asociacin se explican en el Captulo 12.

1.8.2 El procesador de consultas


Entre los componentes del procesador de consultas se encuentran: Intrprete del LDD, que interpreta las instrucciones del LDD y registra las definiciones en el diccionario de datos. Compilador del LMD, que traduce las instrucciones del LMD en un lenguaje de consultas a un plan de evaluacin que consiste en instrucciones de bajo nivel que entienda el motor de evalua-cin de consultas. Las consultas se suelen poder traducir en varios planes de ejecucin alternativos, todos los cuales proporcionan el mismo resultado. El compilador del LMD tambin realiza optimizacin de consultas, es decir, elige el plan de evaluacin de menor coste de entre todas las opciones posibles. Motor de evaluacin de consultas, que ejecuta las instrucciones de bajo nivel generadas por el compilador del LMD.

1.9 Gestin de transacciones


A menudo, varias operaciones sobre la base de datos forman una nica unidad lgica de trabajo. Un ejemplo son las transferencia de fondos, como se vio en el Apartado 1.2, en las que se realiza un cargo en una cuenta (llmese A) y un abono en otra cuenta (llmese B). Evidentemente, resulta fundamental que, o bien tengan lugar tanto el cargo como el abono, o bien que no se produzca ninguno. Es decir, la transferencia de fondos debe tener lugar por completo o no producirse en absoluto. Este requisito de todo o nada se denomina atomicidad. Adems, resulta esencial que la ejecucin de la transferencia de fondos preserve la consistencia de la base de datos. Es decir, el valor de la suma A + B se debe

Captulo 1

Introduccin

preservar. Este requisito de correccin se denomina consistencia. Finalmente, tras la ejecucin correcta de la transferencia de fondos, los nuevos valores de las cuentas A y B deben persistir, a pesar de la posibilidad de fallo del sistema. Este requisito de persistencia se denomina durabilidad. Una transaccin es un conjunto de operaciones que lleva a cabo una nica funcin lgica en una aplicacin de bases de datos. Cada transaccin es una unidad de atomicidad y consistencia. Por tanto, se exige que las transacciones no violen ninguna restriccin de consistencia de la base de datos. Es decir, si la base de datos era consistente cuando la transaccin comenz, debe ser consistente cuando la transaccin termine con xito. Sin embargo, durante la ejecucin de una transaccin, puede ser necesario permitir inconsistencias temporalmente, ya que el cargo a A o el abono a B se debe realizar en primer lugar. Esta inconsistencia temporal, aunque necesaria, puede conducir a dificultades si ocurre un fallo. Es responsabilidad del programador definir adecuadamente las diferentes transacciones, de tal manera que cada una preserve la consistencia de la base de datos. Por ejemplo, la transaccin para transferir fondos de la cuenta A a la cuenta B puede definirse como si estuviera compuesta de dos programas diferentes: uno que realiza el cargo en la cuenta A y otro que realiza el abono en la cuenta B. La ejecucin de estos dos programas uno despus del otro preservar realmente la consistencia. Sin embargo, cada programa en s mismo no transforma la base de datos de un estado consistente a otro nuevo. Por tanto, estos programas no son transacciones. Garantizar las propiedades de atomicidad y de durabilidad es responsabilidad del propio sistema de bases de datos concretamente del componente de gestin de transacciones. A falta de fallos, todas las transacciones se completan con xito y la atomicidad se consigue fcilmente. Sin embargo, debido a diversos tipos de fallos, puede que las transacciones no siempre completen su ejecucin con xito. Si se va a asegurar la propiedad de atomicidad, las transacciones fallidas no deben tener ningn efecto sobre el estado de la base de datos. Por tanto, la base de datos debe restaurarse al estado en que estaba antes de que la transaccin en cuestin comience a ejecutarse. El sistema de bases de datos, por tanto, debe realizar la recuperacin de fallos, es decir, detectar los fallos del sistema y restaurar la base de datos al estado que tena antes de que ocurriera el fallo. Finalmente, cuando varias transacciones actualizan la base de datos de manera concurrente, puede que no se preserve la consistencia de los datos, aunque cada una de las transacciones sea correcta. Es responsabilidad del gestor de control de concurrencia controlar la interaccin entre las transacciones concurrentes para garantizar la consistencia de la base de datos. Los conceptos bsicos del procesamiento de transacciones se tratan en el Captulo 13. Puede que los sistemas de bases de datos diseados para su empleo en computadoras personales pequeos no tengan todas estas caractersticas. Por ejemplo, muchos sistemas pequeos slo permiten que un usuario tenga acceso a la base de datos en cada momento. Otros no ofrecen copias de seguridad ni recuperacin, y dejan esas tareas a los usuarios. Estas restricciones permiten un gestor de datos de menor tamao, con menos requisitos de recursos fsicos especialmente de memoria principal. Aunque tales enfoques de bajo coste y bajas prestaciones son adecuados para bases de datos personales pequeas, resultan inadecuados para empresas medianas y grandes. El concepto de transaccin se ha aplicado ampliamente en los sistemas y en las aplicaciones de bases de datos. Aunque el empleo inicial de las transacciones se produjo en las aplicaciones financieras, el concepto se usa ahora en aplicaciones de tiempo real de telecomunicaciones, as como en la gestin de las actividades de larga duracin como el diseo de productos o los flujos de trabajo administrativos.

1.10 Minera y anlisis de datos


El trmino minera de datos se refiere en lneas generales al proceso de anlisis semiautomtico de grandes bases de datos para descubrir patrones tiles. Al igual que el descubrimiento de conocimiento en inteligencia artificial (tambin denominado aprendizaje de la mquina) o el anlisis estadstico, la minera de datos intenta descubrir reglas y patrones en los datos. Sin embargo, la minera de datos se diferencia del aprendizaje de la mquina y de la estadstica en que maneja grandes volmenes de datos, almacenados principalmente en disco. Es decir, la minera de datos trata del "descubrimiento de conocimiento en las bases de datos". Algunos tipos de conocimiento descubiertos en las bases de datos pueden representarse mediante un conjunto de reglas. Lo que sigue es un ejemplo de regla, definida informalmente: "las mujeres jvenes

1.11

Arquitectura de las bases de datos

19

con ingresos anuales superiores a 50.000 son las personas con ms probabilidades de comprar coches deportivos pequeos". Por supuesto, esas reglas no son universalmente ciertas, sino que tienen grados de "apoyo" y de "confianza". Otros tipos de conocimiento se representan mediante ecuaciones que relacionan diferentes variables, o mediante otros mecanismos para la prediccin de los resultados cuando se conocen los valores de algunas variables. Hay gran variedad de tipos posibles de patrones que pueden resultar tiles y se emplean diferentes tcnicas para descubrir tipos de patrones diferentes. En el Captulo 14 se estudian unos cuantos ejemplos de patrones y se ve la manera en que pueden obtenerse de las bases de datos de forma automtica. Generalmente hay un componente manual en la minera de datos, que consiste en el preprocesamiento de los datos de una manera aceptable para los algoritmos, y el postprocesamiento de los patrones descubiertos para descubrir otros nuevos que puedan resultar tiles. Puede haber tambin ms de un tipo de patrn que pueda descubrirse en una base de datos dada, y puede ser necesaria la interaccin manual para escoger los tipos de patrones tiles. Por este motivo, la minera de datos es, en realidad, un proceso semiautomtico en la vida real. No obstante, en nuestra descripcin se concentra la atencin en el aspecto automtico de la minera. Las empresas han comenzado a explotar la creciente cantidad de datos en lnea para tomar mejo-res decisiones sobre sus actividades, como los artculos de los que hay que tener existencias y la mejor manera de llegar a los clientes para incrementar las ventas. Muchas de sus consultas son bastante complicadas, sin embargo, y ciertos tipos de informacin no pueden extraerse ni siquiera usando SQL. Se dispone de varias tcnicas y herramientas para ayudar a la toma de decisiones. Varias herramientas para el anlisis de datos permiten a los analistas ver los datos de diferentes maneras. Otras herramientas de anlisis realizan clculos previos de resmenes de grandes cantidades de datos, con objeto de dar respuestas rpidas a las preguntas. El estndar SQL:1999 contiene actualmente constructores adicionales para soportar el anlisis de datos. Los datos textuales tambin han crecido de manera explosiva. Estos datos carecen de estructura, a diferencia de los datos rgidamente estructurados de las bases de datos relacinales. La consulta de datos textuales no estructurados se denomina recuperacin de la informacin. Los sistemas de recuperacin de la informacin tienen mucho en comn con los sistemas de bases de datos en especial, el almacena-miento y recuperacin de datos en medios de almacenamiento secundarios. Sin embargo, el nfasis en el campo de los sistemas de informacin es diferente del de los sistemas de bases de datos, y se concentra en aspectos como las consultas basadas en palabras clave; la relevancia de los documentos para la consulta, y el anlisis, clasificacin e indexacin de los documentos. En el Captulo 14 se trata la ayuda a la toma de decisiones, incluyendo el procesamiento analtico en lnea y la minera de datos.

1.11 Arquitectura de las bases de datos


Ahora es posible ofrecer una visin nica (Figura 1.6) de los diversos componentes de los sistemas de bases de datos y de las conexiones existentes entre ellos. La arquitectura de los sistemas de bases de datos se ve muy influida por el sistema informtico sub-yacente sobre el que se ejecuta el sistema de bases de datos. Los sistemas de bases de datos pueden estar centralizados o ser del tipo cliente-servidor, en los que una mquina servidora ejecuta el trabajo en nom-bre de multitud de mquinas clientes. Los sistemas de bases de datos pueden disearse tambin para aprovechar las arquitecturas de computadoras paralelas. Las bases de datos distribuidas se extienden por varias mquinas geogrficamente separadas. Hoy en da la mayor parte de los usuarios de los sistemas de bases de datos no est presente en el lugar fsico en que se encuentra el sistema de bases de datos, sino que se conectan a l a travs de una red. Por tanto, se puede diferenciar entre los sistemas clientes, en los que trabajan los usuarios remotos de la base de datos, y los sistemas servidores, en los que se ejecutan los sistemas de bases de datos. Las aplicaciones de bases de datos suelen dividirse en dos o tres partes, como puede verse en la Fi-gura 1.7. En una arquitectura de dos capas, la aplicacin se divide en un componente que reside en la mquina cliente, que llama a la funcionalidad del sistema de bases de datos en la mquina servidora mediante instrucciones del lenguaje de consultas. Los estndares de interfaces de programas de aplicacin como ODBC y JDBC se usan para la interaccin entre el cliente y el servidor.

Captulo 1

Introduccin

Figura 1.6

Arquitectura del sistema.

En cambio, en una arquitectura de tres capas, la mquina cliente acta simplemente como una par visible al usuario y no contiene ninguna llamada directa a la base de datos. En vez de eso, el extremo cliente se comunica con un servidor de aplicaciones, generalmente mediante una interfaz de formularios. El servidor de aplicaciones, a su vez, se comunica con el sistema de bases de datos para tener acceso a los datos. La lgica de negocio de la aplicacin, que establece las acciones que se deben realizar segn las condiciones reinantes, se incorpora en el servidor de aplicaciones, en lugar de estar distribuida entre mltiples clientes. Las aplicaciones de tres capas resultan ms adecuadas para aplicaciones de gran tamao y para las aplicaciones que se ejecutan en World Wide Web.

1.12 Usuarios y administradores de bases de datos


Uno de los objetivos principales de los sistemas de bases de datos es recuperar informacin de la base de datos y almacenar en ella informacin nueva. Las personas que trabajan con una base de datos pueden clasificar como usuarios o administradores de bases de datos.

1.12 21

Usuarios y administradores de bases de datos

cliente

servidor (a) Arquitectura de dos capas (b) Arquitectura de tres capas Figura 1.7 Arquitecturas de dos y tres capas.

1.12.1 Usuarios de bases de datos e interfaces de usuario


Hay cuatro tipos diferentes de usuarios de los sistemas de bases de datos, diferenciados por la forma en que esperan interactuar con el sistema. Se han diseado diferentes tipos de interfaces de usuario para los diferentes tipos de usuarios. Los usuarios normales son usuarios no sofisticados que interactan con el sistema invocando alguno de los programas de aplicacin que se han escrito previamente. Por ejemplo, un cajero bancario que necesita transferir 50 de la cuenta A a la cuenta B invoca un programa llamado transferencia. Ese programa le pide al cajero el importe de dinero que se va a transferir, la cuenta desde la que se va a transferir el dinero y la cuenta a la que se va a transferir el dinero. Como ejemplo adicional, considrese un usuario que desea averiguar el saldo de su cuenta en World Wide Web. Ese usuario puede acceder a un formulario en el que introduce su nmero de cuenta. Un programa de aplicacin en el servidor Web recupera entonces el saldo de la cuenta, usando el nmero de cuenta proporcionado, y devuelve la informacin al usuario. La interfaz de usuario habitual para los usuarios normales es una interfaz de formularios, donde el usuario puede rellenar los campos correspondientes del formulario. Los usuarios normales tambin pueden limitarse a leer informes generados por la base de datos. o Los programadores de aplicaciones son profesionales informticos que escriben programas de aplicacin. Los programadores de aplicaciones pueden elegir entre muchas herramientas para desarrollar las interfaces de usuario. Las herramientas de desarrollo rpido de aplicaciones (DRA) son herramientas que permiten al programador de aplicaciones crear formularios e informes con un mnimo esfuerzo de programacin. Los usuarios sofisticados interactan con el sistema sin escribir programas. En su lugar, formulan sus consultas en un lenguaje de consultas de bases de datos. Remiten cada una de las consultas al procesador de consultas, cuya funcin es dividir las instrucciones LMD en instrucciones que el gestor de almacenamiento entienda. Los analistas que remiten las consultas para explorar los datos de la base de datos entran en esta categora. o Los usuarios especializados son usuarios sofisticados que escriben aplicaciones de bases de datos especializadas que no encajan en el marco tradicional del procesamiento de datos. Entre estas aplicaciones estn los sistemas de diseo asistido por computadora, los sistemas de bases de conocimientos y los sistemas expertos, los sistemas que almacenan datos con tipos de datos complejos (por ejemplo, los datos grficos y los datos de sonido) y los sistemas de modelado del entorno. En el Captulo 9 se estudian varias de estas aplicaciones.

22

Captulo 1

Introduccin

1.12.2 Administrador de bases de datos


Una de las principales razones de usar SGBD es tener un control centralizado tanto de los datos como de los programas que tienen acceso a esos datos. La persona que tiene ese control central sobre el sistema se denomina administrador de bases de datos (ABD). Las funciones del ABD incluyen: La definicin del esquema. El ABD crea e esquema original de la base de datos mediante la ejecucin de un conjunto de instrucciones de definicin de datos en el LDD. La definicin de la estructura y del mtodo de acceso. La modificacin del esquema y de la organizacin fsica. El ABD realiza modificaciones en el esquema y en la organizacin fsica para reflejar las necesidades cambiantes de la organizacin, o para alterar la organizacin fsica a fin de mejorar el rendimiento. La concesin de autorizacin para el acceso a los datos. Mediante la concesin de diferentes tipos de autorizacin, el administrador de bases de datos puede regular las partes de la base de datos a las que puede tener acceso cada usuario. La informacin de autorizacin se guarda en una estructura especial del sistema que el SGBD consulta siempre que alguien intenta tener acceso a los datos del sistema. El mantenimiento rutinario. Algunos ejemplos de las actividades de mantenimiento rutinario del administrador de la base de datos son: D Copia de seguridad peridica de la base de datos, bien sobre cinta o sobre servidores remotos para impedir la prdida de datos en caso de desastres como las inundaciones. D Asegurarse de que se dispone de suficiente espacio libre en disco para las operaciones nor-males y aumentar el espacio en disco segn sea necesario. D Supervisar los trabajos que se ejecuten en la base de datos y asegurarse de que el rendimiento no se degrade debido a que algn usuario haya remitido tareas muy costosas.

1.13 Historia de los sistemas de bases de datos


El procesamiento de datos impulsa el crecimiento de las computadoras, como lo ha hecho desde lo primeros das de las computadoras comerciales. De hecho, la automatizacin de las tareas de procesa miento de datos precede a las computadoras. Las tarjetas perforadas, inventadas por Hermn Hollerith se emplearon a principios del siglo XX para registrar los datos del censo de Estados Unidos, y se usaron sistemas mecnicos para procesar las tarjetas y para tabular los resultados. Las tarjetas perforadas se usaron posteriormente con profusin como medio para introducir datos en las computadoras. Las tcnicas de almacenamiento y de procesamiento de datos han evolucionado a lo largo de los ao: Aos cincuenta y primeros aos sesenta: se desarrollaron las cintas magnticas para el almacenamiento de datos. Las tareas de procesamiento de datos como la elaboracin de nminas se automatizaron, con los datos almacenados en cintas. El procesamiento de datos consista en leer datos de una o varias cintas y escribir datos en una nueva cinta. Los datos tambin se poda introducir desde paquetes de tarjetas perforadas e imprimirse en impresoras. Por ejemplo, los aumentos de sueldo se procesaban introduciendo los aumentos en las tarjetas perforadas y leyendo el paquete de cintas perforadas de manera sincronizada con una cinta que contena los detalles principales de los salarios. Los registros deban estar en el mismo orden. Los aumentos de sueldo se aadan a los sueldos ledos de la cinta maestra y se escriban en una nueva cinta esa nueva cinta se converta en la nueva cinta maestra. Las cintas (y los paquetes de tarjetas perforadas) slo se podan leer secuencialmente, y el tamao de datos era mucho mayor que la memoria principal; por tanto, los programas de procesarniento de datos se vean obligados a procesar los datos en un orden determinado, leyendo mezclando datos de las cintas y de los paquetes de tarjetas perforadas. Finales de los aos sesenta y aos setenta: el empleo generalizado de los discos duros a final de los aos sesenta modific en gran medida la situacin del procesamiento de datos, ya que

1.13

Historia de los sistemas de bases de datos

23

permitieron el acceso directo a los datos. La ubicacin de los datos en disco no era importante, ya que se poda tener acceso a cualquier posicin del disco en slo unas decenas de milisegundos. Los datos se liberaron as de la tirana de la secuencialidad. Con los discos pudieron crearse las bases de datos de red y las bases de datos jerrquicas, que permitieron que las estructuras de datos como las listas y los rboles pudieran almacenarse en disco. Los programadores pudieron crear y manipular estas estructuras de datos. El artculo histrico de Codd [1970] defini el modelo relacional y las formas no procedimentales de consultar los datos en el modelo relacional, y as nacieron las bases de datos relacinales. La simplicidad del modelo relacional y la posibilidad de ocultar completamente los detalles de implementacin a los programadores resultaron realmente atractivas. Codd obtuvo posteriormente el prestigioso premio Turing de la ACM (Association of Computing Machinery, asociacin de maquinaria informtica) por su trabajo. Aos ochenta: aunque acadmicamente interesante, el modelo relacional no se us inicialmente en la prctica debido a sus inconvenientes en cuanto a rendimiento; las bases de datos relacinales no podan igualar el rendimiento de las bases de datos de red y jerrquicas existentes. Esta situacin cambi con System R, un proyecto innovador del centro de investigacin IBM Research que desarroll tcnicas para la construccin de un sistema de bases de datos relacinales eficiente. En Astrahan et al. [1976] y Chamberlin et al. [1981] se pueden encontrar excelentes visiones generales de System R. El prototipo de System R completamente funcional condujo al primer producto de bases de datos relacinales de IBM: SQL/DS. Los primeros sistemas comerciales de bases de datos relacinales, como DB2 de IBM, Oracle, Ingres y Rdb de DEC, desempearon un importante papel en el desarrollo de tcnicas para el procesamiento eficiente de las consultas declarativas. En los primeros aos ochenta las bases de datos relacinales haban llegado a ser competitivas frente a los sistemas de bases de datos jerrquicas y de red incluso en cuanto a rendimiento. Las bases de datos relacinales eran tan sencillas de usar que finalmente remplazaron a las bases de datos jerrquicas y de red; los programadores que usaban esas bases de datos se vean obligados a tratar muchos detalles de implementacin de bajo nivel y tenan que codificar sus consultas de forma procedimental. Lo que era an ms importante, tenan que tener presente el rendimiento durante el diseo de los programas, lo que supona un gran esfuerzo. En cambio, en las bases de datos relacinales, casi todas estas tareas de bajo nivel las realiza de manera automtica el sistema de bases de datos, lo que libera al programador para que se centre en el nivel lgico. Desde su obtencin de liderazgo en los aos ochenta, el modelo relacional ha reinado sin discusin entre todos los modelos de datos. Los aos ochenta tambin fueron testigos de una gran investigacin en las bases de datos paralelas y distribuidas, as como del trabajo inicial en las bases de datos orientadas a objetos. Primeros aos noventa: el lenguaje SQL se dise fundamentalmente para las aplicaciones de ayuda a la toma de decisiones, que son intensivas en consultas, mientras que el objetivo principal de las bases de datos en los aos ochenta eran las aplicaciones de procesamiento de transacciones, que son intensivas en actualizaciones. La ayuda a la toma de decisiones y las consultas volvieron a emerger como una importante rea de aplicacin para las bases de datos. El uso de las herramientas para analizar grandes cantidades de datos experiment un gran crecimiento. En est poca muchas marcas de bases de datos introdujeron productos de bases de datos paralelas. Las diferentes marcas de bases de datos tambin comenzaron a aadir soporte relacional orientado a objetos a sus bases de datos. Finales de los aos noventa: el principal acontecimiento fue el crecimiento explosivo de World Wide Web. Las bases de datos se implantaron mucho ms ampliamente que nunca. Los sistemas de bases de datos tenan que soportar tasas de procesamiento de transacciones muy elevadas, as como una habilidad muy alta y tener disponibilidad 24 x 7 (disponibilidad 24 horas al da y 7 das a la semana, lo que significa que no hay momentos de inactividad debidos a actividades de mantenimiento planificadas). Los sistemas de bases de datos tambin tenan que soportar interfaces Web para los datos.

Captulo 1

Introduccin

Principios del siglo XXI: los principios del siglo XXI han sido testigos de la emergencia de XML y de su lenguaje de consultas asociado, XQuery, como nueva tecnologa de las bases de datos. Todava es pronto para decir el papel que XML desempear en las bases de datos futuras. En este periodo tambin se ha podido presenciar el crecimiento de las tcnicas de "informtica autnoma/administracin automtica" para la minimizacin del esfuerzo de administracin.

1.14 Resumen
Un sistema gestor de bases de datos (SGBD) consiste en un conjunto de datos interrelacionados y en un conjunto de programas para tener acceso a esos datos. Los datos describen una empresa concreta. El objetivo principal de un SGBD es proporcionar un entorno que sea tanto conveniente como eficiente para las personas que lo usan para la recuperacin y almacenamiento de informacin. Los sistemas de bases de datos resultan ubicuos hoy en da, y la mayor parte de la gente interacta, directa o indirectamente, con bases de datos muchas veces al da. Los sistemas de bases de datos se disean para almacenar grandes cantidades de informacin. La gestin de los datos implica tanto la definicin de estructuras para el almacenamiento de la informacin como la provisin de mecanismos para la manipulacin de la informacin. Adems, los sistemas de bases de datos deben preocuparse de la seguridad de la informacin almacena-da, en caso de cadas del sistema o de intentos de acceso sin autorizacin. Si los datos deben compartirse entre varios usuarios, el sistema debe evitar posibles resultados anmalos. Uno de los propsitos principales de los sistemas de bases de datos es ofrecer a los usuarios una visin abstracta de los datos. Es decir, el sistema oculta ciertos detalles de la manera en que los datos se almacenan y mantienen. Por debajo de la estructura de la base de datos se halla el modelo de datos: un conjunto de herramientas conceptuales para describir los datos, las relaciones entre los datos, la semntica de los datos y las restricciones de los datos. Un lenguaje de manipulacin de datos (LMD) es un lenguaje que permite a los usuarios tener acceso a los datos o manipularlos. Los LMDs no procedimentales, que slo necesitan que el usuario especifique los datos que necesita, sin especificar exactamente la manera de obtenerlos, se usan mucho hoy en da. Un lenguaje de definicin de datos (LDD) es un lenguaje para la especificacin del esquema de la base de datos y otras propiedades de los datos. El modelo de datos relacional es el ms implantado para el almacenamiento de datos en las bases de datos. Otros modelos de datos son el modelo de datos orientado a objetos, el modelo relacional orientado a objetos y los modelos de datos semiestructurados. El diseo de bases de datos supone sobre todo el diseo del esquema de la base de datos. El modelo de datos entidad-relacin (E-R) es un modelo de datos muy usado para el diseo de bases de datos. Proporciona una representacin grfica conveniente para ver los datos, las relaciones y las restricciones. Cada sistema de bases de datos tiene varios subsistemas: D El subsistema gestor de almacenamiento proporciona la interfaz entre los datos de bajo nivel almacenados en la base de datos y los programas de aplicacin y las consultas remitidas al sistema. D El subsistema procesador de consultas compila y ejecuta instrucciones LDD y LMD. El gestor de transacciones garantiza que la base de datos permanezca en un estado consistente (correcto) a pesar de los fallos del sistema. El gestor de transacciones garantiza que la ejecucin de las transacciones concurrentes se produzca sin conflictos.

Ejercicios

25

Las aplicaciones de bases de datos suelen dividirse en una fachada que se ejecuta en las mquinas clientes y una parte que se ejecuta en segundo plano. En las arquitecturas de dos capas la fachada se comunica directamente con una base de datos que se ejecuta en segundo plano. En las arquitecturas de tres capas la parte en segundo plano se divide a su vez en un servidor de aplicaciones y un servidor de bases de datos. Los usuarios de bases de datos se pueden dividir en varias clases, y cada clase de usuario suele usar un tipo diferente de interfaz para la base de datos.

Trminos de repaso
Sistema gestor de bases de datos (SGBD). Aplicaciones de sistemas de bases de datos. Sistemas de archivos. Inconsistencia de datos. Restricciones de consistencia. Vistas de datos. * Modelo de datos relacional. * Modelo de datos orientado a objetos. * Modelo de datos relacional orientado a objetos. Lenguajes de bases de datos. * Lenguaje de definicin de datos. * Lenguaje de manipulacin de datos. * Lenguaje de consultas. Diccionario de datos. Metadatos. Transacciones. Concurrencia. Programa de aplicacin. Administrador de bases de datos (ABD). Mquinas cliente y servidor.

Abstraccin de datos. Ejemplar de la base de datos. Esquema. D Esquema de la base de datos. D Esquema fsico. Esquema lgico. Independencia fsica de los datos. Modelos de datos. Modelo entidad-relacin.

Ejercicios prcticos
1.1 En este captulo se han descrito varias ventajas importantes de los sistemas gestores de bases de datos. Cules son sus dos inconvenientes? 1.2 Indquense siete lenguajes de programacin que sean procedimentales y dos que no lo sean. Qu grupo es ms fcil de aprender a usar? Expliquese la respuesta. 1.3 Indquense seis pasos importantes que se deben dar para configurar una base de datos para una empresa dada. 1.4 Considrese un array de enteros bidimensional de tamao n x m que se va a usar en el lenguaje de programacin preferido del lector. Usando el array como ejemplo, ilstrese la diferencia (a) entre los tres niveles de abstraccin de datos y (b) entre el esquema y los ejemplares.

Ejercicios
1.5 Indquense cuatro aplicaciones que se hayan usado que sea muy posible que utilicen un sistema de bases de datos para almacenar datos persistentes. 1.6 Indquense cuatro diferencias significativas entre un sistema de procesamiento de archivos y un SGBD. 1.7 Explquese la diferencia entre independencia de datos fsica y lgica. 1.8 Indquense cinco responsabilidades del sistema gestor de bases de datos. Para cada responsabilidad, explquense los problemas que surgiran si no se asumiera esa responsabilidad.

Captulo 1

Introduccin

1.9 Indquense al menos dos razones para que los sistemas de bases de datos soporten la manipulacin de datos mediante un lenguaje de consultas declarativo como SQL, en vez de limitarse a ofrecer una biblioteca de funciones de C o de C++ para llevar a cabo la manipulacin de los datos. 1.10 Explquense los problemas que causa el diseo de la tabla de la Figura 1.5. 1.11 Cules son las cinco funciones principales del administrador de bases de datos?

Notas bibliogrficas
A continuacin se ofrece una relacin de libros de propsito general, colecciones de artculos de investigacin y sitios Web sobre bases de datos. Los captulos siguientes ofrecen referencias a material sobre cada tema descrito en ese captulo. Codd [1970] es el artculo histrico que introdujo el modelo relacional. Entre los libros de texto que tratan los sistemas de bases de datos estn Abiteboul et al. [1995], Date [2003], Elmasri y Navathe [2003], O'Neil y O'Neil [2000], Ramakrishnan y Gehrke [2002], Garcia-Molina et al. [2001] y Ullman [1988]. El tratamiento del procesamiento de transacciones en libros de texto se puede encontrar en Bernstein y Newcomer [1997] y Gray y Reuter [1993]. Varios libros incluyen colecciones de artculos de investigacin sobre la gestin de las bases de datos. Entre stos se encuentran Bancilhon y Buneman [1990], Date [1986], Date [1990], Kim [1995], Zaniolo et al. [1997] y Hellerstein y Stonebraker [2005]. Un repaso de los logros en la gestin de bases de datos y una valoracin de los desafos en la inves-tigacin futura aparece en Silberschatz et al. [1990], Silberschatz et al. [1996], Bernstein et al. [1998] y Abiteboul et al. [2003]. La pgina inicial del grupo de inters especial de la ACM en gestin de datos (www.acm.org/sigmod) ofrece gran cantidad de informacin sobre la investigacin en bases de datos. Los sitios Web de los fabricantes de bases de datos (vase a continuacin el apartado Herramientas) pro-porciona detalles acerca de sus respectivos productos.

Herramientas
Hay gran nmero de sistemas de bases de datos comerciales actualmente en uso. Entre los princi-pales estn: DB2 de IBM (www.IBM.com/software/data), Oracle (www.oracle.com), SQL Server de Mi-crosoft (www.microsoft.com/SQL), Informix (www.informix.com) (ahora propiedad de IBM) y Sybase (www.sybase.com). Algunos de estos sistemas estn disponibles gratuitamente para uso personal o no comercial, o para desarrollo, pero no para su implantacin real. Tambin hay una serie de sistemas de bases de datos gratuitos o de dominio pblico; los ms usados son

MySQL (www.mySQL.com) y PostgreSQL (www.postgreSQL.org).


Una lista ms completa de enlaces a sitios Web de fabricantes y a otras informaciones se encuentra disponible en la pgina inicial de este libro, en http://www.mhe.es/universidad/informatica/fundamentos