Vous êtes sur la page 1sur 9

Organizndonos con Oracle

Por Sonia Benvenuto

Con el presente artculo quiero trasmitir mis impresiones de cuando empec a trabajar con Oracle versin 6.0 (Sistema de Administracin de Base de Datos Relacional RDBMS), luego de aos de programacin en Clipper, del cual haba heredado una filosofa que result ser muy diferente a la que se me presentara en Oracle, y de lo que no era muy consciente en sus inicios. Mi intencin no es comparar ambos sistemas, sino trasmitir todo lo que me result novedoso o diferente en Oracle con respecto al esquema de programacin de Clipper y, de esta forma, tratar de dar una primera respuesta, de forma elemental, a la pregunta que siempre me hacen mis colegas de Clipper Cules son las diferencias fundamentales del ORACLE con Clipper? Mi experiencia en Oracle comenz con la realizacin de un diseo del sistema y su programacin en DOS, monousuario. Posteriormente tuve que realizar la migracin de fuentes y la correspondiente compilacin e implementar el Sistema en UNIX, en una red con 8 terminales y 3 impresoras.

Forma de organizacin de datos


La primera, para los que empiezan a trabajar con Oracle, es que no se pueden realizar consultas desde el Sistema Operativo, tipo DIR (DOS) o ls (UNIX), el listado de los archivos de datos o el de los ndices que componan el sistema (archivos .DBF o .NTX del Clipper). Por lo tanto el primer gran descubrimiento, fue constatar la forma en que Oracle, a diferencia de Clipper, almacena y organiza los datos. Normalmente en Clipper trabajamos con archivos que contienen un mismo tipo de informacin, a la vez que el tamao no est fijado previamente, sino que va variando en la media que se aade informacin al mismo. En el caso de Oracle la situacin es muy diferente, ya que el archivo tiene dos particularidades: 1.- Contiene informacin de distinto tipo. En un mismo archivo se registra informacin de todos los tipos de objetos que componen la Base de Datos: Tablas del usuario (.DBF de Clipper). ndices (.NTX de Clipper). Menes. Pantallas (forms). Reportes. Diccionario (tablas del sistema). La forma de almacenar y organizar la informacin se basa en el concepto de que cada estructura de informacin no es un archivo, como sucede en Clipper con los .DBF, sino que toda la informacin de la Base de Datos esta en un mismo archivo. Cada estructura de informacin se denomina tabla, las que junto a los ndices y al diccionario de datos del sistema componen la Base de Datos. 2.- Tienen un tamao prefijado. Esta forma de almacenamiento de Oracle exige que se creen los llamados "espacios de tablas" donde se define un archivo al cual se le reserva una capacidad mxima (tamao

1
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - Grupo EIDOS

predefinido), que se ir llenando con el crecimiento del sistema, y a este espacio se le puede incorporar nuevos archivos en la medida que se necesiten. Oracle se caracteriza por poseer un concepto de Base de Datos diferente al de Clipper, ya que existe una nica Base de Datos, representada por uno o varios espacios de tablas que a su vez pueden estar compuestos por uno o ms archivos. De esta forma, Oracle usa los archivos como parte de un esquema de organizacin basado en los llamados espacios de tablas. Un espacio de tabla es un rea del disco representada por uno o ms archivos con tamao prefijado. En caso de llenarse los archivos que componen el espacio de tabla, ste se amplia con la adicin de un nuevo archivo. Uno o ms espacios de tablas componen la Base de Datos. Cuando se comienza a trabajar en Oracle es muy comn que se tienda a confundir el concepto de espacio de tabla con el de directorio, conceptos que son diferentes, ya que en un mismo directorio podran existir archivos de distintos espacios de tabla y, por otro lado, un espacio de tabla puede estar compuesto de archivos ubicados en diferentes directorios e, inclusive, en diferentes discos. De esta forma la base de datos en Oracle se organiza como se muestra en la tabal 1:

Espacio

System Archivo Contabilidad Archivos

DBS1.ORA

Espacio

CONT1.ORA CONT2.ORA Tabla 1: Base de datos EMPRESA

Es importante destacar que Oracle permite el mantenimiento de los espacios de tabla de una forma relativamente fcil. Para la creacin y ampliacin de los espacios de tablas en Oracle existen una relacin de mandatos, los cuales se exponen en la tabla 2:

2
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - Grupo EIDOS

Creacin del Espacio de Tablas: CREATE TABLESPACE contabilidad DATAFILE 'C:CONT1' SIZE 2 M; Ampliacin del Espacio de Tablas (adicin de un nuevo archivo): ALTER TABLESPACE contabilidad ADD DATAFILE 'C:CONT2.ORA' SIZE 1 M; Creacin de tablas: CREATE TABLE clientes ( numero number(5), nombre char(30), direccion char(100)); CREATE TABLE ventas ( numero number(5), fecha date, articulo char(10), valor number(10,2)); Modificacin de tablas: -Adicionar un campo: ALTER TABLE cliente ADD (tipo NUMBER(2)); -Ampliar la longitud del campo: ALTER TABLE cliente MODIFY (direccion CHAR(150)); Descripcin de tablas: DESCRIBE clientes; Tabla 2: Comandos sql para el mantenimiento de espacios y de tablas:

En esta forma de organizacin de datos es posible obtener un listado de las tablas e ndices que componen el sistema, as como conocer qu espacio est realmente ocupado dentro del reservado en los archivos del espacio de tabla. Para ello, basta con acceder al sistema Oracle con la identificacin correspondiente y hacer una consulta SQL, del tipo SELECT, en una tabla del Diccionario (ALL_OBJECTS) del Sistema que contenga registrados todos los objetos que componen dicho sistema. El siguiente ejemplo nos muestra cmo se puede obtener la lista de Tablas pertenecientes a un usuario.

SELECT OBJECT_NAME "NOMBRE TABLA" FROM ALL_OBJECTS WHERE OBJECT_TYPE='TABLE' AND OWNER='usuario' ;

3
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - Grupo EIDOS

ndices
Tambin en el tratamiento de los ndices las diferencias entre Oracle y Clipper son notorias para un principiante. La forma de manejo de los ndices en Oracle se realiza de forma inteligente. Afirmamos esto porque, para ello, basta con que el programador cree los ndices y, una vez creados, no sea necesario abrirlos (o activarlos) para realizar una consulta, sino que ser el propio sistema, al analizar la condicin de la consulta (WHERE), el que seleccione automticamente el ndice que debe usar. Como se muestra en los siguientes ejemplos, la sintaxis que hay que seguir para la creacin de ndices es muy simple. Creacin de ndices:

CREATE INDEX UNIQUE numero ON clientes(numero) CREATE INDEX fecha ON ventas (fecha,articulo)

Lista de ndices creados por un usuario:

SELECT OBJECT_NAME "NDICE" FROM ALL_OBJECTS WHERE OBJECT_TYPE='INDEX' AND OWNER='usuario' ORDER BY OBJECT_NAME ;

Como si todas estas bondades fueran poco, los ndices de Oracle son muy fiables, pue existe una gran seguridad en su uso y, aunque es raro que en Oracle un ndice se dae y deje de trabajar, se dispone de una orden para la validacin de ndices (VALIDATE INDEX), la cual, una vez ejecutada, comprueba la seguridad del ndice y, de existir algn problema, lo reconstruye.

Mdulos y ejecutable
Estos dos elementos son destacables para quienes vienen de lenguajes como Clipper, pues Oracle (que es 100% compatible con IBM DB2 SQL) est compuesto por varios mdulos, entre los cuales se destacan, por su importancia, los siguientes:

RDBMS: SqlPlus: SqlMenu: SqlForms: SqlReport:

Ncleo del sistema. Interfaz para la creacin y mantenimiento de tablas y listados simples. Diseo de Mens. Diseador de Forms. Generador de informes.

Tambin existen otros mdulos opcionales, que amplan las posibilidades del Oracle como son:

SqlLoad SqlGraph SqlCalc

Carga datos de archivos externos, con formato ASCII, en las tablas de Oracle. Diseo grfico. Planilla de clculo.

4
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - Grupo EIDOS

SqlNet ProProduct

Permite que dos o ms servidores ejecuten Oracle para intercambiar datos a travs de la red. Preprocesadores para lenguajes de programacin como C, Pascal, ADA y Cobol.

Es importante destacar que cada mdulo genera un ejecutable simblico, que es una versin comprimida del archivo fuente. En Oracle el ejecutable no es un archivo .EXE que se puede distribuir independientemente como en Clipper, sino que es un conjunto de archivos compilados que, para su ejecucin, requieren del correspondiente runtime. Por ejemplo, veamos la tabla 3.

Archivo Ejecutable Mdulo Runtime Men *.DMM Runmenu Forms *.FRM Runform Reportes *.REP Runrep Tabla 3: Runtimes para los distintos ejecutables

Potencia del SQL


El lenguaje SQL (que es el ANSI para manejo de bases de datos relacionales) es muy potente: entre otras operaciones permite hacer, de forma fcil y sencilla, consultas complejas que involucran varias tablas simultneamente, que exigen el cumplimiento de varias condiciones y que, a su vez, pueden incluir subconsultas a la consulta principal. Lo que en Clipper requiere muchas lneas de programacin (como por ejemplo la consulta de una o varias tablas al mismo tiempo) en Oracle se puede escribir en unas pocas. La mejor forma de mostrar esto es a travs del siguiente ejemplo, en el cual se desea obtener, simultneamente, el nombre de los clientes y las fechas de ventas de un artculo determinado. En esta consulta se relacionan dos tabla por el nmero del cliente. El cdigo de la consulta es:

SELECT nombre,fecha FROM clientes,ventas WHERE articulo='DISKETTE' AND clientes.numero=ventas.numero ORDER BY nombre,fecha ;

Otro tipo de consulta de uso comn es la que depende de una anterior (subconsulta). En el prximo ejemplo usamos la subconsulta para listar el nombre y direccin de clientes con ventas superiores al valor medio.

SELECT nombre,valor FROM clientes,ventas WHERE clientes.numero=ventas.numero and valor>=(select avg(valor) from ventas ) ORDER BY nombre ;

5
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - Grupo EIDOS

Programacin
Como era de suponer, la programacin es otro de los aspectos distintos entre Clipper y Oracle. La programacin en Oracle se hace a travs del diseo de pantallas (forms), donde una de la herramientas fundamentales son los trigger o disparadores de teclas o eventos. El sistema trae incorporado una importante cantidad de procedimientos y funciones que se disparan con la ocurrencia de ciertos eventos o pulsacin de determinadas teclas. Por ejemplo, el evento de insertar un registro dispara un procedimiento con determinados controles, y el uso de la tecla [F9] permite consultar la tabla de cdigos de un campo con slo especificar cul es la tabla que los contiene, pudiendo, de esta forma, acceder a la lista de cdigo sin necesidad de programar un procedimiento especfico que controle esta situacin. El trigger de teclas tiene una funcionalidad parecida a la del mandato SET KEY (o la funcin SetKey()) de Clipper, que invoca un procedimiento (o evala un CodeBlock) a partir de la pulsacin de una tecla, pero con la particularidad de que en Oracle, nada ms comenzar, cada tecla tiene asociado un procedimiento empaquetado definido por el propio sistema. El usuario puede redefinir esta asignacin de procedimientos o puede asignar sus propios procedimientos a una tecla. A continuacin mostramos una lista de funciones que las teclas tienen asociadas en las forms: [F3] [F4] [F5] [F6] [F7] [F8] [F9] [F10] Repite valor del campo del registro anterior. Repite todos los campos del registro anterior. Ir al men. Insertar un nuevo registro. Ingresar datos para una consulta. Realizar la consulta. Lista de cdigos del campo. Validar las modificaciones.

Como se puede observar, el sistema ya tiene incorporadas las tareas ms rutinarias y que siempre se suelen necesitar, lo que permite al programador concentrarse en la tarea de redefinir teclas (si fuese necesario) o en capturar los disparadores (para ampliarlos o modificarlos), lo que implica un ahorro importante de tiempo de programacin. El lenguaje procedural de Oracle para SQL es el PL/SQL, y est basado en la construccin de bloques (Begin ... End) contando, asimismo, con una seccin para el control de excepciones. Veamos un cdigo comn en PL/SQL con el ejemplo del fuente 1. En l, al ingresar en una consulta de un cdigo de artculo en la variable xCodigo, se hace un control de la existencia del cdigo y, de ser vlido, se muestra el nombre del artculo en la variable xNombre.

/* --- Fuente 1 -------------------------------------------------------- */ BEGIN /* Bloque para el control del ingreso correcto del cdigo */ SELECT nombre INTO :xnombre FROM artculos WHERE cdigo=:xcodigo ; message('Cdigo Correcto'); ... EXCEPTION

6
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - Grupo EIDOS

WHEN NO_DATA_FOUND THEN message('Cdigo Incorrecto'); RAISE FORM_TRIGGER_FAILURE; END;

Facilidad de reportes (informes)


Oracle incorpora el SQL*ReportWrite que es una herramienta muy eficaz para facilitar la creacin de informes. Tambin incluye la posibilidad de realizar una visualizacin previa por pantalla, y distintos estilos de informes, entre los cuales incluye algunos como: Master - Detalle - Total. Rango de valores. Etiqueta. Carta Modelo. Llenado de Preimpreso. Matriz. Para dar una idea de las posibilidades de esta herramienta veamos en la tabla 4 cmo se define un informe del tipo Master - Detalle -Total.

Empresa EMPRESA A

Artculo DISKETTE DISKETTE PAPEL Artculo -------DISKETTE PAPEL

Fecha 01/03/95 10/03/95 21/03/95 Total ------$300.50 $220.50 20/03/95 15/03/95

Valor $100.50 $200.00 $220.50

EMPRESA B

DISKETTE PAPEL

$300.00 $330.00

Artculo Total -------------DISKETTE $300.00 PAPEL $330.00 Tabla 4: informe del tipo Master - Detalle -Total

La creacin de este informe se realiza con la definicin de tres consultas, relacionadas entre s por el nmero del cliente: Q_CLIENTE : Identificar el cliente. Q_VENTAS : Listar para cada cliente y cada artculo su fecha y valor de venta. Q_TOTAL : Sumar los valores de ventas agrupados por el nmero del cliente y artculo.

Query Name: Q_CLIENTE

select numero,nombre

7
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - Grupo EIDOS

from clientes order by nombre

Query Name: Q_VENTAS

select numero,articulo,fecha,valor from ventas order by articulo,fecha

Parent Query 1: Q_CLIENTE

Child Columns: NUMERO Parent 1 Columns: NUMERO

Query Name: Q_TOTAL

select numero,articulo,sum(valor) from ventas group by numero,articulo order by numero,articulo

Parent Query 1: Q_CLIENTE

Child Columns: NUMERO Parent 1 Columns: NUMERO

A cada consulta se le asigna un GRUPO para definir la forma de impresin (Down, Across, Crosstab), la posicin relativa (a la derecha o abajo), la cantidad de lneas y espacios, la separacin entre registros y otros. En la tabla 5 y 6 se ve todo lo expuesto.

Group Name Query G_CLIENTE Q_CLIENTE G_VENTAS Q_VENTAS G_TOTAL Q_TOTAL Tabla 5: Formas de impresin

Print Direction Down Down Down

Group Name G_CLIENTE

Relative Position

Lines Before

Spaces Before 2

Spacing Record 2

8
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - Grupo EIDOS

G_VENTAS 2 G_TOTAL Below 1 0 Tabla 6: Comportamientos de los registros y campos

Esta forma de trabajo hace que la tarea de diseo de informes, que para m era de las menos gratas en Clipper, pasar a ser de las ms distendidas. En este artculo slo he enumerado algunos de los aspectos ms destacados de Oracle. Si es de inters para los lectores podramos comenzar una serie de artculos para adentrarnos en el mundo Oracle.

9
Algoritmo. La revista para el programador de sistemas de bases de datos. http://www.eidos.es - Grupo EIDOS

Vous aimerez peut-être aussi