Inicio | Home
 English Summary
 Enlaces | Links
 Noticias GUCHOS
 
Directiva GUCHOS 2006
Presentamos nuestra nueva directiva elejida en la XI Reunión.

>> más información ...
 
XI Reunión Grupo Chileno de Usuarios Horizontes
Reunión llevada a cabo en la Universidad de la Serena, los días 5 y 6 de Enero del 2006 en la cuidad de la Serena, Chile.

>> más información ...
-
          DIRECTIVA | ¿QUE ES HORIZONTE? | QUERYS | TUTORIALES | REUNIONES | BLOG | CONTACTOS |
 


Tutoriales

>> SQL para Bibliotecarios
>> Seguridad en los Catálogos en Línea Win95 y Win98
>>
Funciones de Circulación en Horizonte 5.3

 


SQL para Bibliotecarios

El instructivo que encontrarán a continuación ha sido desarrollado específicamente para el uso por parte de bibliotecarios usuarios del sistema automatizado de bibliotecas Horizonte.

No se recomienda la aplicación de las instrucciones que aquí aparezcan, en otros sistemas de bibliotecas que puedan también utilizar SQL, pues se corre el riesgo de causar corrupción de tablas o pérdida de información.

Fundamentos y comandos básicos del lenguaje SQL, para la obtención de reportes desde el sistema de bibliotecas Horizonte. (Héctor Aracena M., 1998)

1. Introducción a SQL.

SQL es la sigla de Structured Query Language, es decir, Lenguaje Estructurado de Comandos. Es una herramienta que permite diseñar, consultar, manipular y administrar datos en una base de datos relacional.

El modelo de administración de bases de datos relacionales fue propuesto en 1970 por el Dr. E. F. Codd, del Laboratorio de Investigación de IBM, en San José, California, y luego desarrollado durante la década siguiente en otras universidades y laboratorios de desarrollo. Con el transcurso del tiempo, SQL se ha convertido en el standard de lenguaje de bases de datos relacionales. Un hecho que ha ayudado enormemente a este desarrollo ha sido el creciente perfeccionamiento y disponibilidad de computadores más poderosos y, también, el desarrollo de métodos mejorados para accesar, recuperar y almacenar información y datos.

El primer producto comercial basado en SQL fue SQL/DS, lanzado por IBM al mercado en 1981. desde esa fecha, hasta el presente, se han desarrollado alrededor de setenta y cinco sistemas de administración de bases de datos en SQL o basados en él, ejecutándose en computadores de todos los tamaños y arquitecturas.

Como lenguaje, SQL trata de aproximarse lo más posible al lenguaje natural; para ello, utiliza una sintaxis que recuerda algo de teoría de conjuntos, y otros comandos, generalmente de una sola palabra, complementan las sentencias básicas.

Para saber operar eficientemente el SQL, y obtener la información deseada desde la base de datos, es preciso, además de conocer bien la sintaxis de interrogación de SQL, conocer a profundidad la estructura y enlaces dentro de cada base de datos relacional.

2. ¿Qué es una base de datos relacional? (RDB en inglés)

Es aquella base de datos cuyo lenguaje de manipulación de datos permite al usuario definir relaciones entre elementos de datos, y tratar a las propias definiciones relacionales como elementos de datos.

Una base de datos relacional, además:

- representa toda la información de la BD en forma de tablas, es decir, estructuras de almacenamiento de datos comunes.
- soporta las tres operaciones relacionales básicas conocidas como:
selección, proyección y unión, para especificar exactamente qué datos desean ser consultados,absolutamente independiente de la forma física en que estos datos están guardados.

Las Tablas, entonces, son elementos de datos comunes, por ejemplo:

- tabla borrower: información sobre usuarios.
- tabla bib: información sobre registros bibliográficos.
- tabla auth: información sobre registros de autoridades

Dentro de las tablas, existen además otras estructuras:

- filas: representan secuencias de datos completas, es decir, registros completos dentro de la base de datos.

- columnas: representan los nombres de los campos controlados dentro de la base de datos.

Vistas

Las "vistas" en SQL, son estructuras de datos que contienen elementos de dos o más tablas unidas para generar reportes o estructuras más elaboradas, por ejemplo:

- item_report: es una vista que une información de tablas de ítemes, adquisiciones y usuarios, porque incluye columnas (campos) como: título, nombre,precio, tipo de Usuario, etc.

- items_out: es una vista que une información de tablas de ítemes y usuarios, pues permite visualizar los ítemes prestados, su fecha de vencimiento, a qué usuarios están prestados, de qué ubicación, etc.

Comandos Básicos de SQL y Delimitadores

SELECT es el "corazón" de la función de consulta de datos en una base de datos relacional. Este comando permite extraer datos para formar reportes o informes. Select delimita la o las columnas (campos) que se desean recuperar.

FROM este comando o "cláusula" es en realidad un delimitador de SELECT, pues permite especificar de dónde se va a obtener la información, es decir, desde qué tabla, desde qué vista, etc.
FROM establece la tabla o vista a usar como fuente de los datos extraídos con SELECT.

WHERE este comando o "calificador" permite condicionar nuestra selección de acuerdo a algun criterio determinado, filtrando los datos no deseados.

Ejemplo de los tres comandos:

SELECT name seleccionar campo nombre
FROM borrower desde la tabla borrower
WHERE btype = 'DIR' donde el tipo de usuario sea DIR

Otros comandos auxiliares o delimitadores son:

 

AND permite agregar otra condición al WHERE, para hacer más específica una consulta.

Ejemplo: SELECT name seleccione usuarios
FROM borrower desde la tabla borrower
WHERE btype = 'DIR' donde el btype sea "DIR"
AND location = 'BIB' y además la ubicación sea
"BIB"

 

ORDER BY permite ordenar los resultados de acuerdo a alguno de los campos (columnas) recuperados.

Ejemplo: select name, location seleccione usuario y ubicación
from borrower desde la tabla borrower
where btype = 'DIR' donde el btype sea DIR
and location = 'BIB' y además la ubicación sea BIB
ORDER BY name ordenados por usuario (nombre)

 

GROUP BY permite agrupar los resultados en base a alguna de las columnas seleccionadas y recuperadas con SELECT.

IMPORTANTE: SIEMPRE EL GROUP BY DEBE IR
ANTES QUE EL ORDER BY.


IN este delimitador o cláusula permite combinar dos consultas en una, en lo que se llama consultas anidadas.

Ej: where bib# in (select bib# from bib where ....)

NOT IN este delimitador permite excluir información, en lo
que se llama consultas anidadas.

Ej: where bib# not in (select bib# from bib where ..)

* este comando o utilitario permite seleccionar todas las columnas (campos) de una tabla o vista, sin necesidad de digitar cada nombre de columna, separado por coma.


Ejemplo: select *
from borrower
where btype = 'DIR'
and location = 'BIB'
order by name

Aunque name no se especifica en la sentencia SELECT, el asterisco hace que el sistema reconozca la columna name.


SUBSTRING este comando permite recuperar sólo cierta cantidad de caracteres de una columna o campo.

Ejemplo: select bib#, substring(text,1,50)
from bib
where tag = 245

Se pretende seleccionar sólo 50 caracteres del campo título.

Otros Operadores para Seleccionar Información.


a. de comparación: = < >

Ej: select item# from item
where n_ckos > 1

b. de combinación o negación lógica de condiciones: OR NOT

Ej: where n_ckos < 20 or ibarcode > 35611000250000

o bien:

where bib# not in (select bib# from bib where tag = 245)


c. rangos: BETWEEN NOT BETWEEN

Ej: where bib# between 1000 and 2500

o bien:

where bib# not between 1 and 100001


d. valores desconocidos: IS NULL IS NOT NULL

Ej: select borrower from borrower
where street2 is null

Con esta sentencia se pretende encontrar todos los usuarios que no tenga información en el campo street2


e. recuperación de caracteres: LIKE NOT LIKE

Ej: where btype like "%ALU%"

Otros Operadores de Comparación


>= Mayor o igual que
<= Menor o igual que
!= No igual a (or)
<> No igual que


Ejs.: select item#, ibarcode, n_ckos
from item
where n_ckos >= 30


select name, btype, bbarcode
from borrower
where n_ckos <= 1


select name, btype, bbarcode, street1, street2
from borrower
where btype != 'ALU'

 

Niveles de Consultas en SQL y su Sintaxis

1. CONSULTAS SIMPLES.

Permiten extraer información desde una sola tabla o vista, pudiendo estar o no condicionada a alguna limitante:

Ejemplos:

select name este query permite listar TODOS los nombres de from borrower usuarios que hay ingresados en la base de datos.
Aunque util, es poco práctico a la hora de elaborar reportes más específicos de usuarios.

select bib#, text este query permite obtener un listado de los números from bib bib y de los títulos de todos los registros bib. de la where tag = 245 base de datos. Los recuperará TODOS, sin mayores delimitaciones (puede ser práctico o no, dependerá
de cada biblioteca)


select item#, btype, call,
n_ckos, location este query selecciona los números de
from item item, el tipo de item, el número de
where location = 'BIB' pedido, la cantidad de préstamos y la
and btype = 'RF' ubicación, de aquellos ítemes que están
order by item# en la ubicación BIB y que pertenecen
al Tipo de Item RF (Referencia). Todo
esto ordenado por número del item.


select text, tag este query permite seleccionar el texto de las
from auth etiquetas (campos) de autoridades, y el número
where text like "%Neruda%" de las etiquetas, que contengan la palabra
order by tag Neruda. Todo ello ordenado por número de
etiqueta (campo).

2. CONSULTAS ANIDADAS.

Las consultas anidadas permiten extraer datos en forma mucho más específica que con una consulta simple, pero siempre desde sólo una tabla o vista de la base de datos. Este tipo de consultas permite incluir algun factor, o excluirlo de la selección.

Ejemplos:

select bib#, text
from bib
where tag = 245
and bib# not in (select bib# from bib where tag = 740)
order by text


Este query permite seleccionar todos los números bib. y los títulos de aquellos registros bibliográficos que tengan un campo 245, QUE NO TENGAN CAMPO 740 (título alternativo). Para seleccionar los que SI TENGAN campo 740, se debe cambiar el not in por in


select text
from bib
where tag = 245
and bib# in (select bib# from bib where tag = 082 and
text like "%658.3%")
order by text

Este query seleccionará sólo los títulos de aquellos registros bibliográficos que en el campo 082 tengan el texto 658.3. Podría ser util para generar listados de títulos por materias, basándose en el Número Dewey o CDU, más que en los encabezamientos de materia.

3. UNION DE TABLAS (JOIN)

La unión de tablas permite al usuario de SQL extraer datos desde diferentes tablas o vistas a la vez, aún cuando estos no tengan una relación directa entre si.

Para saber generar estas uniones de tablas, es absolutamente necesario identificar la llave o columna común a las tablas o vistas sobre las que se desea trabajar. Por ejemplo:


bib# (número bib)esta columna es común a las tablas bib e item;
por tanto, es posible obtener reportes combinando
información desde ambas fuentes.

Ejemplo:

select b.bib#, b.text, i.item#, i.call, i.location
from bib b, item i
where b.bib# = i.bib#
and b.tag = 245
and i.location = 'BIB'
order by b.text

En este caso, la llave común (el campo bib#) permitió extraer datos desde bib e item, al mismo tiempo. Se debe siempre especificar que la llave debe ser igual en cada una de las tablas incluidas. En este caso el número bib de la tabla bib debía ser igual al de la tabla item.

Importante, al hacer consultas anidadas, se debe asignar un código de tabla o vista a cada columna que se desea seleccionar, para que el sistema sepa exactamente dónde debe recuperar las columnas. En el ejemplo anterior, se puso : ... b.text ... from bib b , se le está diciendo al sistema que el nombre bib se abrevió al código b para identificar de
dónde viene el dato text, en este caso, de la tabla bib.

Ejemplo de unión de dos tablas:

use biblioteca
go
select substring(b.text,3,40), substring(i.call,1,25), i.copy,
i.ibarcode, i.n_ckos
from bib b, item i
where b.tag = 245
and b.bib# = i.bib#
and i.collection = "CG"
order by n_ckos desc
go


En este query, se seleccionaron 37 caracteres del título de los registros bibliográficos, 24 caracteres del número de pedido en los ítemes, la información de copia/vol., y la información de la cantidad de prestamos que han tenido los ítemes de la colección CG, desde que se inició la circulacion automatizada.

Recordar: la "llave" o campo común entre las tablas o vistas debe ser idéntica en todas ellas, por eso se digita


ejemplo:

where b.bib# = i.bib# para chequear que el
número bib de la tabla
bib sea igual al número
bib de la tabla item.

Ejemplo de unión de tres tablas:

use biblioteca
go
select a.text, b.bib#, i.collection
from auth a, bib b, item i
where a.auth# = b.auth#
and b.bib# = i.bib#
and i.collection = 'TS'
go

En este query se ha pedido al sistema que muestre la información de autoridades que ha sido utilizada por los ítemes pertenecientes a la colección TS, indicando además los números de los registros bib. a que pertenecen esos ítemes.


Aqui, como se trata de tres tablas, debe haber dos llaves o elementos
comunes, no uno sólo. En este caso, auth# es común a bib y a auth, pero
no a item; no obstante, el campo bib# es común a bib y a item; entonces:


- se une auth con bib gracias al elemento auth#

- se une bib con item gracias al elemento bib#


¿Cómo se puede saber las columnas que existen en el sistema, y a qué tablas o vistas pertenecen?


Al entrar al Editor de Tablas de Horizonte, debe haber una tabla llamada lister_column. Dicha tabla enlista todas las columnas existentes en la base de datos, siendo posible ordenarlas por tabla u otros criterios, y así se sabe qué columnas se repiten en qué otras vistas del sistema.


¿Cómo se puede saber qué columnas integran determinada tabla o vista?

Con la siguiente instrucción (en SAF o a través de un ISQL)


sp_help nombre_de_tabla_o_vista

Ejemplo:

sp_help item

sp_help bib

Un último consejo importante:


Al crear una sentencia select, no es determinante el orden que le den a los campos o columnas que desean recuperar, es decir, la selección puede incluir las columnas deseadas en el orden que más convenga al objetivo del reporte.

Por ejemplo:

1. select name, location, street2, btype, n_ckos
from borrower

Dará el mismo resultado que:

2. select name, btype, street2, location, n_ckos
from borrower

 

Bibliografía:

1. Bowman. Judith; Emerson, Sandra L.; Darnowsky, Marcy. The practical SQL handbook: using structured query language. Massachusetts: Addison-Wesley, 1996. 454 p.

2. Curso "Lenguaje SQL". Valparaíso: Universidad Federico Santa María, 8 al 10 de Octubre de 1997. (Apuntes de clase).

 


Seguridad en los Catálogos en Línea Win95 y Win98

Los computadores que se usan como Catálogos al Público de la base de datos de una determinada Biblioteca, deben quedar configurados de tal modo que los usuarios no puedan abrir otras carpetas o ejecutar aplicaciones no autorizadas que podrían causar pérdida de datos o fallas en el equipo.

Para evitar esto, se entregará a continuación un procedimiento para bloquear los computadores que acceden a la base de datos Horizonte, usando los sistemas operativos Windows95 o Windows98.

Procedimiento

Previamente: asegurarse de contar con los programas y utilitarios de POLEDIT, que es una carpeta de editor de sistemas que se encuentra en el CD de Windows95/98. Pesa aproximadamente 200K, por lo que puede caber perfectamente en un diskette. Otra opción es tener POLEDIT en algún PC a través de la red, con acceso compartido mediante contraseña.

1. Asegurarse de que el PC se conecta bien a Internet (puede ser mediante un telnet o PING al servidor de e-mail).

2. Asegurarse de que el WUI funcione y que el PC se conecte bien a la base de datos Horizonte.

3. Luego, acceder a POLEDIT y activar POLEDIT.EXE.

4. Si es la primera vez que se abre, se mostrará una ventana con el archivo Admin.adm ... se debe hacer click en ABRIR.

5. Luego, en el menú Archivo se debe escoger Abrir Registro.

6. Aparecerán dos íconos. Se debe escoger Usuario Local.

7. Aparecerá una serie de carpetas de sistema:
Escritorio, Panel de Control, Shell, Red y Sistema.
Se debe abrir en primer lugar SHELL y luego Restricciones.

8. Aparecerá una serie de cuadros en blanco para seleccionar la restricción deseada. Se recomienda quitar (marcando el cuadro correspondiente):

- menú Ejecutar
- mostrar unidades en Mi PC
- menú configuración y barra de tareas
- opción Apagar el Sistema
- comando Buscar
- no guardar configuración al salir del sistema

NO QUITAR ENTORNO DE RED, PUES SE DEBE PODER ACCEDER AL PC QUE TIENE POLEDIT, YA QUE SE SUPRIMEN LOS ICONOS DE LAS UNIDADES DEL PC.

9. Luego, Ir a SISTEMA, luego Restricciones y deshabilitar las dos opciones de DOS.

10. Recomendado: Ir a Panel de Control y marcar para deshabilitar o restringir: Panel de Control de Monitor (y sus sub-opciones) y Panel de Control de Red (y sus sub-opciones)

11. Finalmente, hacer click en Aceptar, luego se debe hacer click en la opción Guardar del menú Archivo. Salir de Poledit.

Finalmente, reiniciar el PC con CTRL+ALT+SUPR y probar si Windows sube automáticamente; probar también si las carpetas no deseadas ya no se ven y, finalmente, probar si accede a la base de datos.

RECOMENDACIONES ANTES DE EJECUTAR POLEDIT:

- si los PCs no están en muebles cerrados (las CPU), se recomienda deshabilitar las disketteras, para que no puedan bootear los PCs con algún diskette de DOS.

- borrar archivos y accesorios de Windows como:
Wordpad, Notepad, Write, Paintbrush, Juegos, Calculadora, Ayuda de Windows, Tutorial de Windows.

- borrar del Menú Inicio todos los accesos, incluso los del Explorador de Windows, DOS, etc. Sólo debe quedar el acceso a Catálogo Electrónico 5.3 y a algún antivirus instalado.

- también se debe vaciar la carpeta Favoritos (si estuviese) y la carpeta Documentos (si estuviese).

 


Funciones de Circulación en Horizonte 5.3

1. Solicitud de devolución anticipada (Recall) : se aplica cuando se desea que uno o más ítemes sean devueltos antes de la fecha que le(s) dio el sistema. Se hace buscando el o los ítemes en el módulo de búsqueda y enviándolo(s) a Circulación. Se abre una pantalla que indica dónde se desea enviar :

Préstamo

Devolución

Solicitud ---> se debe escoger ese botón

... Se abre una caja de diálogo para cambiar la fecha de devolución del ítem.

Se debe notificar al usuario del cambio efectuado.

2. Cambio de Fecha / Hora en Devolución : se usa en caso de interrupciones del servicio, para que los ítemes con hora de vencimiento no se registren atrasados. Incluso aplica para días completos.

Ejemplo: el item 9999 estaba para las 14:30 pm del 31/10/2001

Hubo una falla de la red y la biblioteca estuvo cerrada desde las 13:00 hasta las 16:00 hrs. de ese día.

Al volver el sistema, ir al Menú DEV y seleccionar Cambiar Fecha DEV e ingresar la fecha / hora deseada, en este caso podrían ser las 13:00 hrs (se "engaña" al PC). Si la falla dura un día, se ingresa la fecha "anterior" cuando el sistema es restaurado (conexión). Con lo anterior se evita tener que pasar por alto multas por atraso.

Al terminar de devolver los ítemes, volver a abrir Cambiar fecha DEV y escoger Reiniciar Reloj ... para que tome la fecha/hora normal del PC.

3. Préstamos indefinidos : si se desea que un ítem en préstamo permanente se vea en el OPAC como "préstamo indefinido" basta con editar el Item en Circulación, e ingresar cualquier fecha posterior al 31 / 12 / 2049 ---> aparecerá en el detalle de ítemes como "Préstamo Indefinido" sin fecha de expiración.


 
 
© Copyright GUCHOS 2006 - CHILE