Formatos de salida que integran la información de bases de datos relacionadas

From ABCD Wiki
Revision as of 14:03, 24 November 2013 by Guilda (talk | contribs)
Jump to: navigation, search

A través de un campo de relación (número de control), es posible crear una estructura que relacione registros provenientes de varias bases de datos. Este es el esquema adoptado por ABCD para la relación entre un registro bibliográfico y sus copias, las copias con su disponibilidad en préstamo y los usuarios y sus transacciones (ver el esquema de las Relaciones entre bases de datos en los procesos de gestión de ABCD).

Para desarrollar nuestro ejemplo, supongamos que deseamos obtener este tipo de salida: 700px|centro|link=|border En forma esquematica la relación entre el catálogo, sus copias y las copias habilitadas para préstamo, es la siguiente: centro|link=|border

Esto significa, que un registro en el catálogo bibliográfico puede tener muchos registros en el archivo de copias y a su vez un solo registro en el archivo de copias hablitadas para préstamo. Por lo cual, para producir nuestra salida, desde la base de datos bibliográfica tenemos que hacer una lectura de los registros relacionados en copias y también una lectura de los registros habilitados para préstamo. Todo esto utilizando el número de control de la copia que representa el campo de relación entre las distintas estructuras.

  • Como desde la base de datos bibliográfica (biblo en nuestro ejemplo) queremos acceder las bases copies y loanobjects tenemos que agregar en biblo.par los caminos de acceso a las bases que vamos a relacionar:
       copies.*=%path_database%copies/data/copies.*
       loanobjects.*=%path_database%loanobjects/data/loanobjects.*
       Esto también puede solucionarse definiendo en la carpeta par el archivo syspar.par 
       donde se pueden colocar los recursos compartidos entre todas las bases de datos

Teoría: (ver: Manual del lenguaje de formatos del CISIS

La función que provee el lenguaje de formateo de Isis para relacionar bases de datos es la siguiente:

         ref(mfn, format) 
         ref([master file]mfn, format) 
   
         ref(<expr>,<format>)     
         ref([<format dbname>]<expr>,<format>) 
   

Definición: Ejecuta <format> en el registro seleccionado mediante <expr>. Si se indica <format dbname> se puede referenciar a otra (o la misma) base de datos

Ejemplos:

         ref(l(v3),v1/,v2/,v3/),     
         if ref(['account']l(['user']v2),v4)='active' then |Name: |v10/, fi,     
         (if p(v99) then ref([v99]1,v30/), fi), 

La función REF expresada en la forma:

         ref(mfn, format) 
         ref([master file]mfn, format) 

Relaciona bases de datos utilizando el MFN como campo de relación, es decir, accede el registro relacionado a través de su MFN.

Para extender el alcance de las relaciones entre registros, también se provee la opción de definir una relación utilizando las claves de la lista invertida. Esta forma de relación equivale a:

  • Suministrar una expresión de búsqueda para localizar registros en la base de datos relacionada
  • Ejecutar la búsqueda y obtener el MFN del primer registro que cumple con la condición establecida en la expresión
  • Leer el registro a través del MFN recuperado en el paso anterior

La función 'L permite localizar registros a través de la lista invertida

         l(key) 
         l([inverted file],key)     
   
         l(<format key>)     
         l([<format ifname>]<format key>) 

Definición

Regresa el MFN del primer posting (si lo hubiera) usando la clave generada por el formato <format key> para buscar en el archivo invertido actual. Puede también buscar en otro archivo invertido cuyo nombre se indica mediante el formato <format ifname>. Ejemplo:

         if l(v15)<> 0 then |Term: |v15, fi,   

Fin de la teoría