Formatos de salida que integran la información de bases de datos relacionadas
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:
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 |