Professional Documents
Culture Documents
La base de datos Oracle9i provee muchas caractersticas tiles y poderosas. Muchas de estas caractersticas estn
incorporadas al nivel de SQL. SQL ha sido adoptado por la mayora de los sistemas de gestin de base de datos relacionales
(RDBMS). ANSI (American National Standards Institute) ha estado perfeccionando estndares del lenguaje SQL en los
ltimos 20 aos. Oracle, como muchas otras compaas, ha adoptado el estndar ANSI de SQL y lo ha extendido para
incluir un gran nmero de funcionalidades adicionales.
El desarrollo de software para la gestin de informacin ha transitado por diferentes etapas, desde implementaciones sobre
un sistema de archivos hasta las bases de datos relacionales y relacionales objeto. En la actualidad existen complejos
sistemas de gestin de base de datos (DBMS), como Oracle9i Server, los cuales proveen funcionalidades de almacenamiento
y acceso eficiente a datos, y diversas otras funcionalidades relacionadas a la gestin integral de datos.
Con el advenimiento de la teora de objetos y la proliferacin del paradigma de orientacin a objetos como base para el
desarrollo de aplicaciones de software, surge en el campo de las bases de datos la necesidad de adaptar un modelo para
mapear en forma directa, en la base de datos, los objetos manipulados por la aplicacin de software. En este sentido,
surgen las bases de datos objeto relacionales (ORDBMS) como una adaptacin de las bases de datos relacionales
brindando, a travs de una capa de objetos, una interfase orientada a objetos que permite almacenar, acceder y recuperar
datos objeto. Orace9i Server, adems de continuar dando soporte a la tecnologa relacional, tambin soporta la tecnologa
objeto relacional brindando todas las funcionalidades necesarias para la gestin de datos objeto.
1.1 Introduccin
En la figura 1 se resenta una clasificacin de los contenidos tratados en esta subunidad teniendo en cuenta la relacin de
los mismos con el Material del Estudiante (kit).
Esta clasificacin sugiere diferentes momentos de lectura, estudio y revisin entre los contenidos de este currculo y el
Material del Estudiante (Kit). Segn esta clasificacin los contenidos pueden ser de:
Lectura Previa: Se sugiere la lectura de estos contenidos antes de abordar los subtemas, temas o unidad asociados
al Material del Estudiante (Kit).
Lectura Complementaria: Se sugiere la lectura de estos contenidos como complemento a los subtemas,
temas o unidad asociados al Material del Estudiante (Kit).
Lectura Adicional: Se sugiere la lectura posterior de estos contenidos como material adicional a los tratados en
el Material del Estudiante (Kit).
Prcticas : Actividades de laboratorios e interactivas incluidas como prctica adicional al Material del Estudiante
(Kit).
1.1.1 Objetivos
Esta seccin brinda una visin general acerca de una base de datos Oracle cubriendo los aspectos bsicos, tericos y
fsicos de bases de datos relacionales, implementacin Oracle RDBMS y ORDBMS.
Tambin se abordar el modelado de datos, una introduccin al lenguaje de consultas SQL y beneficios del lenguaje PL/SQL.
El modelo de tres capas resuelve los problemas del modelo de dos capas. En un modelo de tres capas,
existe una capa entre los clientes y el servidor de base de datos . Esta capa del medio es un servidor
de aplicacin que contiene el grueso de la lgica de aplicacin. Los clientes en este modelo son clientes
delgados. Con esta arquitectura, la lgica de aplicacin est ubicada en una nica capa lo cual facilita
el mantenimiento de la misma.
Application Server es un servidor de aplicaciones confiable, escalable, seguro ubicado en la capa del
medio (middle-tier). Application Server brinda una infraestructura que puede crecer en base a las
necesidades de la empresa u organizacin.
Application Server posibilita a los usuarios implementar aplicaciones mediante una arquitectura de
mltiples capas (multitiered). La capa del medio (middle-tier) posee la lgica de la aplicacin enviando
respuestas a las consultas realizadas por los clientes (normalmente navegadores Web). Una tercera
capa (tier) contiene a la base de datos, de esta manera el procesamiento de transacciones en la misma
puede ser optimizado.
Mediante los servicios que brinda Application Server se puede dar soporte a las distintas etapas que
implica construir un e-business (3).
Una base de datos relacional est compuesta de muchas relaciones en la forma de tablas de dos dimensiones compuestas
por filas y columnas conteniendo tuplas (o registros) relacionadas. Los tipos de consultas que atienden un sistema de gestin
de base de datos relacional ( RDBMS ) varan desde simples consultas incluyendo una nica tabla de base a consultas
complicadas de mltiples tablas incluyendo uniones, anidamiento, diferencia o unin de conjuntos, y otras. Server es un
RDBMS que implementa todas las caractersticas relacionales ms funcionalidades enriquecidas, como ser: commits rpidos,
backup y recuperacin, conectividad escalable, bloque a nivel de filas, consistencia de lectura, particionamiento de tablas,
paralelizacin de consultas, bases de datos en cluster, exportacin e importacin de datos, entre otras. La principal desventaja
de bases de datos relacionales ocurre debido a su inhabilidad de manejar reas de aplicacin como bases de datos espaciales
(ej.: CAD), aplicaciones que manipulan imgenes, y otros tipos de aplicaciones que incluyen la interrelacin compleja de
datos.
La ambicin de representar objetos complejos ha provocado el desarrollo de sistemas orientados a objeto incluyendo
caractersticas de orientacin a objeto, tales como: tipos de dato abstractos y encapsulamiento (la estructura internad de
los datos es ocultada y las operaciones externas pueden ser invocadas sobre el objeto especificado), herencia (tendiendo
a la reutilizacin de definiciones existentes para crear nuevos objetos), etc. Una base de datos orientada a objetos emplea
un modelo de datos que soporta caractersticas de orientacin a objeto y tipos de datos abstractos. Bases de datos orientadas
a objeto utilizan el podero de los lenguajes de programacin orientados a objeto para proporcionar capacidades de
programacin de base de datos. Un sistema de gestin de base datos orientado a objetos ( OODBMS ) implementa un
modelo de objeto, estandarizado por ODMG (Object Database Management Group), que consiste de tipos de dato, constructores
de tipo, etc., similar al modelo estndar para bases de datos relacionales. La principal desventaja de ODBMS es la mala
performance en la manipulacin y acceso a datos. No como en RDBMS, la optimizacin de consultas en OODBMS es
altamente compleja. OODBMS tambin sufren problemas de escalabilidad, y no son capaces de soportar sistemas de gran
escala.
El principal objetivo de un ORDBMS es brindar los beneficios tanto del modelo relacional como del modelo de objetos,
tales como: escalabilidad y soporte de tipos de dato enriquecidos. ORDBMSs emplean un modelo de datos que incorpora
caractersticas de orientacin a objeto en RDBMSs. Toda la informacin es almacenada en tablas, pero algunas de las
entradas tabulares en la base de datos pueden poseer estructuras de datos enriquecidas o complejas (tipos de dato
abstractos). Un ORDBMS soporta una forma extendida de SQL. Las extensiones son necesarias debido a que ORDBMS
dan soporte a tipos de dato abstractos.
Server es un ORDBMS, el mismo implementa un sistema de tipos objeto como una extensin al modelo relacional. La
interfase tipo objeto brindada por Server contina dando soporte a la funcionalidad de base de datos relacional y, adems,
SQL y otras varias interfases de programacin, incluyendo PL/SQL, Java, OCI ( Oracle Call Interface), etc., han sido
enriquecidas con nuevas extensiones para dar soporte a objetos. El resultado es un modelo objeto relacional, el cual
es intuitivo y ofrece la riqueza de una interfase objeto, al mismo tiempo que preserva la concurrencia y el rendimiento de
una base de datos relacional (2)
Cuando se crea una tabla para almacenar datos en la base de datos, es necesario especificar un tipo de dato para cada
una de las columnas definidas. Server posee varios tipos de datos predefinidos para satisfacer los requerimientos de
una aplicacin. Server tambin soporta tipos de dato ANSI y DB2. Los tipos de dato predefinidos en Oracle pueden ser
clasificados de manera genrica en caracteres, numricos, long y raw, fecha y hora, objetos largos, y row ID. Los tipos de
dato predefinidos y su utilizacin son tratados ms adelante (2).
Tipos objeto Oracle son tipos de datos definidos por el usuario que hacen posible modelar entidades complejas del mundo
real, tales como clientes y rdenes de compra, como entidades unitarias ("objetos") en la base de datos. Un tipo objeto
es una clase de tipo de dato. Los mismos pueden utilizarse de la misma manera en que se trata a los tipos de dato ms
familiares, como VARCHAR2 y NUMBER. Por ejemplo, es posible definir un tipo objeto como el tipo de dato en una columna
de una tabla relacional.
La tecnologa de objetos que incluye Server es un nivel de abstraccin construido sobre tecnologa relacional Oracle.
Nuevos tipos objeto pueden ser creados desde cualquier tipo de dato predefinido o tipo objeto previamente definido. Los
metadatos de los tipos definidos por el usuario son almacenados en un esquema que se encuentra disponible para SQL,
PL/SQL, Java, y otras interfases de publicacin.
El modelo ER datos como entidades, son relaciones entre entidades y atributos. El objeto bsico que el modelo ER representa
es una entidad, la cual es una "cosa" del mundo real con existencia independiente. Una entidad puede ser un objeto con
existencia fsica (una persona determinada, un auto, una casa, un empleado), o puede ser un objeto con una existencia
conceptual (una compaa, un trabajo, un curso universitario). Cada entidad posee atributos; propiedades de inters que
describen a la entidad. Por ejemplo, una entidad empleado puede ser descrita por su apellido y nombre, edad, direccin,
salario y tarea realizada. Una entidad particular poseer un valor para cada uno de sus atributos (1). Los valores de los
atributos que describen cada entidad se tornan la mayor parte de los datos que son almacenados en una base de datos.
Una base de datos normalmente contiene grupos de entidades que son similares. Por ejemplo, una compaa que posee
cientos de empleados puede desear almacenar informacin similar para cada uno de sus empleados. Estas entidades
"empleado" comparten el mismo conjunto de atributos, pero cada entidad posee sus propios valores para cada atributo.
Un tipo entidad define una coleccin (o conjunto) de entidades que poseen los mismos atributos. Cada tipo entidad en la
base de datos es descrita por su nombre y atributos. La coleccin de todas las entidades de un tipo entidad particular en
la base de datos en un momento determinado es denominado conjunto de entidades, usualmente citado por el mismo
nombre del tipo entidad correspondiente (2). Por ejemplo, EMPLEADO se refiere tanto a un tipo de entidad como al conjunto
de todos los empleados almacenados en la base de datos.
Una relacin entre dos o ms entidades representa una interaccin entre las entidades. Existen varias
relaciones implcitas entre tipos entidad. Una relacin existe cuando un atributo de un tipo entidad hace
referencia a otro tipo entidad. Por ejemplo, el atributo MANAGER del tipo entidad DEPARTMENT hace
referencia al empleado que gerencia el departamento en cuestin. Un tipo relacin entre tipos entidad
define un conjunto de asociaciones (conjunto de relaciones) entre entidades de esos tipos (3). Como
ocurre con tipos entidad y conjuntos de entidades, un tipo relacin y su correspondiente conjunto de
relaciones son citados por el mismo nombre. Informalmente, cada relacin perteneciente al conjunto
de relaciones es una asociacin de entidades, donde la asociacin incluye una entidad de cada uno
de los tipos entidad participantes. Dichas relaciones instancias representan el hecho que las entidades
participantes estn relacionadas en alguna forma en el dominio de problema correspondiente. Por
ejemplo, la relacin WORKS_FOR entre los tipo entidad EMPLOYEE y DEPARTMENT asocia cada
empleado con el departamento en el cual el mismo trabaja.
El modelo relacional representa la base de datos como una coleccin de relaciones, donde cada relacin se asemeja a
una tabla de valores o archivo plano de registros. Cuando una relacin es pensada como una tabla de valores, cada fila
en la tabla representa una coleccin de valores de datos relacionados. En el modelo de datos relacional, cada fila en la
tabla representa un hecho que corresponde a una entidad o relacin en el mundo real. El nombre de la tabla y el nombre
de las columnas son utilizados para facilitar la interpretacin del significado de los valores en cada fila de la tabla. Por
ejemplo, la tabla EMPLOYEE es denominada de esta manera ya que cada fila representa hechos acerca de una entidad
empleado en particular. Los nombres de columnas especifican cmo interpretar los valores de datos en cada fila de acuerdo
a la columna a la cual cada valor pertenece. Todos los valores en una columna son del mismo tipo de dato.
En la terminologa formal del modelo relacional, una fila es denominada una tupla, un encabezado de columna es denominado
un atributo, y una tabla es denominada una relacin. El tipo de dato describiendo los tipos de valores que pueden aparecer
en cada columna es denominado dominio.
Tabla: La tabla es la estructura de almacenamiento bsica en un Sistema de Administracin de Base de Datos Relacional
(RDBMS).
Los datos de las tablas se almacenan en filas y columnas. Cada tabla se define con un nombre de tabla que la identifica
unvocamente y un conjunto de columnas. Una vez que se crea una tabla, se le pueden insertar filas de datos vlidos.
Las filas de las tablas pueden ser consultadas, borradas o actualizadas.
Columna: Una columna representa un tipo de datos en una tabla (por ejemplo, el nombre del cliente en la tabla Clientes).
Una columna tambin puede ser referenciada como "atributo". Cada columna tiene un nombre de columna, un tipo de dato
(tal como CHAR, DATE o NUMBER), y un ancho (que puede ser predeterminado por el tipo de dato, como en el caso de
DATE) o una escala y precisin (slo para el tipo de dato NUMBER).Todos los valores de una columna determinada tienen
el mismo tipo de datos, y stos estn extrados de un conjunto de valores legales llamado el dominio de la columna. Las
columnas de una tabla estn dispuestas en un orden especfico de izquierda a derecha. Sin embargo, el orden de stas
cuando se almacenan datos no es significativo, pero puede ser especificado cuando se los recupera.
Fila: Una fila es una combinacin de valores de columnas de una tabla (por ejemplo, la informacin acerca de un cliente
en la tabla Clientes). Una fila a menudo se denomina "tupla" o "registro". Cada tabla tiene cero o ms filas, conteniendo
cada una un nico valor en cada columna. Las filas estn desordenadas; por defecto, los datos estn dispuestos de acuerdo
a cmo se insertaron.
Campo: Un campo se encuentra en la interseccin de una fila y una columna. El campo puede contener datos. Si no hay
datos en el campo, se dice que contiene un valor nulo. Los valores de los campos no se pueden descomponer en componentes
ms pequeos.
Clave primaria: Una clave primaria es una columna o conjunto de columnas que identifican unvocamente cada fila de una
tabla (por ejemplo, un nmero de cliente). Una tabla tiene una nica clave primaria y debe contener un valor.
Clave fornea: Una clave fornea es una columna o conjunto de columnas que se refieren a una clave primaria de la misma
tabla o de otra. Se crean estas claves para reforzar las reglas de diseo de la base de datos relacional. Una tabla puede
contener ms de una clave fornea. Una combinacin clave primaria/clave fornea crea una relacin padre/hijo entre las
tablas que las contienen.
SQL es un lenguaje de base de datos integral (2); el mismo posee sentencias para la definicin, consulta y actualizacin
de datos. Adicionalmente, el mismo posee facilidades para definir vistas de base de datos, especificar restricciones de
seguridad y definir el acceso a datos, definir restricciones de integridad, y para especificar el control de transacciones.
SQL utiliza los trminos tabla, fila y columna para relacin, tupla y atributo, respectivamente.
SQL es flexible y eficiente, con caractersticas que han sido diseadas para la manipulacin de datos facilitando el
acceso y la actualizacin de bases de datos relacionales. Por ejemplo, la siguiente sentencia SQL borra de la base
de datos todos los empleados que pertenecen al departamento numero 90:
DELETE FROM employees
WHERE department_id = 90;
SQL es un lenguaje de cuarta generacin (declarativo), lo cual significa que una sentencia del lenguaje describe
lo que quiere realizarse, pero no en la manera en que debe llevarse a cabo. En la sentencia DELETE mostrada
anteriormente, por ejemplo, no es posible dilucidar de qu modo determinar la base de datos cules son los empleados
que pertenecen al departamento nmero 90 (empleados que se eliminarn de la base de datos). Probablemente, el
servidor Oracle recorrer el conjunto de todos los empleados en un cierto orden para determinar los elementos que
deben borrarse, pero en ningn momento se explicita cmo realizar dicha operacin.
Todas las operaciones realizadas sobre la informacin en una base de datos Oracle son ejecutadas utilizando sentencias
SQL. Una sentencia SQL es una cadena de caracteres SQL. Slo una sentencia SQL completa puede ser ejecutada
satisfactoriamente. Al ejecutarse un fragmento de sentencia se genera un error indicando que se requiere ms texto
(3).
Tanto los lenguajes 3GL como los 4GL tienen sus ventajas y desventajas. Los lenguajes 4GL como SQL son, por regla
general, bastante simples (comparados con los de 3GL) y tienen menos sentencias. Asimismo, aslan al usuario de los
algoritmos y estructuras de datos subyacentes. En algunos casos, sin embargo, las estructuras procedimentales disponibles
en los lenguajes 3GL resultan tiles para expresar un determinado programa. Y aqu es donde entra el PL/SQL, que
combina la potencia y flexibilidad de un lenguaje de SQL (un 4GL) con las estructuras procedimentales de un 3GL.
PL/SQL significa Procedural Language/SQL (Lenguaje Procedimental/SQL). Como su propio nombre indica, PL/SQL ampla
la funcionalidad de SQL aadiendo estructuras de las que pueden encontrarse en otros lenguajes procedimentales, como:
?
Procedimientos y funciones
Las construcciones procedimentales estn perfectamente integradas con Oracle SQL, lo que da como resultado un lenguaje
potente y estructurado, combinando la flexibilidad de SQL con la potencia y configurabilidad de un 3GL. Por ejemplo si
se quiere actualizar el salario del empleado nmero 250 y de no existirse lo insertar como un nuevo empleado (2).
Trabajando con Oracle9i Server, es posible extender la funcionalidad del lenguaje SQL a travs de funciones PL/SQL
definidas por el usuario (3). Utilizando funciones PL/SQL en sentencias SQL es posible:
Incrementar la productividad brindada al usuario extendiendo el lenguaje SQL. Mejora la expresividad del lenguaje
SQL para tareas complejas o no posibles en SQL.
Mejorar la eficiencia de consultas. Funciones utilizadas en la clusula WHERE de una consulta pueden filtrar
datos utilizando criterios que, de otra forma, deberan ser evaluados por la aplicacin.
Manipular cadenas de caracteres para representar tipos de datos especiales.
Por ejemplo: latitud, longitud, temperatura, etc.
Proveer ejecucin de consultas en paralelo.
Si la consulta es paralelizada, sentencias SQL en la funcin PL/SQL pueden tambin ser ejecutadas en paralelo (utilizando
la opcin de consulta en paralelo).
Sentencias de Lenguaje de Definicin de Datos (DDL - Data Definition Language): crean, modifican y eliminan objetos
de la base de datos (por ejemplo: CREATE, ALTER, DROP, RENAME).
Sentencias de Lenguaje de Manipulacin de Datos (DML - Data Manipulation Language): insertan, modifican, eliminan
y consultan filas de tablas de la base de datos (INSERT, UPDATE, DELETE, SELECT).
Sentencias de Lenguaje de Control de Datos (DCL - Data Control Language): permiten dar o restringir derechos de
acceso a la base de datos y a objetos especficos dentro de la base de datos (GRANT, REVOKE).
Sentencias de Control de Transacciones: manejan los cambios hechos por los comandos del lenguaje de manipulacin
de datos. Los cambios a los datos pueden ser agrupados en transacciones lgicas (COMMIT, ROLLBACK, SAVEPOINT).
Sentencias de Control de Sesin: permiten que un usuario controle las propiedades de la sesin corriente, incluyendo
la posibilidad de habilitar o deshabilitar roles, y cambiar la configuracin del lenguaje (ALTER SESSION, SET ROLE).
Sentencias de Control de Sistema: cambian las propiedades de una instancia de Oracle9i Server. Permiten cambiar
diferentes parmetros de configuracin, tal como el nmero mnimo de servidores compartidos, matar una sesin
determinada y ejecutar otras tareas (ALTER SYSTEM, ALTER SESSION, etc.).
Sentencias de SQL embebido: permite la incorporacin de sentencias DDL, DML y de control de transacciones en
un programa escrito en lenguaje procedural (OPEN, CLOSE, FETCH, EXECUTE, etc.).
1.1.17 Sntesis
Oracle surge de la teora de bases de datos relacionales, concebida por E. F. Codd en la dcada del 50, y extiende tales
conceptos en una amplia gama de direcciones, tales como: data warehousing, procesamiento de transacciones en lnea y
soporte de aplicaciones web.
El desarrollo de software para la gestin de informacin ha transitado diferentes alternativas en los ltimos aos. Primeramente,
el software que se utiliz para el almacenamiento y la recuperacin de datos se bas en sistemas de archivos como medio
de almacenamiento. Dicha solucin requiere que el programador de aplicaciones defina cmo se almacena y cmo se
recupera la informacin, utilizando un lenguaje de programacin, tal como COBOL. Luego surgieron las bases de datos en
red y las bases de datos jerrquicas, tecnologa que qued en desuso debido a su incapacidad de base para brindar eficiencia
y flexibilidad al gestionar grandes volmenes de informacin. Como cuarto paradigma de base de datos, basado en una
teora matemtica formalizada, aparecen las bases de datos relacionales; paradigma que gan rpidamente el mercado
de gestin de datos y que evolucion brindando acceso a datos rpido, flexible y seguro. Debido a su fuerte basamento
matemtico, la tecnologa relacional permiti, y contina permitiendo, el desarrollo de mecanismos de optimizacin que se
utilizan tanto en el acceso a datos como en la actualizacin de los mismos. Sin duda, el auge de las bases de datos
relacionales se debe a la adopcin de un lenguaje estndar universal, SQL, lo que brinda ventajas de integracin,
estandarizacin y eficiencia, a la vez que posibilita el acceso a datos de manera rpida y sencilla.
Oracle9i Server provee muchas caractersticas tiles y poderosas, muchas de las cuales estn incorporadas al nivel de SQL.
Adems, Oracle9i Server posee un lenguaje procedural interno a la base de datos que posibilita la extensin de SQL.
Este tema abord conceptos de bases de datos relacionales y objeto relacionales, introdujo el lenguaje de consulta estructurado
estndar SQL, seal las diferencias que este ltimo posee para con un lenguaje procedural (como PL/SQL), y profundiz
en los modelos de datos.