INTRODUCCIÓN A
LOS FICHEROS DE DATOS____________________________ 14
1.‑ Conceptos
básicos____________________________________________________ 14
2.‑ Diseño de
registros___________________________________________________ 15
3.‑ Conceptos de
organización y modo de acceso______________________________ 17
4.‑ Algunas
consideraciones sobre el hardware._______________________________ 18
5.‑ Medidas de
utilización de ficheros._______________________________________ 19
6.‑ Operaciones
con ficheros.______________________________________________ 22
7.‑ Tipos de
ficheros según su función_______________________________________ 23
FICHEROS CON
ORGANIZACIÓN SECUENCIAL__________________________ 25
1.‑
Características de la organización secuencial_______________________________ 25
2.‑ Ventajas e
inconvenientes de la organización secuencial:_____________________ 26
3.‑ Utilización de
ficheros con organización secuencial._________________________ 27
4.‑ Variantes de
la organización secuencial.___________________________________ 28
ORGANIZACIÓN SECUENCIAL‑INDEXADA.______________________________ 28
1.‑
Características de la organización secuencial‑indexada.______________________ 28
2.‑ Estructura de
los ficheros con organización secuencial‑indexada._______________ 29
3.‑ Índices a
varios niveles._______________________________________________ 30
4.‑ Ventajas e
inconvenientes de la organización secuenciaL indexada_____________ 31
ORGANIZACIÓN DIRECTA
(RAMDOM, ALATORIA, RELATIVA)_____________ 32
1.‑
Características de la organización directa._________________________________ 32
2.‑ Clasificación
de las técnicas de direccionamiento___________________________ 33
3.‑ Ventajas e
inconvenientes de la organización directa________________________ 34
Podemos definir un fichero
informático como un conjunto de registros, grabados sobre un soporte que pueda
ser leído por el ordenador (cintas, discos).
Para comprender mejor el
funcionamiento de los ficheros informáticos podemos utilizar un símil de estos.
El símil más común de los ficheros es el concepto de los archivadores de fichas
de cartón. La información de cada carpeta o ficha compone un registro,
y cada una de las informaciones elementales que contiene la ficha es lo que
le llamaremos campo.
Por ejemplo: Consideremos un
archivador manual que contiene las fichas con los datos de los empleados de una
empresa. Para cada empleado se tiene una ficha que podría tener el formato
siguiente:
APELLIDOS: NOMBRE: NIF:
DOMICILIO:
POBLACIÓN: C.P.: PROVINCIA:
FECHA DE NACIMIENTO: FECHA
DE ALTA:
CENTRO DE TRABAJO:
CATEGORíA: PUESTO
DE TRABAJO:
ESTADO CIVIL (H/M): Nº
HIJOS:
El registro sería toda la información
correspondiente a un empleado.
El campo sería cada una de las
informaciones elementales que se tienen de un empleado como por ejemplo:
APELLIDOS, NOMBRE, CATEGORÍA, ...
Para facilitar la búsqueda de una
ficha determinada lo más normal es tener el fichero clasificado por alguna de
las informaciones que aparecen en la ficha y que tienen valores diferentes en
los registros. Por ejemplo, en el archivador de empleados podrían estar
ordenadas alfabéticamente por los apellidos, de forma que si queremos buscar la
ficha de un empleado bastaría con saber sus apellidos y lo buscaríamos en la
posición que le corresponda por orden alfabético.
A estos campos que me permiten
identificar una ficha y diferenciarla de las demás, facilitando el acceso a una
ficha determinada se les conoce con el nombre campo clave. La clave puede
estar formada por más de un campo.
En los ficheros informáticos se
puede utilizar más de un campo clave, de forma que una de ellas se considera la
clave principal o clave primaria y al resto de las claves se les llama claves
secundarias o claves alternativas. Normalmente la clave primaria toma un
valor diferente para cada registro, mientras que las claves alternativas pueden
tener el mismo valor en más de un registro
Como los ficheros suelen ser muy
voluminosos solo se pueden llevar a la memoria principal partes de ellos para
poder procesarlos. La cantidad de información que es transferida entre el
soporte en el que se almacena el fichero y la memoria principal del ordenador
en una sola operación de lectura/grabación recibe el nombre de registro
físico o bloque.
Normalmente en cada operación de
lectura/grabación se transfieren varios registros del fichero, es decir un
bloque suele contener varios registros. Al número de registros que entran en un
bloque se le conoce con el nombre de factor de blocaje, y a esta
operación de agrupar varios registros en un bloque se le llama bloqueo
de registros.
Es
frecuente llamar volumen a los soportes de almacenamiento de datos que utiliza
el ordenador, y también es normal que dentro de un volumen se puedan almacenar
varios ficheros, por lo que se habla de que este sería un volumen multifichero.
En algunas ocasiones, los ficheros que se utilizan en grandes empresas son tan
grandes que no entran en un único soporte, y se hace necesario almacenarlos en
varios. A estos ficheros se les ficheros multivolumen.
Como hemos visto, un fichero es un
conjunto de registros, y un registro está compuesto, a su vez, por un conjunto
de campos. Teniendo en cuenta esto en el diseño de un fichero tiene una gran
importancia el diseño de los registros que lo forman, además de la selección
del soporte de datos más adecuado para almacenarlo y la forma en que se
organizan los datos dentro del soporte.
Si observarnos las fichas del archivador de
empleados, podemos ver que:
q
La información
referida a cada empleado está toda un una ficha (registro).
q
Sobre cada
ficha las informaciones (campos) aparecen en un orden, que es el mismo para
todas (estructura del registro).
q
Las fichas
están ordenadas por algún criterio, para facilitar la búsqueda de una ficha
determinada. Por ejemplo, por los apellidos, o por el DNI (campo clave).
Teniendo en cuenta
todo esto, el diseño de un registro
consiste en
seleccionar, ordenar y definir las características de los campos que lo forman. Normalmente para representar el
diseño de los utilizan unas hojas de diseño, en las que para cada campo se
definen:
- Un nombre que nos permita identificarlo en los programas.
- La posición del campo dentro del registro.
- El tipo de datos que va a contener (numérico, alfabético, lógico,
...)
- El tamaño del campo en caracteres (sí el campo es numérico con
decimales, debe indicarse el número de decimales que tiene).
- La descripción del contenido del campo, si fuera necesario.
Una vez que tenemos claro los
campos que van a formar el registro, el mayor problema que se nos plantea es el
seleccionar el tamaño de cada campo, debido a que la información que se va a
guardar en un campo no es la misma para todos los registros. Por ejemplo, el
campo APELLIDOS del ejemplo guarda los apellidos de los empleados y el tamaño
de estos no son iguales para todos los empleados, podemos tener desde un DIAZ
DIAZ, hasta un RODRIGUEZ DE LA VILLAJOYOSA GARCIA‑DOMEQ.
Para solucionar este problema pueden adoptarse
varias soluciones:
‑ Definir el campo con el mayor tamaño
posible, lo que puede suponer un despilfarro de soporte si un registro valor
muy largo al resto.
-
Definir el
campo con un tamaño intermedio y abreviar los valores que sobrepasen ese
tamaño. Esta solución es la mas aplicada, y se utilizará siempre que se pueda
abreviar la información que almacena el campo.
‑ Utilizar campos con longitud variable para
cada registro. Esta solución sería la que mejora aprovecha el soporte, pero su
manejo es complicado para el programador que tendría que utilizar técnicas que
le permitan delimitar el comienzo y el final de cada campo de un registro.
‑ Emplear un sistema de codificación de la información.
El término organización de
ficheros se aplica a la forma en que se colocan los datos contenidos en los
registros sobre el soporte informático (disco, cinta,..) durante su grabación.
Existen dos formas básicas de organización
de ficheros: secuencial y relativa. En la organización secuencial los
registros se van grabando unos a continuación de los otros, en el orden que se
van dando de alta, mientras que en la organización relativa los registros se
graban en las posiciones que les corresponda según el valor que guarden en el
campo clave.
El modo de acceso se refiere
al procedimiento que se tiene que seguir para poder situarse en un registro
determinado para poder hacer una operación de lectura o grabación del mismo. El
modo de acceso puede ser secuencial o directo. En el modo de acceso secuencial
para llegar a un registro es necesario
pasar por todos los anteriores, mientras que en el modo de acceso directo se
puede llegar directamente a un registro conociendo únicamente el valor del
campo clave.
Al modo de acceso directo se puede llegar de varias
formas:
- La posición que ocupa el
registro dentro del fichero coincide con el contenido de la clave.
- Calculando la posición que
ocupa el registro en el fichero mediante una transformación del contenido
del campo clave (acceso aleatorio ‑ Hashing).
- Mediante el uso de tablas de índices. La
localización de un registro se hace buscando en la tabla de índices el
valor del campo clave y obtenemos la posición en que está grabado el
registro dentro del fichero. (acceso indexado ‑ Keyed).
La
elección de una forma de organización determinada está en función del tipo de
aplicación que le vamos a dar al fichero. Dos factores influyen directamente en
la selección: la memoria necesaria para almacenar los datos y la velocidad de
acceso a los mismos.
Ejemplo: Un fichero en el que los
registros se actualicen todos juntos una vez al mes, y el tiempo necesario para
la actualización no sea importante, no puede tener la misma organización que un
fichero que se actualice todos los días varias veces poniendo al día los datos
que contienen sus registros y el tiempo empleado para la actualización sea el
menor posible.
La estructura de datos tipo
fichero es una estructura EXTERNA, es decir, que no se almacena en la memoria
principal del ordenador, ello es debido a que estas estructuras almacenan,
normalmente una gran cantidad de información, que se va a utilizar a largo
plazo.
Los ficheros se almacenan en
soportes de información que pueden son manejados por dispositivos periféricos
del ordenador, que permiten leer y grabar datos en el soporte. Los soportes más
utilizados para almacenar los ficheros son las cintas magnéticas y los discos
(magnéticos, ópticos, o magneto‑ópticos). Dentro de estos dos tipos de
soporte existen en el mercado una gran variedad de modelos.
La
diferencia más importante que nos interesa destacar entre estos dos soportes es
que mientras la cinta es un soporte secuencial,
es decir, si quiero leer un dato que está en la mitad de la cinta, tengo que
leer todo lo que hay hasta llegar a esa posición. Sin embargo, en el disco el
acceso a los datos puede hacerse de forma directa
pudiendo colocamos en la posición que nos interesa y leer a partir de ella.
Esta diferencia es muy similar a la existente entre una cinta de cassete y un
disco de música. En la cinta si quiero escuchar la 3ª canción no me queda mas
remedio, que hacer pasar la cinta hasta llegar a esa canción, pasando por las
anteriores. En un disco, si la canción que me interesa es la 3ª solo tengo que
colocar la aguja en el lugar en que empieza esta canción, sin necesidad de que
tenga que pasar por las anteriores.
Para poder seleccionar el soporte
que más nos interesa para grabar un fichero tenemos que conocer algunas de sus
características. Para el caso de las cintas y discos magnéticos podemos
mencionar las características mínimas que debemos conocer:
Cinta
‑ Densidad de grabación = nº de bytes por pulgada (bpi)
Normalmente la cinta contiene
varias pistas, de forma que una densidad de 800 bpi, representa tener grabados
800 caracteres por pulgada, o lo que es lo mismo 315 caracteres por centímetro
(1 pulgada = 2,54 centímetros).
‑ Capacidad bruta = nº de bytes que puede almacenar.
Se calcula multiplicando la
densidad de grabación (bpi) por su longitud, que suele venir dada en pies (1
pie = 12 pulgadas). Por ejemplo una cinta con una densidad de grabación de 800
bpi y una longitud de 3.200 pies podrá almacenar:
capacidad = 3.200 x 12 x 800 = 30.720.000 bytes.
‑ Velocidad de transferencia = nº de bytes que se pasan a la CPU por
segundo.
Normalmente en la información de
las cintas viene la velocidad de lectura‑escritura en pulgadas por
segundo (ips), por lo que es necesario calcular la velocidad de transferencia.
Por ejemplo en una cinta con una velocidad de 75 ips con una densidad de
grabación de 800 bpi, tendríamos:
velocidad de transferencia = 75
ips x 800 bpi = 60.000 bps = 60 Kb/s.
Disco
‑
Capacidad = nº de bytes
que puede almacenar.
Normalmente viene dado en Kbytes, Mbytes, ó Gigabytes.
‑ Velocidad de transferencia. Es lo mismo que para la cinta cuando la
lectura se hace de forma secuencial. Viene expresada en Kb/s.
‑ Tiempo medio de acceso ‑ tiempo medio que se tarda en acceder
a un registro. Viene expresado en milisegundos. Ejemplo: 38,4 ms.
Normalmente la información que va
a ser manejada con frecuencia se almacenará en discos, mientras que las cintas
se suelen reservar casi exclusivamente para las copias de seguridad.
Para diseñar un fichero es
necesario, en primer lugar, seleccionar y definir los datos que va a contener
y, a continuación seleccionar el soporte en que va a estar grabado y la forma
de organizar los datos del fichero en él. El primer paso consiste en hacer el
diseño del registro.
La selección del soporte y la
forma de organización mas adecuada es una tarea en la que la experiencia del
programador será fundamental, y dependerá de la cantidad de datos que almacena
el fichero y de las operaciones que se van a realizar con más frecuencia sobre
los mismos. Otro factor que puede influir en esta tarea es el hardware con el
que contarnos; por ejemplo, si el fichero se va a utilizar únicamente en
ordenadores del tipo PC, lo normal es que el soporte empleado sea el disco y la
forma de organización nos permita un acceso directo a los registros, aunque
existen excepciones.
En este apartado veremos algunas medidas que nos pueden servir de
ayuda para decidir que soporte tendremos que utilizar y cual es la organización
más adecuada, teniendo en cuenta las operaciones que se van a realizar con mas
frecuencia.
Volumen
Es la cantidad de memoria
necesaria para almacenar los datos del fichero, es decir, el espacio que ocupa
el fichero en el soporte, medido en caracteres u octetos (bytes). Se puede
calcular conociendo el número de registros que va a tener el fichero y el
tamaño de cada registro, por término medio.
V = NRT x LR V ‑ Volumen del fichero
NRT
‑ Nº total de registros del fichero
LR
‑ Longitud media, en bytes, del registro
Crecimiento
Es una medida del aumento del
volumen del fichero. Se puede medir conociendo el nº de registros que se
aumenta en cada tratamiento. Se suele expresar en tanto por ciento:
Tasa
de crecimiento (%) = (NRA
/ NRT ) x 100
NRA – Nº de registros que se aumentan
Estas dos medidas nos servirán de
ayuda para conocer la capacidad, en bytes, que tiene que tener el soporte que
se utilice para almacenar el fichero.
Actividad
Es el número de registros
consultados o modificados, expresado en tanto por ciento, con respecto al
número total de registros del fichero. Si este porcentaje se determina por cada
tratamiento del fichero, se denomina tasa
de consulta o modificación. Si el porcentaje se calcula para un período de
tiempo determinado, se llama frecuencia de consulta o modificación.
Tasa
de actividad (%) =
( NRC / NRT ) x 100
NRC – Nº de registros consultados o modificados
Esta medida suele emplearse como
guía para determinar si el fichero debe explotarse de una forma secuencial o
directa, en un soporte direccionable. Para comparar los tiempos empleados para
acceder a los registros empleando un modo de acceso secuencial o directo,
debemos conocer de los siguientes datos del soporte:
TMA ‑ Tiempo medio de acceso a un registro
VLS ‑ Velocidad de transferencia en
bytes/segundo
Tiempo de acceso a los registros
de forma directa = NRC x TMA
Tiempo de acceso a los registros de forma secuencial
= V / VLS
Nos interesa utilizar el modo de
acceso que emplee menos tiempo para leer los registros del fichero. Teniendo
esto en cuenta:
Si se cumple: NRC x TMA < V / VLS , nos interesa
un acceso directo.
Esto lo podemos expresar, también, como
NRC x TMA < NRT x LR / VLS => NRC / NRT <
LR / (VLS x TMA)
Como se había visto, la tasa de
actividad se representa, en tanto por ciento, como NRC/NRT x 100. Por lo tanto
NRC/NRT, representará la tasa de actividad en tanto por uno.
Es decir, si se cumple: Tasa de actividad < LR / ( VLS x TA )
nos interesa una organización que nos permita el acceso directo, en caso
contrario, una organización secuencial.
Volatilidad
Es el número de registros dados de
alta o de baja respecto al número total de registros del fichero, expresado en
tanto por ciento. Si el porcentaje se calcula por cada tratamiento del fichero,
se denomina tasa de renovación, y si
se calcula para un período de tiempo determinado, se llama frecuencia de renovación.
Tasa
de renovación (%) =
NRAB / NRT x 100
NRAB
= Nº de registros dados de alta o de baja
Si la tasa de renovación es alta
se dice que el fichero es volátil y en caso contrario se dice que el fichero es
estable o estático.
Las operaciones que se pueden
hacer con los ficheros pueden utilizar todos los registros del fichero o solo
una parte de ellos. De entre las operaciones que utilizan todos los registros
de los ficheros podemos citar las operaciones de:
q
Creación
‑ Consiste en la
grabación, por primera vez, sobre un soporte de los registros de un fichero.
q
Apertura
y cierre ‑ Para poder hacer cualquier
operación con los registros de un fichero tiene que estar abierto. En el tiempo
que no se utilizan los datos que almacena el fichero debe permanecer cerrado
para evitar que se deteriore la información que almacena. Para empezar a
trabajar con los datos de un fichero la primera operación que tenemos que hacer
es abrirlo, y cuando terminemos de trabajar con él tenemos que cerrarlo.
q
Borrado
‑ Consiste en la eliminación de todo el fichero. Esta
operación puede realizarse de dos formas: prohibiendo de un modo definitivo el
acceso al fichero, de modo que no se pueda leer o escribir en él, o bien,
destruyendo la información referente al fichero que está grabada en el soporte
que lo contiene. En el primer caso, el fichero puede ser recuperado.
q
Ordenación
o clasificación - Consiste en cambiar el orden en que están grabados
los registros del fichero en el soporte. Los registros se ordenan según el
contenido de uno o más campos en forma ascendente o descendente. En el primer
caso el primer registro es el que tiene el menor valor en el campo utilizado
para clasificar los registros, y en el segundo caso, el primer registro
contendrá, en el campo utilizado para clasificar los registros, el valor mas
alto de todos los registros del fichero.
q
Duplicado
o copiado - Esta operación consiste en crear un nuevo fichero
idéntico a uno ya existente. Esta operación es muy recomendable realizarla como
medida de seguridad, por si algún día se nos estropea un fichero. Si esto ocurriera siempre tendríamos
la copia para poder recuperarlo.
q
Fusión
o intercalación ‑ Se denomina también mezcla.
Consiste en obtener, de dos ficheros ordenados por un mismo campo y con la
misma estructura, otro fichero que contenga todos los registros de ambos y que
se mantenga ordenado por el mismo campo.
q
Partición
‑ Consiste en dividir un fichero en dos o más, de
acuerdo con alguna condición que han de cumplir los registros.
Además de estas operaciones en las
que se ven afectados todos los registros del fichero se pueden realizar otras
operaciones en las que solo se utilicen una parte de los registros. En estas
operaciones será necesario, primero, localizar el registro o los registro con
los que queremos trabajar y luego realizar la operación. Las operaciones mas
utilizadas de este tipo son las de:
q
Actualización
o mantenimiento ‑
Esta operación consiste en mantener actualizados los datos almacenados en los
registros del fichero, tecleando nuevos datos cuando se conocen, modificando
datos ya existente o eliminando datos que ya no se necesitan. Las operaciones
de actualización se conocen con los nombres de:
-
Altas: Consiste en
añadir nuevos registros al fichero.
-
Bajas: Consiste en eliminar registros del
fichero, borrando su contenido, o simplemente, prohibiendo el acceso a los
datos que contiene.
-
Modificaciones: Consiste en cambiar el contenido
de uno o más campos de un registro del fichero.
q
Recuperación
‑ Consiste en acceder a la información almacenada en
los registros del fichero para poder ser consultada. Las operaciones de
recuperación más utilizadas son:
- Consultas: Consiste en
acceder a uno o varios registros para ver el contenido de todos sus campos o
solo parte de ellos. Normalmente este tipo de operación da como resultado una
salida por pantalla de los datos que queremos consultar.
- Listados: Se diferencia de la consulta en
la forma, en que se presenta la información que se consulta. En este caso la
salida de la información será en papel, por la impresora en forma de lista
ordenada.
Podemos hacer una clasificación de
los ficheros según el uso que se les da y el tiempo de vida que van a tener en
cuatro grupos:
q
Ficheros
permanentes: Son ficheros de larga vida que van a ser utilizados
en más de un tratamiento o proceso porque contienen información que permanece
con el paso del tiempo y que va a ser actualizada, cuando sea necesario, por
esos tratamientos. Dependiendo de la frecuencia con que se actualizan los datos
que contiene este tipo de ficheros se pueden clasificar, a su vez, en:
‑ Ficheros de constantes:
Contiene información
que va a ser consultada con cierta frecuencia, pero normalmente se producen
pocas inclusiones nuevas y pocas eliminaciones de registros.
Ejemplo: Un fichero de
clientes de una empresa que contenga, para cada cliente, el nombre, domicilio,
...
‑ Ficheros de situación (o
maestros): Contienen
informaciones que están variando con frecuencia y es necesario mantener al día
permanentemente. La frecuencia de actualización o puesta al día de estos
ficheros es elevada.
Ejemplo: Fichero que
contiene información del estado de las cuentas de los clientes de un banco.
Nota: Los ordenadores actuales permiten que las operaciones de
actualización de los ficheros maestros y ficheros de situación se efectúen,
bien en un proceso "por lotes" (modalidad bath), o bien
en "tiempo real" (modalidad interactiva). En la modalidad por lotes se espera a
tener un determinado número de variaciones, que se van guardando en un fichero
que recoge esos movimientos, para actualizar de una vez los datos del fichero
maestro o de situación. La modalidad en tiempo real permite actualizar los
datos el fichero en el instante en que se produce la variación.
-
Ficheros
históricos: Contiene información sobre situaciones ya pasadas y
que fueron reflejadas, en su momento, en ficheros de constantes o de situación,
reflejando su evolución en el tiempo.
Ejemplo: Fichero que
guarda los movimientos que se produjeron en las cuentas de un banco en 1.991.
q
Ficheros
de movimientos: Estos
ficheros también se les llama ficheros de transacciones porque se utilizan para
actualizar los ficheros permanentes, almacenando en cada registro una operación
que supone el cambio de alguno de los datos que contiene el fichero permanente.
Sus registros tienen que tener al menos un campo en común con el fichero que
van a actualizar que es el que va permitir conocer cual es el registro que hay
que modificar.
La vida de estos ficheros suele
ser corta ya que cuando se produce la actualización del fichero permanente, se
destruyen, o se guardan como un histórico.
q
Ficheros
de maniobra, o de trabajo, o temporales: Se utilizan para almacenar
provisionalmente resultados intermedios que serán utilizados posteriormente en
el mismo proceso, o en un proceso diferente. La vida de estos ficheros termina
en el momento en que finaliza, el proceso para el que fueron creados.
Ejemplo: Fichero para preparar el listado de los
alumnos repetidores.
q
Ficheros
de control: Son ficheros que contienen información que va a
controlarla ejecución de los programas. Los podemos clasificar en:
‑ Ficheros de
parametrización: Contienen información que al ser leída por los
programas influirá en su funcionamiento. Estos ficheros se utilizan para poder
adaptar programas o aplicaciones estándar a las necesidades de cada usuario.
Ejemplo: Fichero que almacena el nombre
de la empresa, formato de los informes, etc.
-
Ficheros
de control de explotación: Se utilizan para almacenar
información referente a la explotación de un programa. Son informaciones para
la llamada contabilidad de explotación o contabilidad de trabajos con el que se
pretende controlar el uso del ordenador y de los programas.
Ejemplo: Fichero que contiene
informaciones como el número de veces que se ejecuta el programa, el tiempo que
es utilizado por un usuario, errores que se producen, etc.
Un fichero con organización
secuencial es aquel en el que los registros se van grabando uno a continuación
de otro, sobre el soporte informático, sin dejar huecos en medio.
En este tipo de ficheros existe,
por tanto, una correspondencia total entre el orden lógico y el orden físico,
si entendemos por orden lógico el orden en que son dados de alta y recuperados
los registros, y por orden físico el orden en que están
grabados los registros en el soporte.
Los registros normalmente estarán ordenados por el
contenido de uno o más campos para hacer más fácil el trabajo de búsqueda,
inserción y borrado de registros.
La organización secuencial es
aconsejable para ficheros con un índice de utilización muy elevado y estables.
Podemos citar
como ventajas:
1.
Aprovecha al
máximo el soporte, al no dejar huecos entre los registros.
2.
Rápido acceso
al registro siguiente. Por lo que se hace ideal cuando en cada operación de
actualización o consulta se van a procesar la mayoría de los registros.
3.
Se pueden
utilizar cualquier tipo de registros: de longitud fija, variable o indefinida.
4.
Se pueden
grabar en cualquier tipo de soporte, tanto en secuenciales como direccionables.
5.
Todos los
lenguajes de programación disponen de instrucciones para trabajar con este tipo
de ficheros.
Entre los inconvenientes destacaremos:
1.
El único modo de acceso es el acceso
secuencial, por lo que para leer el registro que ocupe la posición nº es
necesario leer los n‑1 registros anteriores. Esto hace que este tipo de
organización no sea adecuado para ficheros en los que se necesita procesar
frecuentemente registros aislados, es decir que tengan un índice de utilización
bajo.
2.
No se pueden insertar registros
entre los que ya están grabados. Si tenemos el fichero ordenado por el
contenido de un campo y queremos dar de alta un registro, que según ese orden
debería ir entre dos registros que ya existen en el fichero, es necesario
copiar todo el fichero en uno nuevo, grabando en el nuevo fichero todos los
registros, insertando el registro que se quiere dar de alta en la posición que
le corresponda. Otra posibilidad es ir dando de alta los registros al final del
fichero y a continuación realizar una operación de reordenación de todo el
fichero.
3.
Si el fichero está grabado en un
soporte secuencia por ejemplo una cinta magnética, para poder hacer
modificaciones o borrado de registros es necesario hacer una copia del fichero
en un fichero nuevo. Si el soporte no es secuencial las modificaciones se
pueden hacer sobre el mismos registro, y el borrado se puede hacer de forma
lógica, es decir, mediante la grabación de una marca en el registro.
En el momento de utilizar los
ficheros con organización secuencial tenemos que tener en cuenta el soporte
sobre el que están grabados, pues algunas operaciones que se pueden hacer en
los soportes direccionables no se pueden hacer en los soportes secuenciales,
como pueden ser las modificaciones y borrado lógico de registros.
El formato de las instrucciones
que nos permiten manejar los datos contenidos en un fichero con organización
secuencial dependerá del lenguaje de programación con el que trabajemos. De
forma general podemos resumir las instrucciones empleadas en el manejo de este
tipo de ficheros en las siguientes:
Abrir (OPEN) Abrir un fichero para poder trabajar con sus
registros. Se puede abrir de tres
formas:
INPUT
(I) ‑ Sólo para leer registros.
OUTPUT
(0) ‑ Sólo para escribir registros.
INPUT‑OUPUT
(I‑O) ‑ Para leer y escribir.
EXTEND
(E) ‑ Para añadir registros al final del fichero
Cerrar (CLOSE) Cerrar el fichero, cuando ya no se va trabajar mas con sus
registros.
Leer (READ) Pasar
la información de un registro a la memoria principal del ordenador para que el
programa pueda trabajar con los datos que contiene. Cada vez que se da una
orden de leer se lee el siguiente registro.
Escribir (WRITE) Graba
en el soporte la información de un registro con la información que tenga en la
memoria principal.
Reescribir (REWRITE)
Graba sobre un registro que ya
existe en el fichero. Antes de utilizar esta instrucción se tiene que leer
antes el registro que se va a reescribir con una orden de leer (READ).
Para poder utilizar los datos del
fichero el sistema operativo utiliza un indicador, o puntero, que se coloca señalando al primer
registro de datos del fichero, cuando se da la orden de Abrir (OPEN), y se va
desplazando, siempre en la misma dirección, cada vez que se lee o graba un
registro. La estructura del fichero se completa con un registro de cabecera que
contiene información acerca del fichero y un registro que sirve de marca de
final de fichero, o EOF (EOF ‑ End Of File), que el sistema utiliza para
saber cual es el último registro del fichero. El registro de final de fichero
(E.O.F.) se graba, por primera vez en el momento de la creación del fichero y
se va desplazando cuando se añaden nuevos registros al final del mismo.
Registro
de REG‑1 REG‑2 REG‑3 ........... E.O.F.
cabecera
puntero
Con el fin de mejorar las
prestaciones de la organización secuencial surgen una serie de organizaciones
que son una variante de esta y que pueden ser utilizados con soportes
direccionables. Las mas empleadas son:
a) La organización secuencial indexada, en la que los
registros con los datos se graban en un fichero secuencialmente, pero se pueden
recuperar con acceso directo gracias a la utilización de un fichero adicional,
llamado de índices, que contiene
información de la posición que ocupa cada registro en el fichero de datos.
b) La organización secuencial encadenada, que nos permite
tener los registro ordenados según un orden lógico diferente del orden físico
en el que están grabados gracias a la utilización de unos campos adicionales
llamados punteros.
A los ficheros con este tipo de
organización se les llama, también, ficheros indexados, por que se basa en la
utilización de índices, que permiten
el acceso a un registro del fichero de forma directa, sin tener que leer los
anteriores. Estos índices son similares a los de los libros. Si nos interesa leer
un capítulo concreto podemos recurrir al índice que nos dice en que página
comienza, y abrimos el libro por esa página, sin tener que mirar en todas las
páginas anteriores para localizarlo.
Las características más relevantes de un fichero
indexado, son las siguientes:
a)
El diseño del registro tiene que tener un campo, o combinación de campos, que
permita identificar cada registro de forma única, es decir, que no pueda haber
dos registros que tengan la misma información en él. A este campo se le llama campo clave y es el que va as ervir de
índice. Un mismo fichero puede tener mas de un campo clave, pero al menos uno
de ellos no admitirá valores duplicados y se le llama clave primaria. A las
restantes se les llama claves alternativas.
b) Permiten utilizar el modo de acceso secuencial y el modo de acceso directo para leer la información
guardada en sus registros.
El modo de acceso directo se hace
conociendo el contenido del campo clave del registro que queremos localizar.
Con esa información el sistema operativo puede consultar el índice y conocer la
posición del registro dentro del fichero.
En el modo de acceso secuencial
los registros son leídos ordenados por el contenido del campo clave,
independientemente del orden en que se fueron grabando (El orden lógico no es
igual al orden físico), debido a que el acceso a los datos se hace a través del
índice, que para hacer más fácil la búsqueda de los registros permanece siempre
ordenado por el campo clave.
c) Solamente se puede grabar en un
soporte direccionable. Ej.: disco
magnético. Si esto no fuera así no podría emplear el acceso directo.
Un archivo con organización secuencial indexada está
formado por:
q
El archivo
secuencial o AREA DE DATOS: Es el área en la que se escriben los registros
cuando el archivo es creado el fichero.
Los registros de un fichero con
organización secuencial‑indexada se graban en un soporte de
almacenamiento directo, en secuencia ascendente, de acuerdo con los valores de
la clave y en páginas o bloques de longitud fija.
q
El AREA
DE INDICES es creada por el sistema al mismo tiempo que se van
almacenando los datos. Contiene una tabla que asocia las claves con las
direcciones de los registros en el área de datos.
Cada entrada del área de índices
está formada por el valor más alto de la clave de cada grupo de registros y un
puntero con la dirección del primer registro del grupo.
q
Un AREA
DE EXCEDENTES (o de overflow) donde se graban los registros que no
tienen sitio en el área de datos. Los nuevos registros se insertan y quedan
enlazados entre sí mediante punteros conservando el orden lógico que marca la
clave o índice principal.
Del tratamiento de los índices y
punteros se encarga el sistema operativo por lo que no va a crear problemas al
usuario cuando maneja este tipo de ficheros. El usuario sabe lo que sucede
cuando solicita una consulta de un registro, pero no sabe como se realiza
internamente esa consulta.
Existen diferentes formas de
manejar los índices, dependiendo del sistema operativo o el lenguaje de
programación con el que se trabaja. Las organizaciones de índices mas
utilizadas en la práctica son la ISAM (Indexed
Sequential Access Method) y la VSAM (Virtual Storage Access Method).
Cuando el fichero de datos tiene
muchos registros puede que el fichero de índices se haga demasiado largo y las
búsquedas en él se vayan haciendo lentas, ya que cuantos más registros tenga,
mas crece el tiempo necesario para localizar un registro. Para evitar este
problema se recurre a la utilización de índices a varios niveles, de forma que
se sustituye una área de índices única, pero de m tamaño grande, por varias
áreas de índices de menor tamaño donde la búsqueda es más rápida.
Para damos una idea de c como se
organizarían los índices a varios niveles podemos emplear un ejemplo de un
fichero, con organización ISAM, grabado en un disco duro con un cierto número
de platos. Podemos representar de forma muy simplificada la posible estructura del
almacenamiento del archivo que constará de las siguientes áreas de índices:
1º Nivel: (Indice maestro)
Señala el cilindro en que
se encuentra almacenado el registro que nos interesa.
2º Nivel: (Indice de
cilindros) Señala en que pista está ese registro,
dentro del cilindro.
3º Nivel: (Indice de
pista) Señala, dentro de la pista, en que bloque, o sector,
se encuentra el registro.
La organización secuencial
indexada permite el acceso directo a los registros, sin los inconvenientes de
la existencia de huecos como en la organización directa, y el tratamiento
secuencial de los registros, propio de la organización secuencial.
Esta organización es muy
utilizada, tanto para procesos en los que intervienen pocos registros como para
aquellos en los que se maneja el fichero completo.
Las principales
ventajas:
1.
Permite el
acceso secuencial. Esto es muy interesante cuando la tasa de actividad es alta.
En el acceso secuencial, además, los registros se leen ordenados por el campo
clave.
2.
Permite el
acceso directo a los registros. Realmente emula el acceso directo, empleando
para ello las tablas de índices. Primero busca la clave en el área de índices y
luego va a leer al área de datos en la dirección que le indica la tabla.
3.
Se pueden
actualizar los registros en el mismo fichero, sin necesidad de crear un fichero
nuevo de copia en el proceso de actualización. Permite tanto el PROCESO POR
LOTES (procesos en diferido que hay que preparar previamente) como el PROCESO
EN TIEMPO REAL (las actualizaciones de la información se llevan a cabo en el
momento en que se producen).
Inconvenientes:
1.
Ocupa mas
espacio en el disco que los ficheros secuenciales, debido al uso del área de
índices.
2.
Tiene tendencia
a que aumente el tiempo medio de acceso a los registros, cuando se producen
muchas altas nuevas con claves que hay que intercalar entre las existentes, ya
que aumenta el área de overflow. Requiere una reorganización periódica.
3.
Solo se puede
utilizar soportes direccionables.
4.
Obliga a una
inversión económica mayor, por la necesidad de programas y, a veces, m hardware
mas sofisticado.
La organización directa está
basada en la independencia entre el orden en que se dan de alta los registros y
la posición en la que se graban en el soporte. La posición en la que se graban
los registros está en función de la información que tenga el campo clave del
registro.
En esta organización el espacio
total disponible para el fichero se divide en celdas destinadas cada una de ellas a contener un registro y sólo
uno. Las celdas están numeradas correlativamente y se puede acceder al
contenido de un registro, de forma directa, si conocemos la dirección relativa
de la celda en la que está grabado.
Esta organización sólo es posible
en soportes direccionables, pues el acceso a los registros se hace sin
necesidad de leer los anteriores. Es la organización que tienen un menor tiempo
de acceso a un registro, en acceso directo. Se usan cuando el acceso a los
datos de un registro se hace siempre empleando la misma clave y la velocidad de
acceso a un registro es lo que más nos importa.
Como queda dicho para poder
localizar un registro es necesario conocer el valor de la clave. A las técnicas
utilizadas para convertir el valor de la clave de un registro C, en la
dirección relativa de la celda del fichero en que va a estar grabado D se le
llama técnicas de direccionamiento. El
elegir una buena técnica de direccionamiento es fundamental en este tipo de
organización.
A la hora de elegir una técnica de direccionamiento
debemos pedirle:
1)
Que sea fácil
de aplicar. Tenemos que tener en cuenta que en esta organización es el
usuario el que se encarga de calcular la posición en la que se van a guardar
los registros y no como en los ficheros indexados que era el sistema operativo
el que se encargaba de esto.
2)
Que deje el menor
número de huecos posible. Se debe procurar que el método seleccionado
nos proporcione valores entre 1 y nº, siendo nº el número de celdas que tiene
el fichero, sin dejar celdas vacías.
3)
Que las claves
de registros diferentes nos den direcciones diferentes. Cuando dos o más claves
diferentes proporcionan, al aplicar la técnica de direccionamiento, la misma
dirección se dice que produce sinónimos. También
se dice que esos registros colisionan. Cuando
las claves de dos registros dieron lugar a un sinónimo (indican la misma
celda), sólo uno de ellos puede ser almacenado en esa celda y tenemos que tener
previsto algún procedimiento para calcular la posición en la que se tiene que
grabar el otro registro. Los métodos más empleados para el tratamiento de
sinónimos son los siguientes:
a)
Almacenar el
registro que colisiona en el primer hueco libre que se encuentre a partir de la
dirección que le corresponde, y que está ya ocupada. A este método se le conoce
como búsqueda lineal o direccionamiento abierto.
b)
Creando una
zona especial del fichero en la que se grabarán todos los registros que dieron
lugar a un sinónimo. A esta zona del fichero se le suele llamar área de desbordamiento (overflow) o de
excedentes. Este es el sistema más empleado.
El
mayor obstáculo para el uso de los archivos relativos es la necesidad de
identificar los registros lógicos por un número relativo de registro, cuando en
realidad el usuario los va a identificar por el valor de un campo del registro,
como puede ser el nº de factura, el D.N.I. de una persona, etc. Para poder
transformar el valor de la clave en la dirección relativa del registro en el
fichero hay una gran cantidad de técnicas de direccionamiento que podemos
clasificar en tres grupos:
‑ direccionamiento directo
‑ por asociación
‑ aleatorio (hashing)
A) Direccionamiento
directo:
El caso
óptimo de aplicación de esta organización se da cuando las claves en el fichero
son numéricas y toman valores de 1 a nº sin huecos intermedios. En este caso la
clave k nos conducirá a la celda k‑ésima del fichero pudiendo acceder
fácilmente a los datos de éste registro. El campo clave de cada registro
contiene su dirección en el fichero.
Ej.: fichero de facturas donde tomamos como clave el nº de factura.
B) Direccionamiento
por asociación:
Los
valores de la clave se almacenan en una tabla en memoria en la que cada
elemento asocia cada valor de la clave con la dirección relativa en la que está
almacenado el registro. Puesto que la tabla debe prever la inclusión de todas
las direcciones posibles del archivo, su principal inconveniente resulta
determinar su tamaño y mantenerla ordenada por los valores de la clave.
Ejemplo: Clave Dirección
------ ------------
C1 1
C2 2
C3 3
C) Direccionamiento
aleatorio (Hashing):
En este
caso hay que buscar una función, a ser posible biunívoca, que relacione los
posibles valores de la clave con el conjunto de números correlativos de celda.
Esta función consistirá en realizar una serie de cálculos matemáticos con el
valor de la clave hasta obtener un número entre 1 y nº, siendo nº el número de
celdas que tiene el fichero.
El principal inconveniente que
presenta este tipo de direccionamiento es el que se pueden producir sinónimos
ya que el número que se obtiene al aplicar los cálculos es un número aleatorio
y puede que dos claves diferentes den como resultado el mismo número, y eso nos
obliga a tener previsto un método para el tratamiento de los sinónimos. En los
dos tipos anteriores nunca se producen sinónimos.
Podemos citar
como ventajas:
1.
Al emplear un
modo de acceso directo son los ficheros que permiten acceder de la forma mas
rápida posible a un registro cualquiera del fichero. Por tanto es la
organización ideal para los procesos en los que el tiempo de acceso a los
registros es lo más importante, siempre y cuando el acceso se haga siempre por
el campo clave.
El caso más favorable para
utilizar la organización directa es cuando las claves son numéricas y permiten
utilizar el direccionamiento directo.
2.
Permite la
actualización de los registros en el mismo fichero, sin necesidad de copiar el
fichero.
3.
Permite
realizar procesos de actualización en tiempo real.
Entre los inconvenientes
destacan:
1.
La relación entre clave y dirección
(Nº de registro) la define el programador y sólo él es responsable de manejarla
correctamente. El acceso a un registro se hace indicándole al sistema su
dirección relativa dentro del fichero (nº de registro) y la comprobación de sí
el registro leído es o no el que buscamos la tiene que hacer el programador, el
sistema operativo no nos avisa de posibles errores que se produzcan el cálculo
de la dirección.
2.
Cuando el rango de claves posibles
es muy superior al de claves que realmente están grabadas en el fichero, habrá
mucho espacio desaprovechado puesto que tenemos que reservar espacio a todos y
cada uno de los registros teóricamente posibles. Pueden existir celdas vacías.
3.
El algoritmo de direccionamiento
debe garantizamos que no se nos producirán dos direcciones iguales para dos
valores de clave distintos. En el caso de no elegir un buen método de
direccionamiento puede que la aparición de sinónimos haga complicado el acceso
a algunos registros debido a que tendríamos que emplear un método de
tratamiento de sinónimos que debe controlar el programador.
4. No permite el acceso secuencial a los registros por otro orden que
no sea el orden en que están grabados en el soporte.
5. Sólo se puede utilizar un campo clave para acceder a los
registros.