martes, 12 de marzo de 2013

ARCHIVOS INDEXADOS

ARCHIVOS INDEXADOS
Hablando de bases de datos, un archivo indexado se refiere a un archivo que guarda información del orden en que están guardados los datos. Estos son muy útiles para hacer búsquedas en la base, en donde los datos se introducen sin ningún orden. No es obligatorio que uses árboles-B para su implantación, pero esta es una de las formas más eficientes de indexar. Sólo que su implantación no es trivial. Si en la escuela no te pusieron restricciones en este sentido pues puedes implementar archivos indexados de una manera muy ineficiente pero muy fácil de hacerlo, por el método de guardar sólo la clave por el cual vas a ordenar la base y la posición que guarda en la tabla, en el archivo indexado, y mantenerlo siempre ordenado cuando añadas o quites un elemento de la base y realizar búsquedas binarias para encontrar un elemento de la base. Ahora que si realmente quieres hacerlo por medio de un árbol-B, por ahí tengo un libro antiguo sobre estructuras de datos en lenguaje C donde en un capítulo traen un ejemplo de la implantación de un árbol-B en disco usando enteros cómo claves y el cual podrías adaptar a tus necesidades. Sólo que tendría que capturar el código para dártelo. Hace tiempo que he querido hacerlo sólo que por desidia no lo he hecho. Esto sería un aliciente para terminarlo

Una de las organizaciones de archivos más utilizada es la secuencial indexada, la cual es posible el acceso a un registro en particular (aleatoria) y el proceso secuencial a partir del inicio del archivo en cualquier otro registro del archivo.
Cada registro en el archivo se identifica por medio de un número o un grupo de caracteres exclusivos; la llave primaria.

Este tipo de estructura de datos que mejora la velocidad de las operaciones, permite un rápido acceso a los registros de una tabla en una base de datos sencilla, Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se hagan frecuentes búsquedas.


Ejemplo


Ejemplo: creación del archivo indexado
Se desea indexar el archivo directo de almacén. Para ello se debe leer secuencialmente el archivo de 
organización directa e incluir el código de producto y la posición de todas las ranuras ocupadas en un array de 
índices. Al acabar el proceso se debe ordenar el array y almacenarlo de forma temporal en un archivo secuencial 
para las siguientes ocasiones en que se desee gestionar el índice.
//Creación del archivo indexado a partir del archivo de productos
algoritmo CreaciónIndexado
const
MaxReg = 120
//El índice sólo tiene 100 posiciones ya que sólo hay 100 productos distintos
numElemIndice = 100
tipos
registro = rProducto
entero : código
cadena: desc
entero : stock
entero : estado
fin_registro
archivo_d de rProducto = aProducto 
registro = RIndice
entero : clave
entero : NRR
fin_registro
array[0..numElemIndice] de RIndice = vIndice
var
aProducto : A
rProducto : R
vIndice : Ind
entero : n, NRR
inicio
abrir(A,lectura/escritura,'PRODUCTOS.DAT')
n  0
NRR  0
leer(A,R)
mientras no fda(A) hacer
NRR  NRR + 1
si R.estado = 1 entonces
n  n + 1
ind[n].clave  R.código
ind[n].NRR  NRR
fin_si
leer(A,R)
fin_mientras
cerrar(A)
Ordenar(Ind,n)
GuardarIndice(Ind,n)
fin
//Para no perder el array de índices, el procedimiento GuardarIndice
//lo vuelca en un archivo secuencial
procedimiento GuardarIndice(valor vIndice : v; valor entero : n)
var
archivo_s de RIndice : A
entero : i
inicio
abrir(A,escritura,'CODIGO.IDX')
desde i  1 hasta n hacer
escribir(A,v[i])
fin_siUPSAM, Escuela superior de Ingeniería y Arquitectura, Luís Rodríguez Baena, 2012 2
cerrar(A)
fin_procedimiento



1 comentario:

  1. Que tal, podría por favor pasar el nombre del libro, o las capturas

    ResponderEliminar