TEMA1-Gestion de Bases de Datos - RAMA
-
Upload
carlosmejuto -
Category
Documents
-
view
225 -
download
0
Transcript of TEMA1-Gestion de Bases de Datos - RAMA
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
1/37
Sistemas de
almacenamientode la informacin1
Ojo o
Aprender qu son y cmose utilizan los archivossecuenciales, aleatorios eindexados.
Entenderlos en un contextode evolucin histrica.
Conocer sus ventajas einconvenientes.
Entender en qu manerahan influido en el posteriordiseo de las bases dedatos relacionales.
4
4
4
4
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
2/37
20
GESTIN DE BASES DE DATOS RA-MA
1.1
sistema basadO en archivOs
1.1.1 histOria de lOs archivOs
Debemos entender la evolucin de las bases de datos como un proceso
continuo de modernizacin que nos ha llevado desde el papel hasta el estado
actual. Hace treinta aos, las necesidades eran menores y los grandes
ordenadores enfocaban sus objetivos a controlar los procesos bsicos de unaempresa, que en aquel momento eran la contabilidad en primer trmino y tras
ello la facturacin.
Hoy da controlamos muchas ms cosas; los procesos de la produccin; la
optimizacin de los recursos; los documentos de la empresa; los centros de
comunicacin con el cliente; la inteligencia de negocio aplicada a las ventas y
tantos otros.
En cambio, hace treinta aos, los problemas se podan solucionar con una
decena de archivos, Quin me quiere comprar algo? Mis clientes. Por tantonecesito un archivo de clientes. Quin me suministra la materia prima?
Mis proveedores. Por tanto necesitamos un archivo de proveedores. Y as
sucesivamente.
La mayor parte de las empresas de hace treinta aos utilizaban archivos de
papel, donde anotaban los datos de sus clientes en forma de fichas escritas con
una mquina de escribir de la poca.
Por eso los archivos tambin reciban el nombre de ficheros, y por esa razn
tambin la primera informatizacin empezaba por pasar del sistema de fichasde papel o de cartulina a un sistema informatizado.
La principal ventaja del sistema informatizado estaba en evitar tiempo
para encontrar una ficha de papel dentro de un enorme cajn de fichas. Poder
encontrar una ficha en menos de un minuto ya era una importante diferencia
con respecto a enviar a una persona a buscarla a otra planta del edificio (el
archivo de muchas empresas sola estar en los stanos) y trarnosla al cabo de
cinco minutos.
Pasbamos, pues, de un sistema en que el soporte era papel, a un nuevosistema en el que el soporte era digital.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
3/37
21
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
1.1.2 mtOdOs de accesO a lOs datOs
Toda la historia de los archivos ha ido ligada al avance de la tecnologa;principalmente del hardware y en menor medida del software.
A continuacin vamos a ver cuatro tipos de archivos, aunque los ms
utilizados han sido tres:
1 Archivos secuenciales.
2 Archivos de acceso aleatorio.
3 Archivos indexados.
4 Archivos hash.
Los archivos de los tipos 1, 2 y 3 son los ms comunes, puesto que cuando
se empezaron a utilizar los archivos hash, el concepto de base de datos cambi
y se cuestion tambin el complejo sistema hash frente a sus mejoras de
rendimiento.
Veamos con detalle estos tipos de acceso a los archivos.
1.2 archivOs secuenciales
Situmonos en la poca. Los sistemas de almacenamiento fsico eran
tambores de cinta magntica de un dimetro comparable al de los antiguos
discos de vinilo conocidos como LP.
En casa es posible que nuestros padres tengan an unas cintas de msica
llamadas cassettes. Pues bien, las unidades de cinta informticas eran como
unos cassettes gigantes donde se almacenaban datos digitales: ceros y unos enorden secuencial.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
4/37
22
GESTIN DE BASES DE DATOS RA-MA
Qu quiere decir secuencial? Que van ordenados en posiciones sucesivas,
y que si queremos llegar a la posicin nmero 100, debemos pasar antes por la
1, la 2 y as sucesivamente; secuencialmente.
Este era el hardware que tenamos y el software de gestin ms sencillo era
el procesador de textos.
No pensemos en un procesador de textos como Word. Word es una maravilla
comparado con lo que haba en la poca. No haba tipos de letra. No podamos
ver cmo quedaba el formato del documento. Tenamos editores de lneas; es
decir, disponamos de instrucciones para abrir un archivo concreto quedndonos
en la lnea cero por defecto; otros comandos para desplazarnos hasta una lnea,
mostrar su contenido; modificar a partir de una posicin y almacenar loscambios lnea a lnea. Tras ello, con otro comando grabbamos el archivo y
finalmente con el comando Q salamos de nuevo a la pantalla negra del sistema
operativo.
El sistema ms normal para crear un archivo de clientes era escribir su
nombre, separar con un retorno de carro, escribir su direccin seguida de otro
retorno de carro, poblacin y as sucesivamente.
Entre cliente y cliente se colocaba una marca de final de bloque que indicaba
el inicio de los datos de un nuevo cliente o bien el final del archivo de clientes.
Cada uno de estos bloques con los datos de un cliente recibe el nombre de
registro y cada una de estas informaciones (nombre, direccin, poblacin, etc.)
recibe el nombre de campo.
Por tanto, un registro se compone de campos.
Veamos un ejemplo:
Juan Martnez
Calle del Pez, 5
Madrid
Comercial Martnez
Calle de la Cuesta, 10
Sevilla
Jos Snchez
Calle Mayor, 7
Salamanca
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
5/37
23
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
1.2.1 utilidad de lOs archivOs secuenciales paraimprimir
Este tipo de archivos era muy til si tena justamente este formato, puesto
que serva para imprimir etiquetas y enviar circulares. La marca que
tambin poda sustituirse por un punto solitario, quedaba en el espacio entre
etiquetas y no se vea.
Esto funcionaba siempre que tuvisemos el cuidado de colocar bien el
cabezal de la impresora en la primera etiqueta. Si no, tenamos que abortar el
listado porque las etiquetas salan desplazadas. Y a repetir de nuevo.
Qu era el cabezal de la impresora? Slo tenamos impresoras de agujas.
Las lser tardaron ms tiempo en salir al mercado y su precio era prohibitivo
para la mayor parte de empresas; slo las compraban las imprentas!
Las impresoras de agujas disponan de un cabezal con una matriz de filas
de 9 agujas que golpeaban una cinta empapada en tinta, dejando la huella del
impacto sobre el papel o en este caso sobre la etiqueta.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
6/37
24
GESTIN DE BASES DE DATOS RA-MA
Pues bien, este era el sistema de trabajo con un archivo de clientes, y en la
primera poca eran slo los informticos (con bata blanca) los autorizados a
trabajar con los editores de lneas para confeccionar los archivos de clientes.
Imprimir las etiquetas para enviar las cartas era un trabajo que, si se haca
a mquina, podra tardar semanas. Con el ordenador y la impresora se poda
hacer en media hora.
1.2.2 caractersticas de lOs archivOs secuenciales
1.2.2.1 l o ogo
Para leer un registro situado en medio del archivo debemos pasar por todos
los registros anteriores.
1.2.2.2 no oo (fow o)
En los archivos secuenciales se realiza la lectura slo hacia delante. Por
ejemplo: si nosotros leemos el primer registro del cliente, el segundo, el tercero,
el cuarto y despus deseamos volver al segundo, la nica forma de hacerlo
consiste en cerrar el archivo y volver a abrirlo, ya que no podemos retroceder.
1.2.2.3 lo o o ooo
Los archivos secuenciales no permiten el acceso simultneo (concurrencia)
de varios usuarios. Si por desventura se accediera simultneamente en modo
escritura, los resultados son impredecibles: puede producirse corrupcin de
datos por escrituras entremezcladas o desaparicin inadvertida de datos. Elltimo que escribe tiene mayores posibilidades de mantener su informacin.
Evitemos la concurrencia en archivos secuenciales.
1.2.2.4 e g o
Todos los registros deben apareceren orden. Esto quiere decir que si nosotros
escogemos el orden Nombre, Direccin, Poblacin en el primer registro, no
podemos cambiarlo por Direccin, Poblacin, Nombre en el siguiente registro.
El programa de lectura de un archivo secuencial va a ciegas leyendo lneas y
necesita saber qu significado tiene cada lnea segn su orden.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
7/37
25
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
Pero, qu pasa si queremos grabar ms datos de cada cliente? Por ejemplo
su telfono o su cdigo fiscal, o sus condiciones de pago
La primera consecuencia es que debemos rehacer todos los programas de
lectura para tener en cuenta estos nuevos campos. Y esto puede representar
mucho trabajo si tenemos que acabarlo de un da para otro.
La segunda consecuencia es que ese archivo ya no nos servira para imprimir
etiquetas. Tendramos que guardar un archivo central con todos los datos y, a
partir de ste, extraer en otro archivo slo los datos que deseamos imprimir.
Tras ello ya podramos lanzar el nuevo listado por la impresora. Por tanto,
debemos crear un nuevo proceso y complicar el que ya tenamos.
1.2.2.5 e oo oo o
Las lecturas y las escrituras dependen del modo en que se haya abierto un
archivo secuencial. En el momento de abrir un archivo, dependiendo del modo
que hayamos escogido, quedaremos autorizados a leer o a escribir, pero no a
las dos cosas.
1.2.2.6 l o o
Las operaciones de lectura pueden ser parciales, pero las operaciones de
escritura conllevan obligatoriamente la escritura total de toda la secuencia
completa de registros.
Dicho de otro modo: al abrir un archivo en modo escritura estamos borrando
su contenido anterior si lo hubiere.
Por esta razn algunos lenguajes de programacin contienen un modo de
apertura llamadoAppend que escribe al final de un archivo existente en vezde reescribirlo de nuevo.
1.2.2.7 l f o (eOF)
Las operaciones de lectura deben comprobar siempre que no rebasan el
final del archivo secuencial, mediante la comparacin del carcter de final
de archivo (EOF o End Of File). Este carcter se coloca siempre y de modo
implcito al cerrar un archivo secuencial en modo escritura.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
8/37
26
GESTIN DE BASES DE DATOS RA-MA
1.2.2.8 boo go oo oo
El borrado de un registro puede hacerse por varios mtodos, aunque el ms
utilizado consiste en la escritura de todos los registros menos el que deseamos
eliminar.
Otro sistema es mantener la informacin, pero marcarla como borrada, lo
cual implica hacer consideraciones de programacin ms complejas.
1.2.2.9 l o o oo
Existe una posibilidad realmente una tcnica que no se utilizaba en los
primeros aos del uso de los archivos secuenciales y que tiene que ver con la
marca de sincronismo entre registros.
La marca de sincronismo es una lnea con un conenido especfico que es
palabra reservada. Es decir, si la marca que nosotros elegimos es ,
no puede haber ningn cliente que se llame ni ninguna direccin ni
poblacin que sea .
Por tanto, cuando nosotros veamos en una lnea un contenido aislado como
la palabra reservada sabremos que se acaba un registro y a continuacin
empieza otro con el mismo orden.
Esto nos permite crear registros con campos que tienen este orden:
Nombre
Direccin
Poblacin
CIF
Telfono
Email
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
9/37
27
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
Y nos permite tambin mezclar registros con diferentes estructuras, siempre
que haya una parte inicial comn:
Nombre
Direccin
Poblacin
CIF
Telfono
Email
Nombre
Direccin
Poblacin
Nombre
Direccin
Poblacin
CIF
Telfono
Email
La tcnica se basa en la lectura lnea a lnea. Cuando se descubre que
el contenido de una lnea es , sabemos que el siguiente campo es el
primer campo del siguiente registro y que, por tanto, debemos omitir la lectura
de los posibles campos que puedan seguir pertenecientes al registro actual.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
10/37
28
GESTIN DE BASES DE DATOS RA-MA
1.2.2.10 rgo og
Los registros de un archivo secuencial tienen una longitud variable porque
tambin sus campos tienen una longitud variable.
No ocupa el mismo espacio un cliente que se llameJuan Snchez, que otro
cliente que se llameJos Mara Gonzlez de Castro y Santos de Carballar.
Esto implica que a priori no vamos a saber el tamao de las variables que
debemos usar en memoria para almacenar estos contenidos.
Para superar este tipo de problemas apareci el archivo de acceso aleatorio,
que veremos ms adelante.
1.2.2.11 coo g oo xo
El contenido de un archivo secuencial es legible en un procesador de
textos.
Pas mucho tiempo antes de que aparecieran los editores de pantalla
completa que permitan mover el cursor hasta la lnea que queramos con las
flechas del teclado o con combinaciones de teclas.
El primero de ellos fue Wordstar y aqu ya empezamos a hablar de
procesadores de textos. No funcionaban por comandos sino por combinaciones
de teclas. En este momento las mquinas de escribir ya empezaban a estar
amenazadas.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
11/37
29
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
1.2.2.12 coo o o o o
Los archivos secuenciales siguen siendo buenas opciones para
almacenamiento de pocos registros en los que la velocidad de acceso no sea un
punto clave.
Todos los sistemas operativos soportan operaciones de lectura y escritura
sobre archivos secuenciales.
Todos los lenguajes de programacin estn dotados de funciones para
acceder a archivos secuenciales.
Los programas encargados de las altas, bajas, modificaciones, consultas,listados y otras operaciones que afectan exclusivamente a un archivo (por
ejemplo, clientes) reciben el nombre de mantenimientos.
Podemos, pues, realizar mantenimientos de archivos secuenciales mediante
programas escritos en lenguajes de todo tipo: antiguos y modernos, como BASIC,
Pascal, Fortran, COBOL, C/C++, Java, Visual Basic, C#, Prolog, LISP, etc.
En nuestro caso vamos a utilizar cuatro lenguajes de gran difusin comercial
y acadmica:
1. Visual C++.
2. Visual Basic 6.0.
3. Java.
4. C#.
En las actividades encontraremos ejemplos en estos cuatro lenguajes.
1.3
archivOs de accesO aleatOriO
Si los archivos secuenciales se emparejan en el tiempo con el hardware de
los tambores de cinta magntica, los archivos de acceso aleatorio aparecen con
el disquete y el disco duro.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
12/37
30
GESTIN DE BASES DE DATOS RA-MA
Los archivos de acceso aleatorio no estn sujetos a la esclavitud de pasar
por el inicio hasta llegar a la porcin de la informacin que nos interesa.
En los archivos de acceso aleatorio podemos colocarnos en una posicin
determinada expresada por un nmero.
Por ejemplo, podemos ir directamente a la posicin 100, volver atrs hasta
la posicin 20, avanzar ahora hasta la 200 y as tantas veces como queramos.
Esto implica que si utilizamos una estructura delimitada en longitud,podemos calcular la posicin en la que debemos situarnos para leer un
registro.
La medida bsica de la posicin del puntero de lectura es el byte; primer
byte, segundo byte y as sucesivamente.
Esto quiere decir que, si empleamos caracteres de dos bytes (por ejemplo,
en Unicode), las posiciones para leerlos sern la 0, la 2, la 4, etc., avanzando
cada vez de dos en dos.
Pongamos por caso que tenemos un registro como ste codificado en ANSI
(1 byte por carcter):
Nombre: 80 caracteres ANSI
Direccin: 100 caracteres ANSI
Poblacin: 50 caracteres ANSI
Su longitud ser de 230 caracteres. Esto implica que el primer registro se
encontrar en la posicin 0; el segundo registro se encontrar en la posicin
230; el tercero estar en la posicin 460 y as sucesivamente.
n
n
n
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
13/37
31
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
Por tanto, podemos decir que la posicin ser:
Pos = NumRegistro * LongitudRegistro
Si en cambio codificamos los caracteres en Unicode (UTF-16) de forma que
su longitud es de 16 bits por carcter, esto es 2 bytes, el registro quedar as:
Nombre: 80 caracteres UTF-16.
Direccin: 100 caracteres UTF-16.
Poblacin: 50 caracteres UTF-16.
Su longitud ser de 460 caracteres para un solo registro, ya que cada
carcter ocupa 2 bytes.
Ya tenemos la manera de calcular la posicin. Ahora, cada lenguaje de
programacin dispondr de su propia funcin para el posicionamiento del
cursor de lectura o de escritura para realizar el acceso aleatorio.
1.3.1 Qu sucede si un campO es de tipO numricO?
En los archivos secuenciales se guardaba el nmero con su formato
expresado en decimal: dgito a dgito. Por tanto, el nmero 10 ocupaba 2
caracteres y el nmero 1234567 ocupaba 7 caracteres.
En los archivos aleatorios no se guardan los dgitos, sino el valor binario.
Un nmero entero simple de 16 bits (de 0 a 65535) emplea 2 bytes.
n
n
n
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
14/37
32
GESTIN DE BASES DE DATOS RA-MA
Si se trata de un nmero entero de 32 bits (de 0 hasta 4.000 millones
aproximadamente) ocupa 4 bytes.
Si se trata de un nmero en coma flotante (normalmente se ajustan a la
norma IEE488 como Excel) usa 8 bytes para almacenar mantisa y exponente.
Estos datos ya no son legibles con un procesador de texto y si intentamos
leerlos nos aparecern caracteres extraos, con posibilidad de que el contenido
no aparezca entero, ya que es frecuente encontrar un valor binario que coincida
con el valor EOF (final de archivo).
1.3.2 caractersticas de lOs archivOs de accesOaleatOriO
1.3.2.1 pooo o
Permiten situar el puntero de lectura o escritura sobre una posicin
concreta del archivo sin necesidad de pasar por las posiciones anteriores,
con el consiguiente incremento de rapidez. Una sola apertura proporciona la
capacidad de avanzar y retroceder sin necesidad de reabrir el archivo.
1.3.2.2 rgo og fj
Todos los registros tienen la misma longitud, ya que se utiliza siempre una
estructura rgida dimensionada a la mxima longitud para cada campo.
1.3.2.3 a /
Permiten su apertura en modo mixto (lectura y escritura), de forma que con
una sola operacin de apertura podemos leer o escribir a voluntad en cualquier
posicin segn nos convenga.
1.3.2.4 p o o (o)
Al establecerse zonas especficas y limitadas de actuacin para lectura y
escritura, diversos usuarios pueden acceder y escribir en diferentes porciones
del archivo de forma simultnea.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
15/37
33
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
Esto lleva a considerar la posibilidad de concurrencia de dos usuarios en
el mismo registro. Para ello se utilizan algoritmos de gestin de los bloqueos.
Dichos algoritmos administran zonas (que no siempre coinciden con registros)y las marcan para evitar dicha concurrencia de forma temporal. El tema del
bloqueo lo trataremos ms adelante dentro de los captulos dedicados a bases
de datos relacionales.
1.3.2.5 doo xo o
Los archivos de acceso aleatorio deben dimensionarse hasta un nmero de
registros mximo en el momento de crearse.
1.3.2.6 boo go o
El borrado de un registro se realiza poniendo a 0 el espacio que ocupa;
rellenndolo con bytes con el valor binario 0. En sistemas ms complejos se
emplea un algoritmo de reutilizacin de gaps o espacios vacos, o incluso de
compactacin.
Si empleamos un algoritmo de compactacin de registros degaps, deberemos
ser conscientes de que el nmero de registro cambiar para un cliente dado
en el momento en que se reubica, por lo cual una clave de acceso basada en
nmero de registro no tendr validez.
Si utilizamos un algoritmo de reutilizacin degaps deberemos ser concientes
de que un cliente nuevo puede reutilizar el espacio de un cliente borrado. Por
tanto, si utilizamos referencias a su nmero de registro en otros archivos,
deberemos ser cuidadosos de que un cliente no sea falsamente referenciado en
otros archivos.
Estos son problemas de integridad referencial que se resuelven mejor en
sistemas gestores de bases de datos, como veremos ms adelante, y que fueron
una de las razones para realizar el cambio desde el sistema de informacin
basado en archivos al sistema de informacin basado en bases de datos.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
16/37
34
GESTIN DE BASES DE DATOS RA-MA
1.3.3 cOnsideraciOnes adiciOnales sObre lOs archivOsde accesO aleatOriO
Los archivos de acceso aleatorio estn especialente indicados para
aquellos casos en que el cdigo del registro (cliente, proveedor, etc.) pueda ser
directamente el nmero de registro en el que se guardan los datos.
Al trabajar con archivos de acceso aleatorio deberemos tener en cuenta no
rebasar nunca el final de archivo. Si nuestro archivo est dimensionado hasta
100 registros, intentar que no haya ningn usuario que nos pregunte por el 101
o por el 200. Para ello deberemos establecer nuestros sistemas de prevencin
desde el interfaz o desde el sistema de clculo de la posicin del puntero de
lectura / escritura.
Los archivos de acceso aleatorio son un paso ms que nos conduce por el
camino de los archivos indexados, puesto que constituyen el depsito de los
datos. Como veremos ms adelante, el almacenamiento temporal o no de las
claves es el elemento que lo diferencia de los indexados.
1.4
archivOs indeXadOs
Los archivos indexados son bsicamente archivos de acceso aleatorio a los
que se aade una utilidad para acceder al registro deseado a travs de una
clave.
En el caso de los archivos de acceso aleatorio, la clave es siempre el nmero
de registro.
Los archivos indexados pueden buscar un cliente segn su nombre, segn
su cdigo de identificacin fiscal o segn cualquier otro campo.
Para ello se construye una estructura de ndice por cada campo que se desea
indexar.
Esta estructura de ndice se mantiene en la memoria RAM de forma
ordenada, de manera que podamos encontrar rpidamente una relacin entre
el apellido de un cliente y el nmero de registro en el que se encuentra.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
17/37
35
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
Esto es lo que permite realizar las bsquedas por clave sin necesidad de
recorrer todos los registros de la base de datos.
Tradicionalmente, la estructura de informacin utilizada para localizar los
registros por clave es el rbol binario o rbol de ndices.
1.4.1 histOria y FunciOnamientO bsicO de lOs rbOlesde ndices
En el ao 1962, Giorgi Maxmovich Adelson-Velskii y Yevgueni Mijilovich
Landis, dos matemticos rusos, crearon un sistema de acceso muy rpido
llamado rbol AVL (Adelson-Velskii-Landis).
Un rbol se compone de nodos, que son los que contienen la informacin
de la clave y del nmero de registro en donde se encuentran los datos que nos
interesan.
Dentro de un nodo tenemos:
1. El propio valor de la clave.
2. Un dato til para referenciar en donde se encuentran los campos del
registro, como por ejemplo, un nmero de registro para ir a buscar los
datos.
3. Un puntero hacia un nodo que contenga una clave con un valor inferioro un nulo si no la hay, a la que llamaremos puntero L (de left o puntero
a la izquierda).
4. Un puntero hacia un nodo con una clave mayor o un nulo si no la hay, a
la que llamaremos R (de right o puntero a la derecha).
5. Otros datos interesantes para conocer rpidamente el estado del rbol,
como por ejemplo la altura del nodo respecto a la base del rbol o el
factor de equilibrio, que son datos que veremos ms adelante. Los rboles
binarios se representan al revs, como una coliflor boca abajo, en la quela raz est siempre arriba.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
18/37
36
GESTIN DE BASES DE DATOS RA-MA
Veamos un ejemplo de rbol en el que ordenaremos nmeros:
A la izquierda de cada nodo colgamos un elemento ms pequeo que el
propio y a la derecha colgamos un elemento ms grande.
En todos los procesos de bsqueda mediante rboles, se entra a buscarsiempre por la raz.
Imaginemos que estamos buscando el nmero 4.
Entramos por la raz, que es el 5.
Es ste el que buscamos? No. Es menor? S. Nos vamos hacia la
izquierda.
Encontramos el 3. Mayor, menor o igual que 4? Mayor.
Nos vamos hacia la derecha y lo encontramos. Hemos realizado 3
comparaciones hasta llegar al dato que buscamos.
Esto es ms lgico que emplear una lista ordenada, ya que en una lista los
nmeros se organizaran as:
1
2
34
5
6
7
En el caso de buscar el mismo nmero, el 4, el nmero de comparaciones
sera el mismo que empleando un rbol.
Si buscsemos el nmero 2 en la lista, el nmero de comparaciones sera 1,
ms rpido que con el rbol.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
19/37
37
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
En cambio, si buscramos el 7, deberamos hacer 6 comparaciones; mucho
ms lento, puesto que el rbol slo tiene 3 niveles. En un rbol de 8 elementos,
la altura mxima del rbol es de 3 niveles. No har falta nunca rebasar 3comparaciones para llegar al dato que buscamos, independientemente de si es
grande o pequeo.
En una lista ordenada, el nmero de comparaciones crece linealmente en
funcin de la cantidad de elementos que almacenamos en la lista.
En cambio, con el rbol, el nmero de comparaciones queda mucho ms
contenido. Comparemos el peor de los casos en cada sistema.
Tabla 1.1
rbol Lista ordenada
8 elementos 3 8
16 elementos 4 16
32 elementos 5 32
64 elementos 6 64
128 elementos 7 128
Si nos fijamos, veremos que 8 es 23. Por tanto, en un rbol de N elementos,
el nmero de comparaciones mximo es el logaritmo en base 2 de los elementos
contenidos.
Los rboles ya se conocan antes de Adelson-Velskii y Landis. Eran y son
llamados rboles BST oBinary Search Tree, pero a pesar de que agilizaban el
acceso a los datos, se podan mejorar.
Por qu?
Porque los rboles que empezaban teniendo 10 o 15 elementos eran muyrpidos, pero cuando iban creciendo exista el riesgo de crecer de forma
asimtrica; se iban descontrolando; crecan de forma asimtrica.
La palabra asimtrica expresa un crecimiento desequilibrado en el que unas
ramas acaban siendo mucho ms largas que otras, causando una desproporcin
en el nmero de pasos que deben darse (nmero de comparaciones necesarias)
para llegar hasta encontrar una clave dependiendo de en qu rama se
encuentre.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
20/37
38
GESTIN DE BASES DE DATOS RA-MA
Este rbol respeta las normasL
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
21/37
39
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
Podemos tener algoritmos de autoequilibrado ms veloces y menos veloces.
Todos hemos tenido experiencias con bases de datos que cada cierto tiempo
denegaban peticiones porque se estaban reorganizando ndices. Posiblementeno lo sabamos, pero durante unos segundos la base de datos se quedaba
congelada y no nos atenda porque se estaba reorganizando internamente.
El tema es complejo y se centra en dos cuestiones:
1. Decidir si vamos a reevaluar el autobalanceo del rbol en cada nueva
insercin de datos (lo cual empeora la velocidad de insercin) o si vamos
a hacerlo cada cierto tiempo o cada cierto nmero de inserciones (lo cual
causa ese lapso de denegacin de servicio).
2. Una vez decidido si vamos por uno u otro camino, encontrar la manera
de que la reorganizacin sea lo ms rpida posible en la bsqueda del
algoritmo ptimo.
En 1976, Colin Day propuso un algoritmo bastante rpido, escrito en
lenguaje FORTRAN, que fue traducido a lenguaje Pascal, para ganar en
estructuracin y recursividad, y modificado en 1988 por Quentin Stout y Bette
Warren dando origen 12 aos ms tarde al algoritmo conocido como DSW (Day-
Stout-Warren).
Se trata de un algoritmo elegante que se basa en una teora apoyada en dos
funciones: una Tree-To-Vine (de rbol hacia sarmiento o vara) y otra simtrica
Vine-To-Tree (de sarmiento o vara hacia rbol). La teora se basa en que se
puede construir un rbol equilibrado si los datos de las claves se suministran
en orden.
Por tanto, se recorre el rbol de forma ordenada (recorrido In-order) y se
genera un rbol completamente lineal y degenerado. Resultado: una vara o
rama nica. Como si slo tuvisemos una lista con nodos que tuviesen un nicopuntero L y careciesen de puntero R.
Despus se reconstruye el rbol a partir de la vara, suministrando los datos
ordenadamente, montando los nodos a base de rotaciones progresivas.
Despus vinieron cuestiones sobre cmo atravesar el rbol de forma ptima,
con o sin recursividad, utilizando los algoritmos de Frank M. Carrano y de
Mark A. Weiss, siendo ste un alumno de Robert Sedgewick de la Universidad
de Princeton.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
22/37
40
GESTIN DE BASES DE DATOS RA-MA
Sedgewick realiz aportaciones finales de funciones auxiliares que fueron
recogidas en el libroAlgorithms in C++,Parts 1-4 (Fundamental Algorithms,
Data Structures, Sorting, Searching) de Addison-Wesley, Boston 1998.
Timothy Rolfe optimiz al mximo el cdigo con todas estas consideraciones
y lo emple en la Eastern Washington University, como material de apoyo para
dar clases de estructuras de informacin y algoritmos.
En Espaa, el profesor Ceballos de la Universidad Complutense de Alcal,
viene difundiendo y estructurando desde hace aos en sus clases y en sus libros
los rboles y los algoritmos de equilibrado.
1.5
actividades
Las actividades que implican cdigo fuente se encuentran en el CD ROM
del libro dentro de la carpeta \Actividades\Captulo 1
Para archivos secuenciales:
1. Escribir un programa que genere un archivo secuencial llamado
CLIENTES.TXT en el que grabaremos tres registros de clientes como
los expuestos en el ejemplo anterior, con los campos de nombre, direccin
y poblacin.
2. Abrir el archivo con el bloc de notas de Windows (Notepad.exe) y verificar
que su contenido es legible.
3. Escribir un programa de lectura de un archivo secuencial lnea a lnea
mediante un bucle que verifique el final de archivo.
Para archivos de acceso aleatorio:
4. Escribir un programa de creacin de un archivo de acceso aleatorio
para un archivo de clientes (CLIENTES.DAT) con un espacio de
almacenamiento de 10 registros, en el cual se escriban los tres primeros
clientes que ya utilizamos en el ejemplo anterior. Escribir una funcin
dentro de este programa que, dado un nmero de registro entre 0 y 9,
nos permita recuperar el contenido de uno de los registros anteriores.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
23/37
41
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
Para archivos indexados:
5. Trabajar con el programa de ejemplo Actividad5 que se encuentra en el
CD ROM del libro. Investigar cules son sus funcionalidades y revisar en
el cdigo fuente cul es el procedimiento interno para manejar el rbol
binario de indexacin, el archivo de datos y el interfaz de la aplicacin.
1.5.1 actividad 1
Escogeremos un lenguaje de programacin de entre los cuatro propuestos:
C++Visual Basic 6.0
Java
C#
1.5.1.1 a 1a: e gj c++
En lenguaje C++, este fragmento de cdigo fuente se encarga de generar
un archivo secuencial y rellenarlo con tres clientes, cerrando el archivo a
continuacin. Se trata de una aplicacin muy sencilla en modo consola (pantalla
de texto). El ejemplo ha sido compilado con Microsoft Visual C++. Si se desea
compatibilizarlo con otros compiladores de C como GNU C, se debe sustituir el
# fx. por #
#include stdafx.h
#include io.h
int main(int argc, char* argv[])
{FILE * pArchivo;
printf(Ejemplo de escritura de tres registros en
archivo secuencial\n);
pArchivo = fopen(CLIENTES.TXT, w);
if (pArchivo)
{
//Primer cliente:fprintf(pArchivo, %s\n, Juan Martnez);
44
4
4
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
24/37
42
GESTIN DE BASES DE DATOS RA-MA
fprintf(pArchivo, %s\n, Calle del Pez, 5);
fprintf(pArchivo, %s\n, Madrid);
fprintf(pArchivo, %s\n, );
//Segundo cliente:
fprintf(pArchivo, %s\n, Comercial Martnez);
fprintf(pArchivo, %s\n, Calle de la Cuesta, 10);
fprintf(pArchivo, %s\n, Sevilla);
fprintf(pArchivo, %s\n, );
//Tercer cliente:
fprintf(pArchivo, %s\n, Jos Snchez);
fprintf(pArchivo, %s\n, Calle Mayor, 7);
fprintf(pArchivo, %s\n, Salamanca);
fprintf(pArchivo, %s\n, );
//Cerrar el archivo:
fclose(pArchivo);
printf(%s\n, 3 registros escritos.);
}
else{
printf(%s\n,No se ha podido abrir el archivo para
escritura.);
}
printf(%s\n, Final de programa);
return 0;
}
1.5.1.2 a 1b: e gj v b 6.0
En lenguaje Visual Basic 6.0, este fragmento de cdigo fuente se encarga de
generar un archivo secuencial y rellenarlo con tres clientes, cerrando el archivo
a continuacin.
Private Sub Command1_Click()
On Error GoTo manejador
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
25/37
43
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
MsgBox (Ejemplo de escritura de 3 registros en un archivo
secuencial)
ChDir App.Path
Open CLIENTES.TXT For Output As #1
Primer cliente:
Print #1, Juan Martnez
Print #1, Calle del Pez, 5
Print #1, Madrid
Print #1,
Segundo cliente:
Print #1, Comercial Martnez
Print #1, Calle de la Cuesta, 10
Print #1, Sevilla
Print #1,
Tercer cliente:
Print #1, Jos Snchez
Print #1, Calle Mayor, 7
Print #1, SalamancaPrint #1,
Cerrar el archivo:
Close #1
MsgBox (3 registros escritos.)
Exit Sub
manejador:
MsgBox (Err.Description)End Sub
1.5.1.3 a 1c: e gj J
En lenguaje Java, este fragmento de cdigo fuente se encarga de generar
un archivo secuencial y rellenarlo con tres clientes, cerrando el archivo a
continuacin.
import java.io.*;
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
26/37
44
GESTIN DE BASES DE DATOS RA-MA
public class Actividad1C
{
public static void main (String[] args)
{
FileWriter archivo = null;
try
{
System.out.println(Ejemplo de escritura de 3
registros en un archivo secuencial\r\n);
//Cliente 1:
archivo = new FileWriter(CLIENTES.TXT);
archivo.write(Juan Martnez\r\n);
archivo.write(Calle del Pez, 5\r\n);
archivo.write(Madrid\r\n);
archivo.write(\r\n);
//Cliente 2:
archivo.write(Comercial Martnez\r\n);
archivo.write(Calle de la Cuesta, 10\r\n);
archivo.write(Sevilla\r\n);
archivo.write(\r\n);
//Cliente 3:archivo.write(Jos Snchez\r\n);
archivo.write(Calle Mayor, 7\r\n);
archivo.write(Salamanca\r\n);
archivo.write(\r\n);
archivo.close();
System.out.println(3 registros grabados.\r\n);
}
catch(IOException e)
{System.out.println(Error: +e.toString());
}
}
}
1.5.1.4 a 1d: e gj c#
En lenguaje C#, este fragmento de cdigo fuente se encarga de generar
un archivo secuencial y rellenarlo con tres clientes, cerrando el archivo acontinuacin.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
27/37
45
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace Actividad1D
{
class Program
{
static void Main(string[] args)
{
StreamWriter archivo = null;
try
{
Console.WriteLine(Ejemplo de escritura de 3
registros en un archivo secuencial);
archivo = new StreamWriter(CLIENTES.TXT);
if (archivo!=null)
{
//Cliente 1:archivo.WriteLine(Juan Martnez);
archivo.WriteLine(Calle del Pez, 5);
archivo.WriteLine(Madrid);
archivo.WriteLine();
//Cliente 2:
archivo.WriteLine(Comercial Martnez);
archivo.WriteLine(Calle de la Cuesta, 10);
archivo.WriteLine(Sevilla);
archivo.WriteLine();//Cliente 3:
archivo.WriteLine(Jos Snchez);
archivo.WriteLine(Calle Mayor, 7);
archivo.WriteLine(Salamanca);
archivo.WriteLine();
archivo.WriteLine();
//Cerrar el archivo:
archivo.Close();
Console.WriteLine(3 registros grabados.);
}
}
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
28/37
46
GESTIN DE BASES DE DATOS RA-MA
catch(IOException e)
{
Console.WriteLine(Error: +e.ToString());
}
}
}
}
1.5.2 actividad 2
Para esta actividad no es necesario recurrir a ninguno de los archivos
contenidos en el CD ROM que acompaa al libro.
Abrir el archivo con el bloc de notas de Windows (Notepad.exe) y verificar
que su contenido es legible.
En esta actividad verificaremos que el contenido generado dentro del
archivo secuencial se corresponde con texto y adems veremos las diferencias
entre las diferentes pginas de cdigos que usa por defecto cada lenguaje.
Para abrir los textos utilizaremos el bloc de notas de Windows.
En todos los ejemplos, el resultado ser el mismo, pero con diferencias en
las pginas de cdigo.
En el ejemplo de la actividad 1.1, 1.2 y 1.3, correspondientes respectivamente
al programa escrito en lenguaje C++ (Visual C++ v.6.0), el programa escrito en
Visual Basic 6.0 y el programa escrito en Java, el archivo resultado est escrito
en cdigo ANSI de Windows.
En cambio, en el ejemplo de la actividad 1D, correspondiente al programa
escrito en C#, el resultado est escrito en Unicode de 8 bits (UTF-8), locual quiere decir que no es compatible binariamente con los tres formatos
anteriores.
Este es un punto a tener en cuenta cuando debemos afrontar migraciones
de datos entre aplicaciones escritas en diferentes lenguajes.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
29/37
47
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
1.5.3 actividad 3
Escribir un programa de lectura de un archivo secuencial lnea a lneamediante un bucle que verifique el final de archivo.
1.5.3.1 a 3a: e gj c++
Un programa mnimo de lectura de un archivo secuencial y salida hacia
pantalla quedara as:
#include stdafx.h
#include
//Actividad 3A:
//Lectura de archivo secuencial con tres clientes.
int main(int argc, char* argv[])
{
FILE * pArchivo = NULL;
char szLinea[255];
pArchivo = fopen(CLIENTES.TXT, r);if (pArchivo)
{
while (!feof(pArchivo))
{
memset(szLinea, 0, sizeof(szLinea));
fgets(szLinea, 255, pArchivo);
//Eliminar ltimo caracter LF:
*(szLinea + strlen(szLinea)-1)=0;
printf(%s\n, szLinea);}
fclose(pArchivo);
}
return 0;
}
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
30/37
48
GESTIN DE BASES DE DATOS RA-MA
1.5.3.2 a 3b: e gj v b 6.0
A continuacin exponemos el cdigo fuente contenido en una funcin que
reacciona a la pulsacin de un botn. Lee el contenido del archivo secuencial
lnea a lnea y lo coloca en una caja de lista:
Private Sub Command1_Click()
Dim Linea As String
ChDir App.Path
Open CLIENTES.TXT For Input As #1
While Not EOF(1)
Line Input #1, LineaList1.AddItem (Linea)
Wend
Close #1
Exit Sub
manejador:
MsgBox (Err.Description)
End Sub
1.5.3.3 a 3c: e gj J
Este es el programa Java que lee lnea por lnea un archivo secuencial:
import java.io.*;
public class Actividad3C
{
public static void main(String[] args)
{
File archivo = null;DataInputStream flujo = null;
String strLinea = ;
System.out.println(Ejemplo de lectura de un archivo
secuencial\r\n);
try
{
//Verificar si existe el archivo CLIENTES.TXT);
archivo = new File(CLIENTES.TXT);
if (archivo.exists())
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
31/37
49
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
{
flujo = new DataInputStream(new
BufferedInputStream(new
FileInputStream(archivo)));
while (strLinea != null)
{
strLinea = flujo.readLine();
//o readUTF para UTF-16
if (strLinea!=null) System.out.println(strLinea);
}
}
flujo.close();
}
catch (EOFException e)
{
//Final de archivo
System.out.println();
}
catch (IOException e2)
{
System.out.println(e2.getMessage());
}}
}
1.5.3.4 a 3d: e gj c#
Este es el fragmento de cdigo fuente que lee un archivo secuencial lnea a
lnea, escrito en C#. Reacciona a la pulsacin de un botn sobre un formulario
de Windows.
private void button1_Click(object sender, EventArgs e)
{
StreamReader lector;
string strLinea;
try
{
lector = new StreamReader(CLIENTES.TXT);
while (!lector.EndOfStream){
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
32/37
50
GESTIN DE BASES DE DATOS RA-MA
strLinea = lector.ReadLine();
listBox1.Items.Add(strLinea);
}
lector.Close();
}
catch(IOException ex)
{
MessageBox.Show(ex.Message);
}
}
1.5.4 actividad 4
En esta actividad llevaremos a la prctica dos objetivos:
1. Escribir un programa de creacin de un archivo de acceso aleatorio
para un archivo de clientes (CLIENTES.DAT) con un espacio de
almacenamiento de 10 registros, en el cual se escriban los tres primeros
clientes que ya utilizamos en el ejemplo anterior.
2. Escribir una funcin dentro de este programa que, dado un nmero deregistro entre 0 y 9, nos permita recuperar el contenido de uno de los
registros anteriores.
En este caso, por razones de espacio slo elaboraremos el programa en C++.
Se trata de un programa Windows basado en un formulario en el que el cdigo
fuente asociado a la pulsacin de un botn genera el archivo de acceso aleatorio
y escribe los tres clientes iniciales de ejemplo.
typedef struct tagCliente
{char Nombre[80];
char Direccion[100];
char Poblacion[50];
} cliente;
void CActividad4AView::OnCrearArchivo()
{
FILE * pArchivo;
tagCliente MiCliente;
tagCliente Cliente1;
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
33/37
51
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
tagCliente Cliente2;
tagCliente Cliente3;
int nLongRegistro = sizeof(tagCliente);
int n;
pArchivo = fopen(CLIENTES.DAT, wb);
if (pArchivo)
{
//Escribir los 10 registros:
memset(&MiCliente, 0, sizeof(tagCliente));
for (n=0;n
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
34/37
52
GESTIN DE BASES DE DATOS RA-MA
Ahora vamos a tratar el siguiente objetivo: escribir una funcin dentro
de este programa que, dado un nmero de registro entre 0 y 9, nos permita
recuperar el contenido de uno de los registros anteriores.
void CActividad4AView::OnBuscarCliente()
{
// Obtener el nmero de registro que deseamos buscar:
UpdateData(TRUE);
//Comprobar que est dentro del rango:
if (m_NumRegistro < 0)
{
MessageBox(No se puede buscar un nmero de registro
negativo., Error, MB_OK);
return;
}
if (m_NumRegistro > 9)
{
MessageBox(Escoja un registro del 0 al 9);
return;
}//Llamar a la funcin de bsqueda:
BuscarCliente(m_NumRegistro);
}
void CActividad4AView::BuscarCliente(int nRegistro)
{
FILE * pArchivo;
tagCliente Cliente;
char szMensaje[1024];
int nPos;
pArchivo = fopen(CLIENTES.DAT, r+);
if (pArchivo)
{
//Hallar la posicin en el archivo:
nPos = nRegistro * sizeof(tagCliente);
//Posicionarse:
fseek(pArchivo, nPos, SEEK_SET);
//Leer el contenido:
fread(&Cliente, sizeof(tagCliente), 1, pArchivo);
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
35/37
53
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
sprintf(szMensaje, Registro: %d\nNombre: %s\nDireccion: %s\
nPoblacion: %s\n,
nRegistro, Cliente.Nombre, Cliente.Direccion, Cliente.
Poblacion);
MessageBox(szMensaje, Registro ledo:, MB_OK);
fclose(pArchivo);
}
}
1.5.5 actividad 5
En esta prctica partiremos de un ejemplo que se encuentra realizado y
documentado en el CD ROM que acompaa al libro.
El ejemplo contiene clases de indexacin mediante rbol binario realizadas
en C++.
El objetivo de esta prctica es ver cmo se integran estas clases en unaaplicacin sencilla para indexar un archivo de clientes mediante una aplicacin
en entorno Windows. El cdigo fuente est realizado en Visual C++, pero las
clases de indexacin pueden ser compiladas bajo Linux mediante el compilador
C de GNU.
Los ejemplos se encuentran en la carpeta \a\co 1\a5 y dentro de esta carpeta encontraremos tambin un texto quenos guiar a travs de la aplicacin de ejemplo y nos ayudar a hacer un
seguimiento de su cdigo fuente.
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
36/37
54
GESTIN DE BASES DE DATOS RA-MA
Los antecesores de las bases de datos son los archivos de almacenamiento
de datos.
Histricamente se ha pasado por tres fases, que corresponden a los tres
tipos de archivo principales: archivos secuenciales, archivos de acceso
aleatorio y archivos indexados.
Especialmente estos ltimos proporcionan una tecnologa que est
presente en el diseo de los servidores de bases de datos relacionales(SGBD).
Podemos escribir programas en diferentes lenguajes que trabajen con
estos tipos de archivos, los cuales siguen siendo una buena opcin para
tareas sencillas y robustas.
2resumen del captulO
n1. Para comprobar el funcionamientodel proceso de bsqueda en un rbol
binario equilibrado (archivo indexa-do), estableceremos un punto de rup-
tura o break point en la lnea 521 del
archivo BST.cpp. Recordemos que el
punto de ruptura se establece pul-
sando la tecla F9 habiendo situado el
cursor sobre esta lnea. Se trata de la
instruccin while de la funcin Find
del rbol binario. Con este punto de
ruptura, si ejecutamos la aplicacin
en modo depuracin (tecla F5) y bus-camos un cliente, iremos pasando
sucesivamente por esta funcin vien-
do si avanzamos hacia el puntero L
o hacia el puntero R hasta llegar ala clave buscada o hasta llegar a un
nodo terminal (hoja) que no coincida
porque la clave no existe.
n2. Escribir un programa para guar-dar las apuestas de un partido de ft-
bol (por ejemplo, Barcelona-Madrid)
dentro de un archivo secuencial. Los
campos sern Nombre del apostan-
te, Goles Barcelona, Goles Madrid yValor apostado.
2 eJerciciOs prOpuestOs
-
7/27/2019 TEMA1-Gestion de Bases de Datos - RAMA
37/37
RA-MA 1 n SISTEMAS DE ALMACENAMIENTO DE LA INFORMACIN
n3. Escribir un programa de bsque-da de apuesta que encuentre los ga-
nadores de la apuesta a partir delresultado de goles del Barcelona y de
goles del Madrid.
n4. Intentar estos mismos programasmediante archivo de aceso aleatorio
o archivo indexado, a gusto del lec-tor.
1Qu tipo de archivos permiten lalectura directa de los datos a partirde su nmero de registro?
)Archivo secuencial.)Archivo de acceso aleatorio.)Archivo indexado.
)Todos los anteriores.
2Qu tipo de archivos se relacionanhistricamente con los tambores decinta magntica?
)Archivo secuencial.)Archivo de acceso aleatorio.)Archivo indexado.)Todos los anteriores.
3Qu concurrencia permiten losarchivos secuenciales?) Monousuario.) Multiusuario.
4Qu concurrencia permiten losarchivos de acceso aleatorio?1. Monousuario.
2. Multiusuario.
5
Qu tpica estructura de datos
se emplea en la construccin deindexados?
) La tabla.) La coliflor equilibrada.) El sarmiento (vine-to-tree / tree-
to-vine).
)El rbol binario equilibrado.
2test de cOnOcimientOs