

C) Anillos. Se emplean como estructura de muchos de los modelos de bases de datos.Son también de acceso secuencial, es decir, que para llegar a un registro lógico, hay que pasar previamente por todos los anteriores a él. En este tipo de listas cada registro lleva más de un puntero. Permiten tener clasificados los registros por más de una clave, teniendo varios campos de puntero. Suele haber un registro índice que es cabeza de todas las listas, o sea, es un registro de punteros que apuntan al principio de la lista correspondiente a la ordenación que deseemos. Como los registros no se almacenan secuencialmente, y sin embargo si se accede secuencialmente, este acceso es más lento porque la cabeza tiene que ir dando saltos. Regularmente se deben reorganizar los datos para acelerar el acceso a través de la clave más habitual.
D) Árboles. Tienen dos funciones principales: la construcción de índices y de ficheros.
El tipo de árbol que se emplea generalmente es el binario, en su variante de árbol binario de búsqueda, se usa porque permite que se procesen los registros de forma directa y porque es sencillo hacer un recorrido secuencial en ellos, al procesar el árbol en in-orden.
Los árboles binarios no de búsqueda sirven para desarrollar cualquier tipo de estructura jerárquica siguiendo la técnica del enlace al sucesor - enlace al gemelo. En esta técnica el hijo izquierdo de cada nodo es un sucesor, y el hijo derecho un gemelo. Veamos como se aplicaría esta técnica al siguiente árbol:
En los árboles la consulta y la inserción son sencillas. Las supresiones se pueden hacer o bien por marca (no se precisa reorganizar), o bien supresiones reales que tienen la ventaja de que no dejan huecos en la estructura. Las organizaciones encadenadas se prestan bien a compartir espacio en el soporte con otras organizaciones encadenadas que haya. La estructura de árbol tiene muy pocas desventajas. ![]()
Sin embargo uno de los principales problemas de las demás estructuras encadenadas, es que si se hacen muchas supresiones, quedan excesivos huecos, con lo que el fichero se desaprovecha excesivamente. Para evitar esto existen dos técnicas: la recuperación de huecos y la gestión dinámica del espacio libre.
La recuperación de huecos consiste en lo siguiente: al crear el fichero se reserva espacio y se encadenan los huecos por medio de punteros (por tanto los registros deben ser de longitud fija). Siempre se tiene un puntero señalando a la primera posición libre del fichero (que es el hueco al que se acude a la hora de realizar una nueva inserción). Si fuese necesario hacer una supresión, el puntero de inserción pasaría a apuntar al registro borrado, y dicho registro apuntaría a donde estaba apuntando el puntero de inserción antes de realizar el borrado. Veamos un ejemplo:
En un principio tenemos el fichero distribuido de esta manera donde cada cuadro representa un registro (los sombreados son registros ocupados). El puntero marcado es el de inserción. ![]()
Si borramos uno de los registros ocupados, por ejemplo el de la segunda fila y la segunda columna, el fichero quedaría como sigue:
Como vemos el puntero de inserción apunta ahora al registro que acaba de ser borrado, por tanto cuando hagamos la próxima inserción se realizará en dicho registro. ![]()
La gestión dinámica del espacio libre permite:
- Tener registros de longitud variable.
- Que los nuevos registros se inserten lo más cerca posible de los anteriores.
- Reorganizar los huecos para que queden juntos, esto quiere decir que al hacer supresiones habrá movimiento de registros a nivel físico.



- Necesita soportes de acceso directo (Inconveniente)
- Es mejor que los índices cuando se requiere acceso a registros individuales y de forma desordenada. (Ventaja)
- Desperdicia espacio en el soporte (Inconveniente).
- Sólo es aplicable a una clave del fichero (Inconveniente).
Generalmente se emplea esta organización para la clave primaria y otra diferente para las claves secundarias.





|
| courses:.fr.de.pt.jp |