Sie sind auf Seite 1von 17

ARCHIVOS

ALGORITMIA Y METODOS DE ACCESO


UNIVERSIDAD NACIONAL DE PIURA
FACULTAD DE INGENIERIA INDUSTRIAL
ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA

MG. LUIS ARMANDO SAAVEDRA YARLEQUE


ORGANIZACIÓN DE ARCHIVOS

Viene a ser la forma como se colocaran o ubicaran los registro dentro del archivo y
las relaciones que se podrán establecer entre ellos para una mejor manipulación de
su contenido; es decir se establecerá la estructura interna del archivo y la
vinculación entre las partes que la conforman.
Podemos mencionar cuatro formas de colocar los registros en el archivo:
• Secuencial
• Relativa
• Indexada
• Multillave.
ORGANIZACIÓN DE ARCHIVOS

ORGANIZACIÓN SECUENCIAL: En esta organización los registros se van colocando


uno después del otro, conforme vayan llegando al sistema. En un archivo que
inicialmente estará vacío, cuando llegue el primer registro ocupara tanto bytes en el
archivo como sea la longitud de este; por ejemplo sea el registro de tamaño 66
bytes, el primer registro se encontrara desde la posición 0 hasta la posición 65, el
segundo 66 al 131 y así sucesivamente con los registros que lleguen a continuación.
La posición de inicio de cada registro en el archivo se conoce como dirección relativa
al comienzo del archivo, y el numero del registro se conoce como Numero Relativo
de Registro o NRR.
0
1
2

“n” registros

n-1
ORGANIZACIÓN DE ARCHIVOS

ORGANIZACIÓN RELATIVA: En esta organización los registros se van colocando en un


lugar del archivo cuya posición tiene relación con algún dato contenido en ella
misma; es decir, los registros no se van a colocar secuencialmente sino que se
ubicaran en una posición dentro del archivo que ha sido previamente calculada,
para lo cual se ha tomado alguno de los datos del registro y se le ha sometido a un
proceso de calculo que da como resultado a una dirección dentro del archivo.
Como ejemplo tenemos los datos del alumno en donde se tomara su dirección y el
campo mas adecuado será su Código, el cual será procesado y se obtendrá la
dirección que al registro le corresponderá ocupar dentro del archivo.

Alumno
Cod nom ape Telef fec_nac

Proceso

Dirección
ORGANIZACIÓN DE ARCHIVOS

ORGANIZACIÓN INDEXADA: En esta organización implica la existencia de un índice


que el archivo de datos tiene asociado, y que, al igual que un libro nos permite saber
donde se encuentra un registro e ir directamente a esa posición para acceder a la
información buscada. El archivo de datos existe independientemente del índice y se
comporta como un archivo de organización secuencial, con la diferencia que tiene
asociado un índice. El cual es una estructura de datos compuesta de entradas
secuenciales ordenadas bajo algún criterio y en la que cada entrada contiene
básicamente dos elementos: la identificación de la información (llamada también
clave de búsqueda) y su ubicación (o dirección donde se encuentra).
El índice es una herramienta que nos permitirá la búsqueda de forma rápida una
determinada información, para el caso de los archivos, los índices tendrán también
un campo clave y una dirección asociada, cada vez que se solicita un registro, se
buscara en el índice, el cual estará ordenado para facilitar su búsqueda, y al
encontrarlo, se tomara la dirección del registro dentro del archivo y se dirigirá
directamente a el para recuperarlo.
Por ejemplo, en el registro de alumno tomaremos el código como clave de
búsqueda, entonces cada vez que necesitemos un registro de un alumno
buscaremos el código en el índice y se tomara la dirección con la que se ira al
archivo y se recuperara el registro.
Índice Alumno

Cod Dir. Cod nom ape telef. fec_nac

Código

Dirección
ORGANIZACIÓN DE ARCHIVOS

ORGANIZACIÓN MULTILLAVES: En esta organización los archivos hacen uso de


múltiples índices, cada uno de los cuales tendrá un campo clave diferente bajo el
cual se ordenara. Así, en el caso de nuestro archivo de alumnos podremos tener un
índice para la búsqueda de un registro a través del apellido del alumno, o utilizar
cualquier otro criterio según las necesidades del sistema. El proceso para llegar a un
registro cualquiera es similar al de una organización indexada, teniendo diferentes
caminos para ello.
ESTRUCTURACIÓN DE ARCHIVOS
Los archivos son un conjunto de registros que se colocaran dentro de el, cada
registro tendrá un numero correlativo que indica su posición relativa en el archivo;
este numero se conoce como Numero Relativo de Registro o NRR, el final del
archivo se indica con la etiqueta <eof>, cuyo significado es “end of file” (Fin de
Archivo).
0
1
2

“n” registros

n-1
<eof>
Cuando se coloquen en el soporte físico, esto se ubicaran uno a continuación de
otro, formando un “tren” de registros.

Reg 0 Reg 1 Reg 2 Reg n - 1


ESTRUCTURACIÓN DE ARCHIVOS

REGISTRO CABECERA: Es un registro especial que guarda información que permitirá


el manejo mas adecuado del contenido del archivo, dentro de este registro
podemos colocar los siguientes datos:
• Cantidad de Registros del archivo.
• Tamaño de los registros.
• Fecha y hora del ultimo acceso.
• Banderas (flags): Indicadores sobre el estado de algún componente del
sistema en un momento determinado.
• Apuntadores a Registros Especiales dentro del Archivo: Dentro del
archivo podemos separar o reservar algunos registros para alguna
aplicación especial; guardando la dirección de este registro.
• Otros Datos: Que sean importantes para el manejo del Sistema
El tamaño de estos registros es algo que se debe considerar al momento de hacer
cálculos sobre posicionamiento y ubicación de registros dentro del archivo.
Registro Cabecera

0
1 Reg 0 Reg 1 Reg 2 ……… Reg n - 1
2
“n” registros
“n”
registros

n-1
<eof>
ESTRUCTURACIÓN DE ARCHIVOS

REGISTRO DE DATOS: Una vez que se coloca toda la información en el archivo, esta
se convierte en una secuencia de bytes, perdiéndose la integridad de las unidades
de información; ya que ni habrá forma de reconvertirla en información nuevamente
si es que no contamos con un molde o estructura que nos indique el inicio y el final
de cada unidad de información.
Cuando se efectúa la definición de un registro se tiene que saber que campos son
los que integraran y de que tipo son cada uno de ellos, para determinar cual será la
longitud del registro, en base al tamaño de cada campo.
Los tipos de datos mas comunes que podemos manejar en un registro son: Datos
Numéricos, Datos Alfanuméricos.
• Archivos con Registros de Longitud Fija: todos los registros del archivo
tienen la misma longitud, lo que facilita la tarea de saber, en la secuencia de
bytes, donde comienza y donde termina cada registro, lo único que debe
saber el programa es posicionarse al inicio del registro y tomar la cantidad
de bytes que ocupa el registro. Al definir este tipo de registros se deberá
establecer para cada campo una cantidad fija de bytes, con lo que el
tamaño del registro será su suma. Así por ejemplo, si tenemos un registro
de alumnos como el que se implementa a continuación vamos a necesitar
10 bytes para el código, 50 para el nombre, 2 para la edad y 4 para el
promedio ponderado, lo que hace un total de 66 bytes para cada registro de
datos.
struct Alumno
{
char cod[10];
char nombre[50]; Registro de longitud fija de 66 bytes, en este
int edad; caso el registro cabecera , se le considerara un
float pp; tamaño de 15 bytes.
};

Registro Cabecera
0
1 Reg 0 Reg 1 Reg 2 ………… = NRR

2 15 bytes 66 bytes 66 bytes 66 bytes ……… <eof>

0 15 81 147 <=
Direcci
n-1 on
<eof>

66 bytes
Si utilizamos registros de longitud fija, el programa se puede valer del NRR de los
registros para localizarlos rápidamente, así, si queremos el registro con NRR=30, lo
que hará el programa será multiplicar este numero por el tamaño del registro y
sumarle el tamaño del registro cabecera, obteniendo así la dirección del registro
solicitado, con lo que podrá dirigirse directamente hacia el y recuperarlo.
dir = 30 * 66 + 15
=> dir =1995
Esto significa que el registro con NRR = 30 estará ubicado en la posición 1995,
contando desde el inicio del archivo por lo que el programa se posicionara en el
byte 1995 y tomara 66 bytes del archivo de datos.

TamArch = NRR * TamReg + TamCab

• Archivos con Registros de Longitud Variable: Son muy importante cuando


se trata de ahorrar espacio. Aquí se debe hacer una diferencia entre el
manejo de los datos en memoria con el manejo de datos en disco. En
memoria se pueden definir estructura de tamaño fijo, lo suficientemente
grande como para albergar cualquier dato que entre al sistema, pero a la
hora de llevarlos a disco se deberá hacer ajuste del campo al tamaño
exacto del dato
struct Alumno
Registro de longitud variable, el caso el campo
{
nombre ha sido declara como un puntero a
char cod[10];
carácter, por lo que esta variable almacenara
char *nombre;
una dirección del espacio en memoria donde
int edad;
se colocara el espacio nombre.
float pp;
};

Registro Cabecera

0
Reg 0 Reg 1 Reg 2 ………… = NRR
1
15 bytes 80 bytes 64 bytes 116 bytes ……… <eof>
2

0 15 95 159 <= Direccion

n-1
<eof>

Dir = LRC + LR0 + LR1 + LR2 + LR3 + ………. + LRX-1


En este caso, no podemos saber con exactitud el final de cada registro, por lo que se
debe encontrar la manera de identificar el inicio y final de cada registro, entre ellas
tenemos:
1. Se pude comenzar cada registro con un indicador de longitud, es decir junto
con el registro se va a guardar el tamaño del registro, la cual se ubicara al
inicio de cada registro, en un campo especial, de tal manera que cuando se
vaya a recuperar, primero se leerá su tamaño y luego se tomaran la cantidad
de bytes que allí se indiquen.
Registro Cabecera

………… = NRR
Reg 0 Reg 1 Reg 2
15 bytes 80 64 116 ……… <eof>

15 <= Direccion
0 97 163

Cuando se va a guardar un registro, primero se determina la longitud del


mismo, luego se grabara esta en el archivo, y a continuación se grabara el
registro de datos.

Dir = LRC + LR0 + LR1 + LR2 + LR3 + ………. + LRX-1 + (y * x)


2. Otra forma de indicar el inicio y el final de los registros es mediante el de
uso de “Delimitadores”, esto consiste que al final de cada registro se
coloque un carácter especial que cumpla el papel de delimitador o
separador de registros, es decir que este carácter nos indica donde termina
el registro; así cuando se tenga que leer un registro se tomaran sus bytes
uno por uno hasta encontrar el delimitador, momento en el cual sabremos
que se ha leído el registro por completo.
Registro Cabecera

………… = NRR
Reg 0 Reg 1 Reg 2
15 bytes \n \n \n ……… <eof>

0 15 97 163 <= Direccion

3. Esta tercera forma es conocer la posición y tamaño de un registro es


mediante el uso de un archivo especial para mantener información sobre
las direcciones de cada registro dentro del archivo original. Cada archivo
de datos podría tener asociado otro archivo en el cual se guardan las
direcciones de cada registro del archivo original, asociado con algún
identificador del mismo, el cual podría ser el NRR u otro elemento del
registro.
FIN
UNIVERSIDAD NACIONAL DE PIURA
FACULTAD DE INGENIERIA INDUSTRIAL
ESCUELA PROFESIONAL DE INGENIERIA INFORMATICA

Mg. Luis Armando Saavedra Yarleque

Das könnte Ihnen auch gefallen