INTRODUCCION En el presente trabajo se habla de una forma de organización de archivos llamada Multillave la cual consta de un llave primaria y uno o más llaves secundarias. Este tipo de organización es utilizada en grandes sistemas de base de datos. Su capacidad de manejo para acceso de datos a través de múltiples trayectorias la hace la forma de organización más importante para los sistemas que hoy en día se utilizan en grandes empresas. Las formas de organización antes mencionadas se utilizan para diferentes aplicaciones en distintos ámbitos mientras que la multillave podría sustituir a cualquiera de las anteriores y ser útil en cualquier situación que se presente. ORGANIZACIÓN DE ARCHIVOS MULTILLAVE La organización de un archivo define la forma en la que los registros se disponen sobre el soporte al almacenamiento, o también se define la organización como la forma en que se estructuran los datos en un archivo. En este tipo de archivo se permite el acceso directo por más de una llave y también la representación de conjuntos. Añadir una llave secundaria a un archivo de registros homogéneos aumenta los procesos de mantenimiento del archivo y complica la estructura de datos, pero se obtienen ventajas muy importantes para el procesamiento de datos. Un enfoque para poder manejar diferentes tipos de accesos a una colección de registros es tener un solo archivo de datos con múltiples trayectorias de acceso. Ahora, se tendrá una sola copia del registro de datos por actualizar, y el problema de sincronización de actualizaciones causado por la duplicación de registros, desaparecerá. A este enfoque se le llama organización de archivos multillave. El concepto de acceso por multillave es generalmente implantado mediante la construcción de multiíndices que proporcionan diferentes trayectorias de acceso a los registros. También pueden ser múltiples listas ligadas a través de los registros. El método más adecuado para instrumentar un archivo multillave depende del uso real de los datos y de los tipos de manejo de archivos multillave disponibles. En este tipo de organización se utilizan varias llaves de las cuales se distinguen dos por ser las más importantes: la llave primaria y la llave secundaria. Si un campo de llave se usa para determinar la estructura de almacenamiento de los datos del archivo, éste es llamado llave primaria (o principal) del archivo la cual es única para ese registro, todas las demás llaves de acceso son llamadas llaves secundarias, nos dan otra trayectoria para llegar a los datos del registro. Muchos sistemas de información interactiva requieren del manejo de archivos multillave. Por ejemplo en un sistema bancario, en el cual hay varios tipos de usuarios, todos tienen la necesidad de accesar a los mismos datos por eso se necesitan varias llaves para cada uno de los casos. Existen varias técnicas que son utilizadas para implantar estos archivos. La mayoría de estos métodos están basados en la construcción de índices para proporcionar acceso directo mediante el valor de las llaves. Se distinguen dos métodos para proporcionar trayectorias de acceso adicional hacia los archivos de registros de datos: a).- Archivo invertido. b).- Archivo Multilista Archivo Invertido Un método fundamental para proporcionar el encadenamiento entre un índice y los registros del archivo es llamado inversión. Un índice de inversión de llaves contiene todo los valores que la llave tiene presente en los registros del archivo. Cada uno de los valores de la llave en el índice de inversión apunta a todos los registros que tienen el valor correspondiente. El archivo de datos se dice que ésta invertido sobre esa llave. Un archivo invertido es una tabla similar al índice de un libro, su estructura básica es la siguiente: 1.Los registros apuntadores(direcciones). originales sin contener 2.- El índice o directorio que contiene ciertos valores de los campos, seguidos de una lista de apuntadores a los registros caracterizados por esos valores de campos. El concepto de inversión se refiere a llevar un campo hacia el archivo índice. Una de las grandes ventajas de las organizaciones invertidas sobre otras organizaciones es su capacidad para satisfacer varios tipos de consulta, que involucran a los valores de los campos invertidos, sin tener que recopilar los propios registros del archivo. Un archivo completamente invertido tiene un índice de inversión para cada campo de datos. Si un archivo no está completamente invertido, pero tiene al menos un índice de inversión, se dice que es un archivo parcialmente invertido. La inversión como enfoque para proporcionar acceso multillave ha sido utilizado como una base para las estructuras físicas de bases de datos en sistemas comerciales disponibles para la administración de bases de datos(sistemas como el DB2 de IBM y Oracle, sistema 2000 de Intel, etc.). Ventajas del Archivo Invertido Procesamiento directo de conjuntos Se pueden agregar o borrar llaves secundarias de manera dinámica Las llaves únicas son fáciles de procesar Desventajas del Archivo Invertido Usa una estructura más compleja que las listas encadenadas Dificultad para mantener registros índice de longitud variable Puede ser muy lento Archivo Multilista Otro enfoque básico para suministrar la conexión entre un índice y el archivo de registros de datos, se llama organización multilista. Este enfoque ha sido la base para estructuras físicas en muchos sistemas de administración de base de datos jerárquicos y de redes disponibles comercialmente. Igual que un archivo invertido, un archivo multilista mantiene un índice para cada llave secundaria. Existe una entrada en el índice de llave secundaria para cada valor que, la llave secundaria, tiene en este momento en ele archivo de datos. La organización multilista difiere de la de inversión en que, mientras que la entrada en el índice de inversión para un valor de llave tiene un apuntador a cada registro de datos con ese valor de llave, la entrada en el índice de multilista para un valor de llave tiene sólo un apuntador al primer registro de datos con ese valor de llave. Este registro de datos contiene un apuntador al siguiente registro de datos con ese valor de llave, y así sucesivamente. Luego hay una lista ligada de registros de datos para cada valor de la llave secundaria. Los encadenamientos en multilistas normalmente son bidireccionales y ocasionalmente son circulares, para mejorar la eficiencia de actualización. Una característica del enfoque multilista es que las entradas del índice pueden ser de longitud fija. Cada valor está asociado con un solo apuntador. Ventajas del Archivo Multilista Puede ser muy eficiente Búsqueda en listas puede ser reducida Flexible Desventajas del Archivo Multilista Estructura compleja Programación más extensa ¿Con acceso de una llave? Organización Multillave ¿ Con acceso secuencial únicamente? Organización Secuencial ¿ Con acceso directo únicamente? Organización Relativa o Directa Organización Secuencial Indexada Pseudocódigo de programa program arbolbin; uses fdelay, crt; type ptr = ^nodo; nodo = record numero : integer; nombre : string[10]; race : integer; ida, der: ptr end; var num, opcion: integer; alumno: ptr; ith: file of nodo; resp, desea: char; nom: string[10]; carre: integer; procedure insertar (var p: ptr; x: integer; name:string; prof: integer); begin if p = nil then begin new (p); p^.numero:= x; p^.nombre:= name; p^.race:= prof; p^.ida:=nil; p^.der:=nil; seek(ith, p^.numero); write(ith, p^); seek(ith, p^.race); write(ith, p^); end else if x < p^.numero then insertar (p^.ida, x,name,prof) else insertar (p^.der, x,name,prof); end; procedure pornum (p : Ptr); begin if P <> nil then begin pornum (P^.Ida); writeln(P^.numero,'..'); pornum (p^.der); end end; procedure porcar (p : Ptr); begin if P <> nil then begin porcar (P^.ida); writeln(P^.race,'..'); porcar (p^.der); end end; begin clrscr; assign(ith, 'delith.dat'); reset(ith); new(alumno); alumno:=nil; repeat clrscr; gotoxy(25,9); writeln('ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»'); gotoxy(25,10);writeln('º 1.-INSERCION º '); gotoxy(25,11);writeln('º 2.-INDICES º '); gotoxy(25,13);writeln('ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ '); gotoxy(25,14);writeln('º 3.-SALIR º '); gotoxy(25,15);writeln('ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ '); gotoxy(25,17);writeln('OPCION:');gotoxy(33,17);readln(resp); if resp = '1' then begin repeat clrscr; writeln('Cual es su numero de control?'); readln(num); writeln('Cual es su nombre?'); readln(nom); writeln('En que carrera esta?'); readln(carre); insertar (alumno, num, nom, carre); writeln('¨Quieres insertar otro registro?'); readln(desea); until desea = 'n'; end; if resp = '2' then begin clrscr; writeln('***1.-por numero***'); writeln('***2.-por carrera***'); readln(opcion); clrscr; if opcion = 1 then pornum (alumno); if opcion = 2 then porcar (alumno); end; readln; until resp = '3'; end. Pseudocodigo de Programa program multicrea; uses fdelay, crt; type ptr = ^nodo; nodo = record numero : integer; nombre : string[10]; race : string[5]; ida, der: ptr end; var num, opcion: integer; alumno: ptr; ith: file of nodo; resp, desea: char; nom, carre: string[10]; begin clrscr; assign(ith, 'delith.dat'); rewrite(ith); close(ith); end. Pseudocodigo de Programa program arbolbin; uses fdelay, crt; type ptr = ^nodo; nodo = record numero : integer; nombre : string[10]; race : integer; ida, der: ptr end; var num, opcion: integer; alumno: ptr; ith: file of nodo; resp, desea: char; nom: string[10]; carre: integer; begin clrscr; assign(ith, 'delith.dat'); reset(ith); writeln('escribe el numero para ir directo o 100 para salir'); readln(num); while num < 100 do begin seek(ith, num); read(ith, alumno^); writeln('numero de control******nombre******carrera'); writeln(' ',alumno^.numero,' ',alumno^.nombre,' writeln('teclea otro numero o 100 para salir'); readln(num); end; ',alumno^.race); writeln('escribe el numero de carrera para ir directo o 10 para salir'); readln(carre); while carre < 10 do begin seek(ith, carre); read(ith, alumno^); writeln('numero de control*******nombre******carrera'); writeln(' ',alumno^.numero,' ',alumno^.nombre,' ',alumno^.race); writeln('teclea otro numero '); readln(carre); end; end. CONCLUSIONES Este tipo de organización es la mejor para cualquier sistema comercial por que nos permite el acceso directo por más de una llave y eso nos da rapidez en el procesamiento y recuperación de datos. Podemos darnos cuenta de que a la hora de programarlo llega a hacer un proceso muy repetitivo de estructuras y muy tedioso para el programador. También nos dimos cuenta que a nivel escolar el uso de esta organización no es muy común ya que la mayoría de los estudiantes huyen de la complejidad del código de programación. Para poder dominar estos archivos se deben de tener muy buenas bases en estructuras de datos anteriores además de manejar apropiadamente un lenguaje que facilite su creación ya que en algunos el trabajo se vuelve casi imposible de realizar . BIBLIOGRAFIA “ESTRUCTURA DE DATOS Y ORGANIZACIÓN DE ARCHIVOS” AUTOR: Mary E. S. Loomis EDITORIAL: Prentice Hall “ ARCHIVOS, ORGANIZACIÓN Y PROCEDIMIENTOS” AUTOR: César E. Rose Gómez EDITORIAL: Computec