Ficheros
con organización aleatoria o indirecta
- Son ficheros con organización relativa y clave alfanumérica, que hay que transformar para conseguir un valor numérico entero que facilite la correspondencia directa entre la clave y la dirección de memoria.
- En este caso las claves no coinciden con la dirección fÃsica, que son las posiciones de cada registro.
- Para transformar dicha clave alfanumérica y obtener la dirección fÃsica usamos las siguientes fórmulas:
f(clave) =
clave / 2 (división entera), tendremos que los registros con clave 500 y 501
intentarán ocupar la misma dirección fÃsica: la 250. Es responsabilidad del
programador evitar estas colisiones.
- Otras funciones hash, como la ya vista f(clave) = clave x 2, no producen colisiones, pero en cambio provocan que muchas direcciones fÃsicas no sean utilizadas, con lo que se desaprovecha el espacio de almacenamiento.
Ventajas
- Acceso inmediato a los registros mediante su clave.
- No es necesario ordenar el fichero.
- Se pueden realizar operaciones de escritura y lectura a la vez.
- Son muy rápidos en el tratamiento individual de registros.
- Se pueden realizar accesos secuenciales.
Inconvenientes
- El fichero contiene gran cantidad de huecos o espacios.
- El algoritmo para la conversión de las claves y el algoritmo necesario para el almacenamiento y tratamiento de sinónimos han de ser creados de modo que dejen el menor número de huecos libres y se genere el menor número de sinónimos.
Inserción
y Lectura de registro
Dir. de memoria
|
Clave
|
Datos
|
100
|
50
|
Registro A
|
101
|
-
|
Registro B
|
102
|
51
|
Registro C
|
103
|
-
|
Registro D
|
104
|
52
|
Registro E
|
105
|
-
|
Registro F
|
- Para insertar el registro A usamos el siguiente algoritmo f(clave) = clave x 2
- 50x2 = 100 Corresponde con la dirección de memoria 100.
- Al calcular la dirección de memoria puede ser que una clave diferente nos de cómo resultado la misma dirección de memoria, ese registro irÃa a la zona de overflow
Borrado de registro
- Para el borrado, borramos el registro y queda el hueco libre para poder poner un nuevo registro.
No hay comentarios:
Publicar un comentario