Archivos
Secuenciales
Indexados en C++
Recordando…
 Un archivo es un grupo de registros
relacionados.
 Un registro es un grupo de campos
relacionados.
Para facilitar la recuperación de
registros especifícos de un archivo,
debe seleccionarse en cada
registro como clave de registro.
Una clave de registro sirve para
identificar que un registro
pertenece a una persona o entidad
especifíca y es única en cada
registro.
Existen muchas formas de organizar
los registros en un archivo.
Un tipo común de organizar se conoce
como “ARCHIVOS SECUENCIALES
INDEXADOS” en el cúal los registros
se almacenan en orden con base en el
campo que es la clave de registro.
Por ejemplo:
En un Sistema de Nóminas, el registro para
un
empleado especifíco podría incluir los
siguientes
datos:
• Número de Identificación del Empleado
• Nombre del empleado
• Dirección
• Sueldo por hora
• Etc.
Entonces basándonos en el
ejemplo…
En un archivo de Nómina, los
registros generalmente se colocan
en orden, con base al número de
Identificación del Empleado, por
así decirlo. El registro del primer
empleado en el archivo contiene el
número de identificación más
pequeno, y los registro
Estructura de un Archivo
Secuencial Indexado
Se utiliza este tipo de organización
de archivo cuando existe la
necesidad tanto de accesar los
registros secuencialmente, por
algún valor de llave, como de
accesarlos individualmente. Un
archivo secuencial indexado
proporciona la combinación de
tipos de acceso que manejan un
archivo secuencial y un archivo
Los registros se almacenan en
la secuencia física usual por la
área primaria. Además, se
almacena en el disco el índice
de la localización del registro
Un archivo secuencial
indexado consta de un
archivo índice y un archivo de
datos. Es necesario que los
registros contengan un campo
clave para identificarlos y que
estén almacenados en un
soporte direccionable según
el orden que indique dicha
El archivo índice se utiliza
para acelerar la búsqueda
dentro del fichero (de hecho
actúa
como un índice para los datos
del fichero). El fichero de
datos se organiza,
lógicamente, en bloques o
páginas de varios registros.
Cada registro del fichero índice
almacena:
• El valor del campo clave del último registro
de un bloque. Los bloques están constituidos
por un número fijo de registros consecutivos.
• La dirección del primer registro de dicho
bloque. Puede haber un área de
desbordamiento. Ocupa más espacio en
disco pero es más rápido.
Puede almacenarse el fichero índice en
memoria. Habría que calcularlo al iniciar una
sesión de trabajo.
Área primaria
Es la parte del fichero donde se guardan los
registros ordenados por el valor del campo
“clave”. Los registros se organizan por
bloques. El acceso se realiza mediante 2
operaciones:
• Primero, buscando en el bloque el registro.
• Luego analiza secuencialmente ese bloque
hasta localizar el registro deseado.
Área de Índices
Los registros de ésta área están formados por
dos campos:
• El primero contiene la clave del ultimo registro
de cada bloque.
• El segundo contiene la dirección de memoria
(puntero) del inicio de cada bloque del área
primaria.
OPERACIONES BÁSICAS DE
ARCHIVO SECUENCIALES
INDEXADOS
Las operaciones que se pueden
realizar son:
Creación y Apertura de un
Fichero
Consulta de Datos
Cierre de un Fichero
Inserción de Datos
Borrado de un Fichero
Creación y Apertura de un Fichero
Crea el fichero asociado a la variable y lo deja
preparado para la inserción de datos en el
mismo, con un único elemento: EOF,
indicando que está vacío.
Hay que asegurarse que el dispositivo físico
esté listo para que no se produzca un error de
ejecución.
Abre un fichero previo para poder acceder a
sus registros. Si no existe da error.
Se traslada al buffer el primer grupo de
registros.
Consulta de Datos
La consulta de datos es una variable del
mismo tipo que los registros del fichero que,
después de la lectura, pasa a tener el valor
del que era registro activo en ese momento.
Tras una operación de lectura el apuntador
interno del buffer se incrementa.
Automáticamente y pasa a señalar al
registro siguiente. Si es necesario se carga
el siguiente bloque en el buffer.
Cierre de un Fichero
El cierre de un fichero consiste en pasar toda la información
que contiene el buffer al fichero del disco (la escritura se
efectuaba sobre el buffer) y limpiar a continuación el buffer.
Ejemplo: cierra ( <variable fichero>)
Posicionamiento del Apuntador y Tamaño del Fichero
apunta ( <variable fichero> , <posición> )
Donde posición es un entero (constante o variable) entre cero y
el número total de registros menos uno.
posición ( < variable fichero > ):entero
tamaño ( < variable fichero > ): entero
Insercción de Datos
Escribe ( <variable fichero> , < variable > )
Donde <variable> tiene las mismas
restricciones que en el caso de la lectura.
Se grabarán los datos, machacando los
anteriores. El apuntador se avanza
automáticamente.
Si el fichero está recién creado, se
irán insertando los registros en cada
operación de escritura, avanzando el
apuntador automáticamente y
empujando la marca EOF al final del
fichero.
Si el fichero tiene datos, debemos
avanzar el apuntador al final antes de
insertar nuevos datos si queremos
mantener los antiguos.
Borrado de un fichero
Elimina definitiva y completamente un
fichero en disco.
borra ( <variable fichero> )
Operaciones Adicionales sobre Ficheros a
partir de las operaciones primitivas que
hemos visto.
Modificación de los Datos de un Registro
Pasos para borrar un fichero:
1. Localizar en el fichero el registro que se
desea modificar.
•Sabemos su posición. Nos
posicionamos.
•Conocemos el contenido de algún
campo y secuencialmente lo
buscamos.
2. Sobre una variable auxiliar
3. Escribimos dicha variable
auxiliar en la misma posición que
se encontraba.
apunta(<variable fichero> ,
posición ( <variable fichero> ) – 1
)
escribe (<variable fichero>,
<variable_auxiliar>)
Ventajas
•Permite procesar el archivo
secuencialmente por orden lógico y
también procesarlo al azar.
•La organización secuencial indexada es
conveniente para archivos con mediana
volatilidad, actividad variable y tamaño
relativamente estable.
Desventajas
Los índices requieren espacio extra, se
necesita una doble búsqueda; una en el
índice y otra en el archivo.
Los registros deben ser de longitud fija.
El archivo debe estar separado por un
dispositivo de acceso aleatorio; no se
puede utilizar en cintas magnéticas.
Muchas técnicas para organizar
un archivo como índice han sido
propuestas. No todos los
esquemas sencillos pueden ser
óptimos para todas las
aplicaciones, se utilizan
principalmente las técnicas para
implementar un índice Árbol B y
Árbol B+.
Que es un Arbol B
Una de las estructuras que
más ampliamente se ha usado
para organizar un índice en un
sistema de base de datos y en
administradores de archivos
tradicionales es el árbol B. (B
Tree).

Grupo 1 Archivos Secuenciales Indexados en C++

  • 1.
  • 2.
    Recordando…  Un archivoes un grupo de registros relacionados.  Un registro es un grupo de campos relacionados.
  • 3.
    Para facilitar larecuperación de registros especifícos de un archivo, debe seleccionarse en cada registro como clave de registro. Una clave de registro sirve para identificar que un registro pertenece a una persona o entidad especifíca y es única en cada registro.
  • 4.
    Existen muchas formasde organizar los registros en un archivo. Un tipo común de organizar se conoce como “ARCHIVOS SECUENCIALES INDEXADOS” en el cúal los registros se almacenan en orden con base en el campo que es la clave de registro.
  • 5.
    Por ejemplo: En unSistema de Nóminas, el registro para un empleado especifíco podría incluir los siguientes datos: • Número de Identificación del Empleado • Nombre del empleado • Dirección • Sueldo por hora • Etc.
  • 6.
    Entonces basándonos enel ejemplo… En un archivo de Nómina, los registros generalmente se colocan en orden, con base al número de Identificación del Empleado, por así decirlo. El registro del primer empleado en el archivo contiene el número de identificación más pequeno, y los registro
  • 7.
    Estructura de unArchivo Secuencial Indexado
  • 8.
    Se utiliza estetipo de organización de archivo cuando existe la necesidad tanto de accesar los registros secuencialmente, por algún valor de llave, como de accesarlos individualmente. Un archivo secuencial indexado proporciona la combinación de tipos de acceso que manejan un archivo secuencial y un archivo
  • 9.
    Los registros sealmacenan en la secuencia física usual por la área primaria. Además, se almacena en el disco el índice de la localización del registro
  • 10.
    Un archivo secuencial indexadoconsta de un archivo índice y un archivo de datos. Es necesario que los registros contengan un campo clave para identificarlos y que estén almacenados en un soporte direccionable según el orden que indique dicha
  • 11.
    El archivo índicese utiliza para acelerar la búsqueda dentro del fichero (de hecho actúa como un índice para los datos del fichero). El fichero de datos se organiza, lógicamente, en bloques o páginas de varios registros.
  • 12.
    Cada registro delfichero índice almacena: • El valor del campo clave del último registro de un bloque. Los bloques están constituidos por un número fijo de registros consecutivos. • La dirección del primer registro de dicho bloque. Puede haber un área de desbordamiento. Ocupa más espacio en disco pero es más rápido. Puede almacenarse el fichero índice en memoria. Habría que calcularlo al iniciar una sesión de trabajo.
  • 13.
    Área primaria Es laparte del fichero donde se guardan los registros ordenados por el valor del campo “clave”. Los registros se organizan por bloques. El acceso se realiza mediante 2 operaciones: • Primero, buscando en el bloque el registro. • Luego analiza secuencialmente ese bloque hasta localizar el registro deseado.
  • 14.
    Área de Índices Losregistros de ésta área están formados por dos campos: • El primero contiene la clave del ultimo registro de cada bloque. • El segundo contiene la dirección de memoria (puntero) del inicio de cada bloque del área primaria.
  • 15.
    OPERACIONES BÁSICAS DE ARCHIVOSECUENCIALES INDEXADOS
  • 16.
    Las operaciones quese pueden realizar son: Creación y Apertura de un Fichero Consulta de Datos Cierre de un Fichero Inserción de Datos Borrado de un Fichero
  • 17.
    Creación y Aperturade un Fichero Crea el fichero asociado a la variable y lo deja preparado para la inserción de datos en el mismo, con un único elemento: EOF, indicando que está vacío. Hay que asegurarse que el dispositivo físico esté listo para que no se produzca un error de ejecución. Abre un fichero previo para poder acceder a sus registros. Si no existe da error. Se traslada al buffer el primer grupo de registros.
  • 18.
    Consulta de Datos Laconsulta de datos es una variable del mismo tipo que los registros del fichero que, después de la lectura, pasa a tener el valor del que era registro activo en ese momento. Tras una operación de lectura el apuntador interno del buffer se incrementa. Automáticamente y pasa a señalar al registro siguiente. Si es necesario se carga el siguiente bloque en el buffer.
  • 19.
    Cierre de unFichero El cierre de un fichero consiste en pasar toda la información que contiene el buffer al fichero del disco (la escritura se efectuaba sobre el buffer) y limpiar a continuación el buffer. Ejemplo: cierra ( <variable fichero>) Posicionamiento del Apuntador y Tamaño del Fichero apunta ( <variable fichero> , <posición> ) Donde posición es un entero (constante o variable) entre cero y el número total de registros menos uno. posición ( < variable fichero > ):entero tamaño ( < variable fichero > ): entero
  • 20.
    Insercción de Datos Escribe( <variable fichero> , < variable > ) Donde <variable> tiene las mismas restricciones que en el caso de la lectura. Se grabarán los datos, machacando los anteriores. El apuntador se avanza automáticamente.
  • 21.
    Si el ficheroestá recién creado, se irán insertando los registros en cada operación de escritura, avanzando el apuntador automáticamente y empujando la marca EOF al final del fichero. Si el fichero tiene datos, debemos avanzar el apuntador al final antes de insertar nuevos datos si queremos mantener los antiguos.
  • 22.
    Borrado de unfichero Elimina definitiva y completamente un fichero en disco. borra ( <variable fichero> ) Operaciones Adicionales sobre Ficheros a partir de las operaciones primitivas que hemos visto. Modificación de los Datos de un Registro
  • 23.
    Pasos para borrarun fichero: 1. Localizar en el fichero el registro que se desea modificar. •Sabemos su posición. Nos posicionamos. •Conocemos el contenido de algún campo y secuencialmente lo buscamos. 2. Sobre una variable auxiliar
  • 24.
    3. Escribimos dichavariable auxiliar en la misma posición que se encontraba. apunta(<variable fichero> , posición ( <variable fichero> ) – 1 ) escribe (<variable fichero>, <variable_auxiliar>)
  • 25.
    Ventajas •Permite procesar elarchivo secuencialmente por orden lógico y también procesarlo al azar. •La organización secuencial indexada es conveniente para archivos con mediana volatilidad, actividad variable y tamaño relativamente estable.
  • 26.
    Desventajas Los índices requierenespacio extra, se necesita una doble búsqueda; una en el índice y otra en el archivo. Los registros deben ser de longitud fija. El archivo debe estar separado por un dispositivo de acceso aleatorio; no se puede utilizar en cintas magnéticas.
  • 27.
    Muchas técnicas paraorganizar un archivo como índice han sido propuestas. No todos los esquemas sencillos pueden ser óptimos para todas las aplicaciones, se utilizan principalmente las técnicas para implementar un índice Árbol B y Árbol B+.
  • 28.
    Que es unArbol B Una de las estructuras que más ampliamente se ha usado para organizar un índice en un sistema de base de datos y en administradores de archivos tradicionales es el árbol B. (B Tree).

Notas del editor