archivos secuenciales indexados

30
UNIVERSIDAD MARIANO GÁLVEZ DE GUATEMALA CENTRO UNIVERSITARIO JALAPA FACULTAD DE INGENIERÍA EN SISTEMAS CESAR HERNÁNDEZ PROGRAMACIÓN I MARTÍN ALFREDO GUZMÁN SANDOVAL 0907-15-10124

Upload: martin-guzman

Post on 13-Jan-2017

209 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: Archivos secuenciales indexados

UNIVERSIDAD MARIANO GÁLVEZ DE GUATEMALACENTRO UNIVERSITARIO JALAPAFACULTAD DE INGENIERÍA EN SISTEMASCESAR HERNÁNDEZPROGRAMACIÓN I

MARTÍN ALFREDO GUZMÁN SANDOVAL0907-15-10124

Page 2: Archivos secuenciales indexados

ARCHIVOS SECUENCIALES INDEXADOS

Page 3: Archivos secuenciales indexados

ARCHIVO SECUENCIAL INDEXADO

Es cuando los registros se organizan en una secuencia basada en un campo clave presentando dos características, un índice del archivo para soportar los accesos aleatorios y un archivo de desbordamiento.

Page 4: Archivos secuenciales indexados

AREAS DEL ARCHIVO SECUENCIAL INDEXADO

ÁREA DE DATOS:

• CONTIENE LOS REGISTROS SECUENCIAL, ESTA ORDENADOS ALFABÉTICAMENTE O ALFANUMÉRICAMENTE Y NO DEJA ESPACIOS.

ÁREA DE ÍNDICE

• LOS NIVELES DE ÍNDICE ESTÁN CONTENIDOS EN UNA TABLA, SI EXISTIERAN VARIOS ÍNDICES ENLAZADOS SE DENOMINA NIVEL DE INDEXACIÓN.

ÁREA DE DESBORDAMIENTO O EXCEDENTES:

• ESTA ÁREA ES UTILIZADA PARA REALIZAR ACTUALIZACIONES SI ELLO ES NECESARIO

Page 5: Archivos secuenciales indexados

CADA REGISTRO DEL ARCHIVO Í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.

 • EN ESTE TIPO DE ORGANIZACIÓN DE ARCHIVOS SE DISPONE DE UNA TABLA EN QUE APARECEN

ORDENADOS SECUENCIALMENTE LOS NÚMEROS DE LA CLAVE DEL ARCHIVO Y ASOCIADOS A CADA UNO DE ELLOS DE LA DIRECCIÓN DEL REGISTRO CORRESPONDIENTE.

Page 6: Archivos secuenciales indexados

EJEMPLO DE UN ÍNDICE Y UN ARCHIVO DE DATOS.

Page 7: Archivos secuenciales indexados

CARACTERÍSTICASA) 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 PUEDE HABER DOS REGISTROS QUE TENGAN LA MISMA INFORMACIÓN EN ÉL. A ESTE CAMPO SE LE LLAMA CAMPO CLAVE Y ES EL QUE VA A SERVIR DE ÍNDICE. UN MISMO FICHERO PUEDE TENER MAS DE UN CAMPO CLAVE, PERO AL MENOS UNO DE ELLOS NO ADMITIRÁ VALORES DUPLICADOS. A ESTE CAMPO CLAVE 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.

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.

Page 8: Archivos secuenciales indexados

MODO DE ACCESO

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.

Page 9: Archivos secuenciales indexados

VENTAJAS Y DESVENTAJAS

Page 10: Archivos secuenciales indexados

VENTAJAS• PERMITE EL ACCESO SECUENCIAL. • PERMITE EL ACCESO DIRECTO A LOS

REGISTROS.  • SE PUEDEN ACTUALIZAR LOS

REGISTROS EN EL MISMO FICHERO, SIN NECESIDAD DE CREAR UN FICHERO NUEVO DE COPIA EN EL PROCESO DE ACTUALIZACIÓN.

DESVENTAJAS• OCUPA MÁS ESPACIO EN EL DISCO QUE

LOS FICHEROS SECUÉNCIALES, DEBIDO AL USO DEL ÁREA DE ÍNDICES.

• SOLO SE PUEDE UTILIZAR SOPORTES DIRECCIONABLES (DISCOS MAGNÉTICOS).

• OBLIGA A UNA INVERSIÓN ECONÓMICA MAYOR, POR LA NECESIDAD DE PROGRAMAS Y, A VECES, HARDWARE MÁS SOFISTICADO.($$$$ )

Page 11: Archivos secuenciales indexados

ESTRUCTURA DE LA ORGANIZACIÓN SECUENCIAL INDEXADO.

Page 12: Archivos secuenciales indexados

ESTRUCTURA DE LA ORGANIZACIÓN SECUENCIAL INDEXADO.• ESTE TIPO DE ORGANIZACIÓN SE UTILIZA CUANDO EXISTE LA NECESIDAD DE

ACCEDER A LOS REGISTROS SECUENCIALMENTE, POR MEDIO DE ALGÚN VALOR DE LLAVE, COMO DE ACCEDER A LOS ARCHIVOS INDIVIDUALMENTE.

• UN ARCHIVO SECUENCIAL INDEXADO PUEDE TENER ACCESO PORQUE MANEJA UN ARCHIVO SECUENCIAL Y UN ARCHIVO RELATIVO O DE ACCESO DIRECTO.

•   • EL TIPO DE SUS REGISTROS CONTIENE UN CAMPO CLAVE IDENTIFICADOR. •  • LOS REGISTROS ESTÁN SITUADOS EN UN SOPORTE DIRECCIONABLE POR EL

ORDEN DE LOS VALORES INDICADOS POR LA CLAVE.

Page 13: Archivos secuenciales indexados

OPERACIONES SOBRE UN ARCHIVO SECUENCIAL.

Page 14: Archivos secuenciales indexados

OPERACIONES SOBRE UN ARCHIVO SECUENCIAL.EXISTEN ADEMÁS MUCHAS OPERACIONES ASOCIADAS A ARCHIVOS, LAS MÁS ELEMENTALES SON: 1. CREACIÓN DE ARCHIVO.- EN ESTE PROCESO SE PRETENDE

SOLAMENTE CREAR UN ARCHIVO NUEVO EN DISCO, CON SU NOMBRE, TIPO Y ESPECIALIDAD DE ALMACENAMIENTO DE DATOS APROPIADO.  

2. APERTURA DE ARCHIVOS.- EN ESTE CASO SE PRETENDE ABRIR UN ARCHIVO YA EXISTENTE EN DISCO PARA PROCESARLO, YA SEA CARGAR O GRABAR DATOS EN SUS REGISTROS, O LEER ALGÚN REGISTRO EN ESPECIAL PARA MANDARLO A UNA VARIABLE DE CUALQUIER TIPO.

Page 15: Archivos secuenciales indexados

OPERACIONES SOBRE UN ARCHIVO SECUENCIAL.NO CONFUNDIR CREACIÓN CON APERTURA, CREACIÓN ES UN PROCESO QUE SOLO SE EJECUTA UNA SOLA VEZ EN LA VIDA DE UN ARCHIVO, MIENTRAS QUE APERTURA, SIEMPRE SE ESTÁ REALIZANDO POR LOS PROGRAMAS ESPECIALIZADOS EN ALGÚN PROCESO.  3. CIERRE DE ARCHIVOS: ES LA OPERACIÓN MÁS IMPORTANTE

EN CUALQUIER PROGRAMA QUE MANEJE ARCHIVOS, O SE CIERRA EL ARCHIVO COMO ÚLTIMA INSTRUCCIÓN DEL PROGRAMA O SE VERÁ EL ANUNCIO ABORT, RETRY, FAIL.

Page 16: Archivos secuenciales indexados

OPERACIONES SOBRE UN ARCHIVO SECUENCIAL.4. ALTAS EN ARCHIVO.- EN ESTE PROCESO SE CARGA UNA

CLASE EN MEMORIA CON SUS DATOS PERTINENTES Y SE GRABA LA CLASE EN EL ARCHIVO EN DISCO.

 5. LECTURA DE ARCHIVO.- EN ESTE PROCESO, SE ABRE EL

ARCHIVO Y SE MANDA EL REGISTRO DE DISCO, A UNA CLASE EN MEMORIA PARA SU PROCESAMIENTO.

6. CONSULTA DE ARCHIVOS.- EN ESTE PROCESO SE PRETENDE DESPLEGAR TODOS LOS REGISTROS DEL ARCHIVO EN DISCO A LA PANTALLA, YA SEA CONSOLA O MEJOR AÚN, A UNA PAGINA HTML

Page 17: Archivos secuenciales indexados

OPERACIONES SOBRE UN ARCHIVO SECUENCIAL.7. BÚSQUEDA EN ARCHIVOS.- UNA DE LAS OPERACIONES MÁS

COMUNES, CONSISTE EN QUE EL USUARIO PIDE TODA LA INFORMACIÓN DE ALGÚN RENGLÓN EN DISCO, PROPORCIONANDO LA INFORMACIÓN DE ALGÚN CAMPO, GENERALMENTE EL CAMPO CLAVE DE LA CLASE.

 8. FILTROS.- EN ESTE PROCESO EL USUARIO ESTÁ INTERESADO

EN ALGÚN CONJUNTO DE RENGLONES CON CARACTERÍSTICAS COMUNES (CONDICIÓN), POR EJEMPLO TODOS LOS ALUMNOS DEL “CURSO DE PROGRAMACIÓN I”, O TODOS LOS ALUMNOS QUE SAQUEN UNA NOTE IGUAL O MAYOR A 61, O TODOS LOS ALUMNOS QUE SEAN DE “MOLESTAN EN CLASE”, ETC.

Page 18: Archivos secuenciales indexados

OPERACIONES SOBRE UN ARCHIVO SECUENCIAL.9. MODIFICACIONES DE REGISTROS O ARCHIVOS PROBLEMA

MUY COMÚN, DONDE LOS DATOS ORIGINALES YA GRABADOS SE TIENEN QUE CAMBIAR O ACTUALIZAR, POR EJEMPLO EL NOMBRE NO ERA “JUAN” ES “JUANA”, O LA CALIFICACIÓN NO ES 100 ES 20, ETC.

10.BAJAS DE REGISTROS.- TAMBIÉN MUY COMÚN ESTE PROCESO, POR EJEMPLO EL ALUMNO YA EGRESO, EL CLIENTE HUYO, ETC.

Page 19: Archivos secuenciales indexados

MANTENIMIENTO DE UN ARCHIVO SECUENCIAL

INDEXADO

Page 20: Archivos secuenciales indexados

MANTENIMIENTO DE UN ARCHIVO SECUENCIAL INDEXADO

AL TRANSCURRIR UN DETERMINADO TIEMPO DE OPERACIÓN LA ESTRUCTURA TIENDE A SATURARSE, SE REQUIERE ENTONCES REALIZAR UN REACOMODO DE LOS DATOS CONTENIDOS EN EL ÁREA DE DESBORDE, TRASLADÁNDOLOS HACIA EL ARCHIVO PRINCIPAL, TENIENDO QUE AJUSTAR POR SUPUESTO EL TAMAÑO DE LOS BLOQUES Y EN CONSECUENCIA LOS APUNTADORES EN EL ÍNDICE.

Page 21: Archivos secuenciales indexados

EL MANTENIMIENTO PUEDE DARSE POR CUALQUIERA DE ESTOS CRITERIOS:

• TIEMPO TRANSCURRIDO

• TAMAÑO DEL ÁREA DE DATOS (ENTRE 25 Y 30% DEL TAMAÑO DEL ARCHIVO PRINCIPAL)

• LA ELIMINACIÓN DE REGISTROS EN TIEMPO DE OPERACIÓN SE RECOMIENDA EN FORMA LÓGICA; ES DECIR, MEDIANTE MARCAS QUE INDIQUEN SI UN REGISTRO ESTA ACTIVO O NO EN EL PROCESO DE MANTENIMIENTO.

• CUANDO ES RELEVANTE EL ORDEN DE LLEGADA DE LOS REGISTROS EN CADA BLOQUE.

Page 22: Archivos secuenciales indexados

MANTENIMIENTO DE UNA ARCHIVO

• EL MANTENIMIENTO CONSISTE QUE AL MOMENTO DE TRANSCURRIR UN DETERMINANDO TIEMPO DE OPERACIÓN LA ESTRUCTURA SE SATURA, POR ELLO SE TIENE QUE HACER UN REACOMODO DE DATOS CONTENIDOS EN EL ÁREA DE DESBORDAMIENTO, TRASLADÁNDOLOS AL ARCHIVO PRINCIPAL Y MODIFICANDO EL TAMAÑO DEL BLOQUE Y LOS APUNTADORES DE EL ÍNDICE.

Page 23: Archivos secuenciales indexados

ES RELEVANTE EL ORDEN DE LLEGADA DE LOS REGISTROS EN CADA BLOQUE PARA TOMAR LA DECISIÓN DE SUSTITUIR UN REGISTRO, ELIMINANDO EL ULTIMO REGISTRO. LAS OPERACIONES QUE SE PUEDEN REALIZAR DENTRO DE LA UN ARCHIVO SECUENCIAL INDEXANDO SON:

• CREACIÓN Y APERTURA DE UN FICHERO• CONSULTA DE DATOS• CIERRE DE UN FICHERO• INSERCIÓN DE DATOS• BORRADO DE UN FICHERO

Page 24: Archivos secuenciales indexados

PSEUDOCÓDIGO DE UN ARCHIVO SECUENCIAL INDEXADO

Page 25: Archivos secuenciales indexados

CREACIÓN Y APERTURA DE UN FICHERO

• CREA ( <VARIABLE 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 ( < VARIABLE FICHERO > )//ABRE UN FICHERO PREVIO PARA PODER ACCEDER A SUS REGISTROS. SI NO EXISTE DA ERROR.//SE TRASLADA AL BUFFER EL PRIMER GRUPO DE REGISTROS. EL PRIMER REGISTRO PASA A SER EL REGISTRO ACTIVO. TRAS CREAR UN FICHERO, ÉSTE QUEDA ABIERTO.

Page 26: Archivos secuenciales indexados

CONSULTA DE DATOS• LEE ( <VARIABLE FICHERO> , <VARIABLE> ). <VARIABLE> 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.//NO SE PUEDE SOBREPASAR EL FIN DE FICHERO, PRODUCIRÍA ERROR. UTILIZAMOS LA FUNCIÓN:• EOF ( < VARIABLE FICHERO > ) : LÓGICO• MIENTRAS NOT (EOF (<VARIABLE FICHERO>))• LECTURA• FIN MIENTRAS

Page 27: Archivos secuenciales indexados

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.

• 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• SI HACEMOS• APUNTA ( <VARIABLE FICHERO> , TAMAÑO (<VARIABLE FICHERO> ) )• ESTAREMOS COLOCADOS SOBRE LA MARCA EOF. NO DA ERROR.• PODRÍAMOS PASAR UN FICHERO A MEMORIA, EN UN ARRAY P.E., PERO:• 1. SI SABEMOS EL LÍMITE DEL NÚMERO DE REGISTROS QUE CONTENDRÁ EL FICHERO.• 2. PUEDE NO CABER EN MEMORIA.

Page 28: Archivos secuenciales indexados

INSERCIÓ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.

Page 29: Archivos secuenciales indexados

BORRADO DE UN FICHERO

• 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:• 1. LOCALIZAR EN EL FICHERO EL REGISTRO QUE SE DESEA MODIFICAR.• •SABEMOS SU POSICIÓN. NOS POSICIONAMOS• •CONOCEMOS EL CONTENIDO DE ALGÚN CAMPO. SECUENCIALMENTE LO BUSCAMOS.• 2. SOBRE UNA VARIABLE AUXILIAR PROCEDEREMOS A MODIFICAR LOS DATOS.• 3. ESCRIBIRMOS DICHA VARIABLE AUXILIAR EN LA MISMA POSICIÓN QUE SE ENCONTRABA.• APUNTA(<VARIABLE FICHERO> , POSICIÓN ( <VARIABLE FICHERO> ) – 1 )• ESCRIBE (<VARIABLE FICHERO>, <VARIABLE_AUXILIAR>)• SUPRESIÓN DE REGISTROS• PROBLEMA: APROVECHAR EL ESPACIO OCUPADO POR UN REGISTRO BORRADO.