-
1Copyright Computer Aided Education, S.A.
Instalacin
1. INTRODUCCIN
Oracle 10g es la ltima versin del servidor de bases de datos
empresarial de Oracle.Oracle 10g es un producto de pago en
contraposicin con otros
servidores de bases de datos de cdigo abierto o licencia GPL y
es un servidor orientado al mundo empresarial con grandes
requerimientos de rendimiento, seguridad, etc. y, por lo tanto, no
adecuado para aplicaciones sencillas con un volumen de datos
reducido (donde pueden ser de utilidad otras bases de datos ms
sencillas, como Access).
Con esta nueva versin de su servidor de bases de datos, Oracle
da respuesta a la utilizacin cada vez ms frecuente de servidores
gratuitos (o mucho ms baratos) del mundo GPL, como MySQL o
Postgres; as como a la utilizacin de otros servidores de pago, como
Microsoft SQL Server.
Y para ello introduce una forma distinta de planicar la red de
servidores de bases de datos. Esta nueva idea se conoce como grid
computing, de ah la g de la versin de Oracle 10g.
El enfoque que se aplica en grid computing es utilizar un grupo
de servidores de bajo coste conectados por software Oracle. Con el
Grid Computing de Oracle las aplicaciones se ejecutarn de forma ms
rpida que con mainframe. Y si un servidor falla, el grid de Oracle
sigue funcionando, mientras que el Mainframe se para.
La evolucin hacia redes con mltiples servidores de menor
potencia (y costo) en lugar de grandes equipos o mainframe conlleva
muchas ventajas y Oracle lo sabe.
-
2Instalacin
Sin embargo, nosotros no nos centraremos en este asunto, sino
que estudiaremos Oracle 10g desde el punto de vista del diseador y
programador de bases de datos, conociendo los distintos objetos que
puede crear, su integracin con herramientas de desarrollo, etc.,
por lo que es conveniente tener conocimientos bsicos de
programacin.
Oracle 10g aparece en distintas ediciones de forma que sea ms
fcil acceder a las necesidades de las empresas, desde pequeas y
medianas hasta grandes organizaciones.
La posibilidad de elegir entre una u otra edicin permite que las
empresas compren y utilicen el producto que mejor se adapte a su
negocio e incluso a su presupuesto.
A continuacin se detalla cada una de las ediciones
disponibles:
Oracle 10g Express Edition: se trata de la edicin gratuita. Como
tal, dispone de la mayora de las caractersticas de Oracle 10g,
aunque algunas de ellas estn realmente limitadas.
Es la edicin ideal para estudiantes o todos aquellos que quieren
experimentar con Oracle y ms tarde aumentar las prestaciones de su
base de datos comprando una licencia de Oracle 10g.
Oracle 10g Standard Edition y Standard Edition One: es una base
de datos de caractersticas completas para pequeas y medianas
empresas que requieren el desempeo, la disponibilidad y la
seguridad de una base de datos empresarial a un bajo costo.
Oracle 10g Enterprise Edition: es la edicin ms completa de
Oracle 10g y es idnea para las organizaciones ms grandes y para los
requisitos ms complejos. Todas las caractersticas de Oracle 10g
estn disponibles en esta edicin, tanto referentes a OLTP como a
OLAP.
Oracle 10g Personal Edition: permite a los programadores generar
todo tipo de aplicaciones sobre Oracle. Incluye todas las funciones
de Oracle 10g Enterprise Edition, pero se autoriza su uso a un nico
usuario, por lo que es til como sistema de desarrollo y prueba, no
como servidor de produccin.
sta es la edicin que utilizaremos a lo largo del curso.
2. EDICIONES DE ORACLE 10g
Utilizaremos la revisin
Release 2 de Oracle 10g.
-
3Copyright Computer Aided Education, S.A.
Instalacin
Oracle 10g est disponible para distintos sistemas operativos:
Unix, Windows y Linux, incluyendo plataformas de 32 y 64 bits.
Todas las ediciones estn disponibles para su prueba
descargndolas gratuitamente desde el sitio web de Oracle.
Posteriormente, deber comprar la correspondiente licencia para sus
servidores de produccin.
La eleccin de una u otra edicin se fundamenta en las necesidades
empresariales. En muchas pequeas y medianas empresas es suciente
con la edicin Standard; mientras que las grandes organizaciones
requerirn de las prestaciones de la edicin Enterprise.
La instalacin de Oracle 10g es relativamente sencilla, ya que se
ha preparado un asistente para ello. Sin embargo, debido a que se
tienen que tomar ciertas decisiones, es importante estudiarla.
Una vez introducimos el CD de instalacin, aparecer la ventana
que puede ver a continuacin.
3. INSTALACIN
Es necesario tener permisos
de adminis-trador en el
equipo donde se va a instalar
Oracle 10g
-
4Instalacin
Debe pulsar el botn Install/Deinstall Products, con lo que
iniciar el asistente de instalacin.
Este asistente se divide en dos pasos que hay que realizar en
este orden: preparar la instalacin y realizarla.
Y es que previamente a instalar Oracle 10g, debemos asegurarnos
de disponer del hardware y software necesarios. El instalador har
una revisin de todo ello y, en caso necesario, instalar componentes
adicionales o le avisar de posibles problemas.
Podemos realizar una instalacin estndar del servidor de base de
datos, con lo que simplemente indicaremos la ubicacin de la
instalacin, qu edicin queremos instalar y si deseamos crear una
base de datos inicial; o elegir la opcin de la instalacin avanzada,
con lo que podremos establecer otras opciones.
Veamos los pasos de una instalacin avanzada. En el primer paso
del asistente debemos indicar la edicin que queremos instalar. El
programa instalador es el mismo para cualquiera de las ediciones,
por lo que deberemos elegir los componentes para los que disponemos
de la correspondiente licencia.
Nosotros elegiremos la edicin Personal Edition.
-
5Copyright Computer Aided Education, S.A.
Instalacin
Tras elegir la edicin que queremos instalar, el asistente nos
solicita que indiquemos el nombre y ubicacin del directorio home de
la instalacin.
Oracle puede instalarse ms de una vez en el mismo equipo siempre
que se haga en directorios home distintos. De ah que no slo
tengamos que indicar dicha ubicacin sino un nombre descriptivo.
Seguidamente podemos indicar si queremos que durante el proceso
de instalacin se cree una base de datos inicial. Podemos hacerlo
ahora o ms tarde, una vez instalado el software del servidor de
bases de datos.
Nosotros instalaremos nicamente el software de base de datos
para crear la base de datos despus y que vea cmo hacerlo.
Finalmente, se muestra un resumen de la instalacin que se
efectuar a continuacin por si necesitramos cambiar algn detalle.
Deberemos pulsar en el botn Instalar para que se inicie la
instalacin completa.
Con estos sencillos pasos nalizaremos la instalacin del software
del servidor de bases de datos. Despus, podremos crear las
correspondientes bases de datos.
-
6Instalacin
Una vez instalado el software del servidor de bases de datos
Oracle, el siguiente paso previo a crear cualquier base de datos
(si no se ha creado una base de datos durante la instalacin
anterior) es congurar adecuadamente la red.
Para ello, se utiliza el Asistente de Conguracin de Red. Esta
herramienta la encontrar en la carpeta Herramientas de Conguracin y
de Migracin del grupo de programas de Oracle del men de Inicio.
Tendr un grupo de este tipo por cada instalacin o directorio
home de Oracle.
Aunque ahora no entraremos en detalles, es necesario congurar un
listener para que las aplicaciones cliente puedan solicitar
servicios del servidor de bases de datos. Esto lo podemos hacer
fcilmente con este asistente.
El detalle ms importante a la hora de crear un listener es el
protocolo o protocolos de red que se utilizarn.
Como el propsito del listener es encargarse de las conexiones
remotas, es decir, de aplicaciones situadas en equipos distintos al
servidor, lo ms habitual es congurar nicamente el protocolo
TCP/IP.
Esto lo podemos ver en la gura de la pgina siguiente.
4. ASISTENTE DE CONFIGURACIN DE RED
-
7Copyright Computer Aided Education, S.A.
Instalacin
Si elige el protocolo TCP/IP, podr indicar en qu puerto atender
el listener las solicitudes. El puerto predeterminado es el
1521.
Es muy importante recordar que se debe crear al menos un
listener antes de crear cualquier base de datos. Si se eligi crear
una base de datos inicial durante la instalacin del servidor, esto
se hace automticamente.
El servidor de Oracle de-ber poder atender las
solicitudes en dicho puerto, o lo que es lo
mismo, deber tenerlo abierto si se utiliza un
firewall para proteger la
red.
-
8Instalacin
Durante la instalacin del software de servidor de bases de datos
Oracle podemos hacer que se cree una base de datos inicial o
decidir crearla ms tarde.
Nosotros hemos elegido esta ltima opcin para que pueda ver ahora
cmo creara una base de datos en cualquier momento utilizando la
herramienta Asistente de conguracin de bases de datos.
Este asistente est disponible en el grupo de programas del
directorio home o raz de Oracle que acaba de instalar. En nuestro
caso, el grupo se llamar Oracle - OraDb10g_home1. Busque el
asistente en la carpeta Herramientas de Conguracin y Migracin.
Si durante una instalacin estndar de Oracle 10g decidimos crear
una base de datos, el asistente que acabamos de lanzar es ejecutado
automticamente sin necesidad de ninguna interaccin con
nosotros.
Esto no permite que podamos anar un poco las caractersticas de
nuestra base de datos, crendose una base de datos de carcter
general.
5. CREAR BASES DE DATOS
-
9Copyright Computer Aided Education, S.A.
Instalacin
Si deseamos personalizar la base de datos que vamos a crear,
podemos elegir la instalacin avanzada o ejecutar el asistente de
conguracin de la base de datos que puede ver en la gura
anterior.
Una vez seleccionamos crear una nueva base de datos deberemos
indicar el tipo de base de datos. Principalmente disponemos de dos
opciones especiales o crear una base de datos de carcter
general.
Las opciones especiales son:
Crear una base de datos preparada como Almacn de datos: para
tareas de anlisis de datos OLAP.
Crear una base de datos preparada para respaldar aplicaciones de
Procesamiento de transacciones OLTP, como aplicaciones de comercio
electrnico, procesamiento de pedidos, banca electrnica, etc.
Al elegir uno u otro tipo de base de datos, sta se congurar con
las propiedades ms adecuadas para esos propsitos, aunque siempre
podremos cambiar dicha conguracin ms tarde. Nosotros elegiremos
crear una base de datos de carcter general.
En el siguiente paso debemos indicar el nombre de la base de
datos. Este nombre consta de dos partes: su nombre en s y su
dominio.
-
10
Instalacin
El dominio suele corresponderse con el dominio de la red de
ordenadores de la empresa aunque esto no es obligatorio. La
combinacin de ambos detalles forman el Nombre de la Base de Datos
Global, que tiene que ser nico en cada instancia del servidor.
Por ejemplo, crearemos una base de datos para una tienda de
comercio electrnico cticia de Internet. La tienda se llamar
Tiendadetalles.com, por lo que el nombre global ser:
bd.tiendadetalles.com
Fjese que el nombre de la base de datos es bd y el nombre del
dominio tiendadetalles.com. En la parte inferior vemos el SID o
identicador de la instancia del servidor.
Seguidamente accedemos a la pgina de opciones de gestin de la
base de datos que estamos creando, donde indicaremos qu
herramientas queremos utilizar para ello.
Una de las herramientas incorporadas en cualquier instalacin de
Oracle 10g es Enterprise Manager Database Control (DC).
Esta herramienta slo permite gestionar una base de datos en
particular, mientras que Enterprise Manager Grid Control (GC)
permite gestionar ms de una a la vez.
Nosotros utilizaremos Database Control, que es la opcin activada
por defecto.
-
11Copyright Computer Aided Education, S.A.
Instalacin
En este paso tambin podremos congurar ahora detalles respecto a
las noticaciones de correo electrnico y a la forma de realizar
copias de seguridad de la base de datos, pero lo veremos ms
tarde.
En el paso nmero 5 del asistente debe crear la contrasea o
contraseas para las cuentas de usuario de la base de datos. Por
defecto se crean cuatro usuarios de carcter administrativo: SYS,
SYSTEM, DBSNMP y SYSMAN.
Aqu puede establecer la misma contrasea para todos ellos o una
distinta para cada uno.
En el paso nmero 6 podemos congurar la forma en que se
administrar el espacio en disco donde se almacenar la base de
datos.
Tenemos la opcin ms comn, que es almacenarla en un determinado
sistema de archivos (por ejemplo, en cualquier particin formateada
del disco duro) o dos opciones ms avanzadas, que delegan esta tarea
en Oracle: Gestin de Almacenamiento Automatizada y Dispositivos
Raw.
En el paso nmero 7 elegiremos la ubicacin donde se guardarn los
archivos de la base de datos. Podemos establecer una ubicacin
determinada o elegir la predeterminada de la plantilla que hemos
utilizado (base de datos de carcter general, en este caso).
En un entorno de produccin es conveniente utilizar contra-seas
distintas
para cada cuenta admi-
nistrativa.
-
12
Instalacin
En el paso nmero 8 se establece el rea donde se crearn las
copias de seguridad, conocida como rea de Recuperacin de Flash. Ya
lo veremos.
En el paso 9 el asistente tambin permite instalar ejemplos de
bases de datos reales: de recursos humanos, procesamiento de rdenes
o pedidos, historial de ventas, etc.
Utilizar el paso 10 del asistente para denir varios ajustes o
parmetros de la conguracin de la base de datos referentes a la
memoria, al tamao de la base de datos, al juego de caracteres
utilizado y al modo de conexin.
Por ejemplo, en la cha o pestaa Juego de Caracteres podemos
elegir el juego de caracteres de nuestro sistema operativo o
Unicode, que permite almacenar caracteres de cualquier idioma.
Si la aplicacin o aplicaciones que utilizarn la base de datos se
pueden ejecutar en distintos idiomas, sera adecuado elegir
almacenar la informacin de la base de datos en Unicode.
Tambin podremos especicar el idioma por defecto de la base de
datos y cmo se almacenarn las fechas. El formato de Espaa es
da-mes-ao (dd-mm-aaaa).
En el paso nmero 11 podremos revisar y cambiar la ubicacin de
los archivos que la componen: archivos de control, archivos de
datos y archivos de recuperacin (logs).
-
13Copyright Computer Aided Education, S.A.
Instalacin
Como todava no conocemos estos conceptos, no cambiaremos ningn
detalle aqu.
Finalmente, el asistente nos pregunta si queremos crear una base
de datos con todos los ajustes establecidos o guardarlos como una
plantilla o modelo para crear bases de datos a partir de ella.
Pulsando el botn Terminar, crear la base de datos. Veremos que
muchos de los detalles que hemos tenido que elegir durante el
asistente se pueden ajustar ms tarde, cuando tengamos ms
conocimientos para ello.
-
1Copyright Computer Aided Education, S.A.
Arquitectura de una base de datos Oracle
1. INSTANCIAS
Una base de datos Oracle est compuesta por una serie de archivos
que se almacenan en un sistema de archivos u otro medio de
almacenamiento, segn como se haya congurado la base de datos.
Pero para poder acceder a la informacin almacenada en estos
archivos, es necesario que en el servidor de bases de datos se
ejecute unos determinados procesos y que se reserve memoria del
servidor para ello.
El conjunto de esos procesos y de la memoria reservada recibe el
nombre de instancia y es la parte lgica de una base de datos que
permite acceder a los datos almacenados en sta.
Como tal, la instancia de la base de datos tiene que estar
iniciada para poder acceder a los datos. Si no es as, los datos
seguirn estando disponibles en los correspondientes archivos pero
no habr forma de acceder a ellos hasta que la instancia vuelva a
levantarse.
En Windows todo esto se corresponde con servicios, que son
aplicaciones que actan de forma similar al sistema operativo, ya
que se ejecutan normalmente en un segundo plano, sin que el usuario
se d cuenta de ello.
Aqu podemos ver los servicios de Windows que se generan al crear
una base de datos y, por lo tanto, que representan una determinada
instancia de la base de datos:
OracleServiceSID: donde SID es el identicador de la base de
datos (en este caso BD). Representa la instancia propiamente
dicha.
-
2Arquitectura de una base de datos Oracle
OracleORACLE_HOMETNSListener: representa un listener que atiende
las solicitudes del acceso a la base de datos.
OracleDBConsoleSID: el cual permite conectarse a la principal
herramienta de administracin de Oracle, Enterprise Manager.
Como puede ver, estos tres servicios estn iniciados actualmente
y tienen su inicio como automtico, lo que quiere decir, que se
inician al hacerlo el sistema operativo.
Por lo tanto, la instancia de nuestra base de datos
bd.tiendadetalles.com est disponible y el listener que atender las
peticiones tambin.
Slo nos falta utilizar una aplicacin cliente para acceder a la
base de datos y que solicitar estos servicios al listener.
Por otra parte, durante la instalacin de Oracle se crea el grupo
de Windows ora_dba, cuyos miembros reciben los privilegios
necesarios para realizar tareas administrativas en el servidor
(role SYSDBA, como despus veremos).
Si necesita que un determinado usuario de Windows pueda realizar
estas tareas, adalo al grupo ora_dba.
-
3Copyright Computer Aided Education, S.A.
Arquitectura de una base de datos Oracle
Una de esas tareas administrativas es congurar adecuadamente la
forma en que se comunica el servidor (o una instancia de base de
datos) con las aplicaciones cliente.
Aunque vimos que esto era sencillo conseguirlo con el Asistente
de Conguracin de Red, debemos conocer la existencia de otras
herramientas que nos permitirn modicar posteriormente dicha
conguracin. Una de ellas, aunque no la nica, es Net Manager.
Net Manager est disponible entre las herramientas de conguracin
del grupo de programas de Oracle del men Inicio.
El nombre Net Manager no es casual, ya que permite congurar la
tecnologa conocida como Oracle Net.
Oracle Net es un componente de software que se instala tanto en
el servidor como en los equipos cliente y que es el responsable de
establecer y mantener la comunicacin (conexiones) entre ellos. Para
ello, se basa principalmente en dos aspectos o conceptos:
El listener o proceso del servidor que espera las solicitudes de
los clientes.
Un mtodo para describir el servicio al que los clientes desean
conectarse.
2. ARQUITECTURA DE RED
-
4Arquitectura de una base de datos Oracle
Net Manager permite establecer ambos aspectos. En la carpeta
Perl podemos indicar qu mtodos queremos poner a disposicin de las
aplicaciones cliente para que puedan describir el servicio de base
de datos Oracle al que desean acceder.
Tenemos varios mtodos, aunque el ms utilizado es TNSNAMES, que
consiste en la existencia de un archivo especial (tsnames.ora)
donde se describe cmo realizar la conexin con el servidor.
Normalmente no es necesario modicar los mtodos seleccionados.
En la carpeta Nomenclatura de Servicios describimos las
conexiones con las bases de datos disponibles en el servidor. Es
una forma sencilla de indicar todo lo que tiene que conocer la
aplicacin cliente para conectarse con dicha base de datos.
Por ejemplo, vemos que aqu aparece un servicio con el nombre bd.
Pues con el nombre de servicio bd, lo que realmente estamos
describiendo es la forma de acceder a la base de datos
bd.tiendadetalles.com del equipo SERVIDORBD a travs del puerto
TCP/IP 1521.
Qu quiere decir esto? Pues que las aplicaciones slo necesitan
utilizar la descripcin del servicio bd para conectarse a esta base
de datos.
-
5Copyright Computer Aided Education, S.A.
Arquitectura de una base de datos Oracle
Si ms tarde cambiara la forma de conectarse con la base de
datos, simplemente tendramos que cambiar la descripcin del
servicio, pero las aplicaciones seguiran funcionando
perfectamente.
Si las carpetas anteriores describen la forma o mtodos en que
las aplicaciones cliente intentarn conectarse con el servidor, la
carpeta Listener muestra justamente lo contrario.
Es decir, qu recursos (o listeners) estn congurados en el
servidor para ello. La conguracin del listener se efecto al
ejecutar el Asistente de Conguracin de Red, donde indicamos que se
utilizara el protocolo TCP/IP a travs del puerto 1521.
Tambin puede aparecer que se utiliza el protocolo IPC para
conexiones en que el servidor y la aplicacin cliente estn en el
mismo equipo.
stos son los protocolos de red que se pueden congurar en un
listener:
IPC: para conexiones locales (servidor y cliente en el mismo
equipo).
Canalizaciones con nombre (Named pipes), TCP/IP y TCP/IP on SSL
(comunicacin segura) para las conexiones remotas.
-
6Arquitectura de una base de datos Oracle
La conguracin del listener queda reejada en otro archivo
especial (listener.ora).
Vemos, por lo tanto, que esta herramienta nos permite descubrir
y congurar apropiadamente tanto la forma en que las aplicaciones
cliente intentarn establecer conexin con el servidor (pudiendo
congurar una nomenclatura de servicio) como la forma en que el
servidor aceptar dichas conexiones (a travs de un listener).
La buena noticia es que la conguracin de todo esto suele
realizarse automticamente con el Asistente de Conguracin de Red y
al crear las bases de datos, por lo que slo tendremos que
preocuparnos de ello cuando necesitemos congurar los equipos
cliente.
Pero sin lugar a dudas, la herramienta que ms utilizaremos tanto
como administrador como para lo que ms nos preocupa ahora, que son
las labores de diseador/programador de bases de datos, es
Enterprise Manager.
Se trata de una aplicacin web a la que podr acceder desde el
grupo de programas de Oracle. Busque un elemento como Database
Control - SID, donde en nuestro caso SID sera bd.
3. ENTERPRISE MANAGER
-
7Copyright Computer Aided Education, S.A.
Arquitectura de una base de datos Oracle
Enterprise Manager est disponible en dos versiones:
Database Control: versin en la que slo se puede administrar una
base de datos.
Grid Control: versin capaz de administrar muchas bases de datos
(grid computing).
Nosotros utilizaremos la ms sencilla, esto es, Enterprise
Manager Database Control, para administrar y crear nuestra base de
datos.
Debemos identicarnos en la pgina de inicio, utilizando una de
las cuentas de usuario creadas durante la creacin de la base de
datos bd.tiendadetalles.com. Por ejemplo, el usuario SYS, que es
administrador de la base de datos.
Una vez introducidos el nombre de usuario, la correspondiente
contrasea y cmo queremos conectarnos, pulsaremos en el botn
Conectar y accederemos al entorno de Database Control. Obsrvelo en
la gura de la pgina siguiente.
EM Database Control sirve tanto para administrar la instancia y
base de datos como de cara al diseador o programador de la misma,
permitiendo crear tablas, ndices, procedimientos almacenados, etc.
La ventaja que tiene es que se puede utilizar desde cualquier
equipo donde se disponga de un navegador web, ya que es lo nico que
se necesita.
-
8Arquitectura de una base de datos Oracle
Ya sabemos que la instancia es la parte lgica de una base de
datos, ya que acta de intermediario entre las solicitudes
realizadas al listener y los datos propiamente almacenados en
ella.
Ahora debemos conocer de qu archivos fsicos est formada una base
de datos Oracle. Y para ello, podemos utilizar EM Database Control
en su cha o pestaa Administracin.
En esta cha encontramos una seccin denominada Administracin de
la Base de Datos. Aqu podremos encontrar todos los detalles de la
base de datos.
Una base de datos Oracle consta de:
Al menos un archivo de control: donde se almacena informacin
importante de la instancia, como su nombre, la fecha en la que fue
creada y el estado de los archivos de copia de seguridad y
recuperacin.
Es necesario disponer de un archivo de control operativo, por lo
que normalmente se dispone de ms de una copia.
4. ARCHIVOS DE UNA BASE DE DATOS
-
9Copyright Computer Aided Education, S.A.
Arquitectura de una base de datos Oracle
Aqu podemos ver que nuestra base de datos dispone de tres
archivos de control. Podemos ver sus nombres y la ubicacin de cada
uno de ellos.
Archivos de recuperacin o Redo Logs: mantienen el seguimiento de
las transacciones realizadas en la base de datos, de forma que
pueda ser recuperada en caso de fallo o estado inconsistente de los
datos.
Ya que son cruciales para el buen funcionamiento de una base de
datos, normalmente se mantiene ms de un grupo de archivos de
recuperacin.
Y, nalmente, archivos de datos: donde realmente se almacenarn
los datos a los que tienen acceso las distintas aplicaciones que lo
solicitan.
En la gura siguiente podemos ver los archivos de datos de que
consta la base de datos. Sin embargo, los archivos de datos no son
una unidad de administracin, es decir, que no podemos realizar
tareas de copia de seguridad o recuperacin de los archivos de datos
sino de otro concepto superior, que son los tablespace.
Cada archivo de datos pertenecer a un tablespace, pero en un
tablespace podremos encontrar ms de un archivo de datos.
-
10
Arquitectura de una base de datos Oracle
Oracle permite administrar los tablespace, estableciendo
caractersticas como el tamao de bloque o unidad mnima que se puede
leer/escribir de una base de datos; se pueden realizar tareas de
copia de seguridad y restauracin de los tablespace; se puede poner
como slo lectura el contenido de un tablespace o incluso ofine,
etc.
Utilizando el concepto de tablespace se facilita la labor del
administrador, ya que ste no tiene que preocuparse de cmo se crean
los archivos donde realmente se almacena la informacin.
Como diseador o programador de bases de datos puede que se est
preguntando para qu necesita conocer todo esto.
No se preocupe, pronto entraremos a estudiar los objetos lgicos
de una base de datos, como las tablas, ndices, vistas,
procedimientos almacenados, etc.
Sin embargo, es necesario conocer algunos aspectos de la
arquitectura de una base de datos Oracle ya que, inevitablemente,
nos los encontraremos al crear estos ltimos objetos.
-
1Copyright Computer Aided Education, S.A.
Tablas
1. INTRODUCCIN
Las tablas son el objeto principal de una base de datos
relacional como Oracle, aunque no el nico.En las tablas es donde se
guarda la distinta informacin,
almacenndola en forma de registros o las que se componen de
columnas o campos.
As, si disponemos de una tabla para almacenar la informacin de
los clientes de nuestra empresa, tendremos que en ella cada la o
registro representa un determinado cliente, mientras que cada
columna o campo de dicha la es un determinado detalle de dicho
cliente: su nombre, sus apellidos, direccin, telfono, etc.
El conjunto de tablas es algo que tenemos que crear con cuidado
y detenimiento para que la base de datos sea eciente.
Para ello, existen tcnicas de anlisis y diseo que se deben
aplicar. En todo proyecto medianamente serio esto es necesario y
slo en aquellos ejemplos muy sencillos no har falta (pero entonces,
tampoco tiene sentido utilizar una herramienta tan potente como
Oracle).
Por lo tanto, supondremos que disponemos de un buen diseo de
tablas (y ms tarde veremos que tambin de relaciones) y que deseamos
crearlo en Oracle.
Ese diseo se corresponder, en nuestro caso, con la base de datos
necesaria para respaldar la aplicacin web de la tienda virtual de
Internet TiendaDetalles.com, as que debe esperar tablas para
almacenar los detalles de los clientes, de los productos que se
venden, de los pedidos, etc.
La herramienta adecuada para crear tablas y otros objetos es
Enterprise Manager Database Control, ya que facilita esta labor de
una forma totalmente visual.
-
2Tablas
Puede acceder a esta herramienta desde el men Inicio de Windows,
ya que aparece en el grupo de programas de Oracle. Tambin puede
hacerlo escribiendo directamente en su navegador la URL:
http://NombreEquipo:1158/em/
donde aqu se indica el puerto 1158, que es el predeterminado,
pero puede ser cualquier otro que se asign al crear la base de
datos.
Para acceder a esta herramienta como administrador de la base de
datos, puede utilizar el usuario SYS (con su correspondiente
contrasea) y el rol SYSDBA en la lista Conectar como.
Antes de crear cualquier tabla u otro tipo de objeto, es
importante conocer que se almacenan en un determinado esquema o
espacio de nombres.
Los esquemas se corresponden con los usuarios de una base de
datos, por lo que para poder guardar los objetos en un determinado
esquema, deberemos haber creado previamente dicho usuario.
Al crear la base de datos tambin se ha creado una serie de
esquemas que podramos utilizar, pero que no es conveniente hacerlo,
ya que se crearon con nes administrativos.
As, las tablas, vistas y dems que encontraremos en un esquema
como SYS son objetos del sistema y no tienen el propsito de guardar
objetos de usuario.
-
3Copyright Computer Aided Education, S.A.
Tablas
Por lo tanto, crearemos un usuario para utilizar su esquema y
almacenar en l los distintos objetos.
Para ello, sitese en la cha o pestaa Administracin y haga clic
en el enlace a Usuarios en el apartado Usuarios y Privilegios de la
seccin Esquema. Seguidamente, pulse en el botn .
Cada cuenta de usuario viene protegida por una contrasea. Es
decir, que si no se conoce sta, no se podr utilizar el usuario para
acceder a la base de datos. De ah que sea muy importante utilizar
contraseas lo sucientemente complejas.
Adems, este usuario deber tener una determinada cuota en su
tablespace para crear objetos. Como hemos elegido el tablespace
predeterminado, ste ser USERS. Aplique dicha cuota de disco en la
cha Cuotas.
-
4Tablas
Una vez creado el usuario (y, por lo tanto, el esquema),
podremos empezar a pensar en las tablas que necesitamos para
nuestra aplicacin.
En la seccin Esquema encontramos enlaces para crear y editar los
objetos ms importantes de una base de datos, como las tablas.
Esta pgina representa la estructura habitual que encontraremos
al trabajar en Database Control. Normalmente dispondremos de un
campo de bsqueda y, debajo de l, la lista de objetos con los que
estamos trabajando.
En dicha lista podremos encontrar botones para crear, editar y
eliminar dichos objetos.
Por ejemplo, para crear una tabla, pulsaremos en el botn Crear
de la lista de tablas (que inicialmente aparece vaca).
En ocasiones nos encontraremos que en la misma pgina aparecen
dos botones iguales: uno en la parte superior de una lista y otro
en la parte inferior. Ambos botones realizan la misma funcin por lo
que podemos utilizar cualquiera de ellos. Esto est pensado para
facilitar el trabajo con listas largas de objetos.
2. CREAR TABLAS
-
5Copyright Computer Aided Education, S.A.
Tablas
Lo primero que tenemos que indicar al crear una tabla es si ser
de tipo estndar u organizada por ndices. Nosotros elegiremos
estndar.
Seguidamente, accedemos a una pgina que se divide en dos partes:
en la parte superior indicaremos caractersticas generales de la
tabla, como su nombre, esquema o tablespace.
Y en la parte inferior la lista de columnas o campos de la
tabla, con todas sus caractersticas.
Adems del nombre de cada campo, tambin debemos indicar el tipo
de datos de los campos o columnas de la tabla.
sta es sin duda la propiedad ms importante de un campo ya que
determina o limita la informacin que puede almacenar.
Oracle proporciona tipos de datos para prcticamente cualquier
tipo de informacin que deseemos guardar. As, si se trata de texto,
podremos utilizar tipos de datos de texto; si se trata de valores
numricos, utilizaremos un tipo de datos adecuado para ello; si son
fechas, lo mismo...
Por ejemplo, para los campos de tipo NUMBER podremos especicar
la precisin (columna tamao) y escala. La precisin representa el
nmero total de dgitos que podr representarse (incluyendo la parte
decimal), mientras que la escala es el nmero mximo de
decimales.
Finalmente, debemos indicar si se permiten o no los valore nulos
(NULL).
Un valor nulo o NULL es un valor especial ya que representa un
valor desconocido o indeterminado. Por lo tanto, es diferente al
valor 0 o a la cadena de texto vaca, ya que estos dos ltimos son
valores vlidos.
En algunos campos de una tabla tendr sentido permitir valores
nulos. Por ejemplo, si no queremos exigir que nuestros clientes
proporcionen su fecha de nacimiento, permitiremos los valores nulos
en ese campo para que simplemente no necesiten indicarlo.
Sin embargo, en otros casos esto no es posible. El identicador
del cliente es tan importante (distingue un cliente de otro) que no
puede ser NULL, por lo que no tiene sentido permitirlo.
Oracle trans-formar los
nombres introducidos
a maysculas, siempre que
no lo hayamos introducido entre comi-llas dobles,
en cuyo caso respetar la
combinacin de maysculas
y minsculas utilizada y
exactamente igual tendrn que ser refe-
renciados pos-teriormente.
-
6Tablas
Aunque Oracle acepta acentos y caracteres latinos (como la ), no
es conveniente utilizarlos en general en los nombres de bases de
datos, tablas o campos. Tampoco es conveniente utilizar espacios en
blanco, ya que diculta posteriormente las consultas.
Adems, pasar a maysculas tanto el nombre de las tablas como de
las distintas columnas.
Finalmente, debemos aadir un detalle ms a la tabla, que es su
clave principal o primaria.
La clave principal de una tabla es aquel campo o conjunto de
campos cuyos valores identican unvocamente cada registro. Es decir,
que son distintos para cada uno de ellos.
En ocasiones podemos encontrar un detalle que tiene estas
caractersticas (podramos haber pensado utilizar el nmero del carn
de identidad de nuestros clientes, por ejemplo) y en otros lo
creamos nosotros mismos.
Esto es lo que hemos hecho en esta tabla de Clientes con el
campo IdCliente, as que vamos a indicar que es su clave principal o
primaria.
Para establecer la clave principal de una tabla, acceda a la cha
Restricciones de la denicin de la tabla, seleccione el tipo de
restriccin PRIMARY y pulse en Agregar.
Si desea incluir caracteres que
no aparecen en el alfabeto ingls u otros, como espacios
en blanco, delimite el
identificador con comillas
dobles (").
-
7Copyright Computer Aided Education, S.A.
Tablas
Acceder a una nueva pgina donde debe seleccionar la columna que
formar la clave principal y pasarla desde la lista de Columnas
Disponibles a la de Columnas Seleccionadas.
La clave principal puede constar de ms de un campo, en cuyo caso
situaramos todos esos campos en la lista Columnas
Seleccionadas.
Adems, al establecer un campo como clave principal, ya no se
permiten valores nulos en l.
RECUERDE: Durante la creacin de una tabla se aaden campos y se
eligen sus tipos de datos. Finalmente, no debemos olvidar
establecer su clave principal.
Para continuar, he creado algunas tablas ms ya que ahora sabe
cmo hacerlo: Tabla CarritoCompra: en esta tabla almacenaremos
los
detalles de los productos que el cliente ha decidido aadir a su
compra (junto a las cantidades para cada uno de ellos).
Recuerde que se trata de una aplicacin de comercio electrnico,
donde el usuario aade productos en una especie de carrito o cesta
de la compra para nalmente decidirse por comprarlos.
Tabla Categorias: incluye la descripcin de cada categora de
productos que tenemos en nuestra tienda virtual. Por ejemplo,
artculos de decoracin, utensilios de cocina, etc.
Tabla Ordenes: representa un pedido en rme efectuado por un
cliente.
3. TIPOS DE DATOS NUMRICOS
-
8Tablas
Tabla Productos: permite almacenar los detalles descriptivos
sobre los productos que tenemos en la tienda virtual.
En Oracle 10g disponemos de dos tipos principales de datos: los
tipos del sistema y los tipos denidos por el usuario utilizando
herramientas de programacin, como PL/SQL o Java.
En cuanto a los tipos del sistema, podremos encontrar tipos
numricos, de texto, fecha y hora, para datos grandes y
otros.Empecemos con los tipos numricos.
Oracle dispone de dos tipos de datos numricos: NUMBER para
valores que se almacenan de forma exacta y con una determinada
precisin; y el par BINARY_DOUBLE / BINARY_FLOAT para almacenar
valores de coma otante.
Esto quiere decir que normalmente utilizaremos el tipo NUMBER
para representar la mayora de valores numricos, tanto enteros como
con decimales.
Al denir una columna o variable como NUMBER, podemos especicar
dos caractersticas del tipo de datos: su precisin y escala.
Por ejemplo, en la tabla Productos vemos que el campo IDPRODUCTO
es de tipo NUMBER(6) o NUMBER(6, 0), donde el primer nmero
representa la precisin o nmero mximo de dgitos del valor (contando
tanto a la izquierda como a la derecha del separador decimal), y el
segundo la escala o el nmero mximo de decimales del valor.
Como en este caso queremos representar un valor entero, hemos
indicado 0 para la escala. Oracle tambin acepta otros sinnimos de
tipos enteros, como INT o INTEGER, pero siempre se almacenan como
NUMBER.
-
9Copyright Computer Aided Education, S.A.
Tablas
Para el caso del campo PESO permitiremos que ste tenga como
mximo 8 dgitos de los cuales 3 sern para la parte decimal del
valor.
Finalmente, en el caso del campo PRECIO vemos cmo podemos
almacenar valores monetarios. Como se puede necesitar gran precisin
y los valores pueden ser muy grandes, se utiliza una precisin de 19
dgitos, de los cuales 4 sern para la parte decimal.
A continuacin se muestran algunos ejemplos:
Valor Tipo de datos Se almacena como123.89 NUMBER 123.89123.89
NUMBER(3) 124123.89 NUMBER(6, 2) 123.89123.89 NUMBER(6, 1)
123.9123.89 NUMBER(4, 2) Supera la precisin123.89 NUMBER(6, -2)
100
Fjese que si la escala es negativa, realmente representa el
nmero de dgitos signicativos a la izquierda del separador
decimal.
Para valores de coma otante, utilizaremos BINARY_DOUBLE y
BINARY_FLOAT para ello.
Tambin se admite el sinnimo FLOAT para representarlos.
El uso ms frecuente de este tipo de datos lo encontramos cuando
trabajamos con valores cientcos o tcnicos.
La diferencia entre BINARY_DOUBLE y BINARY_FLOAT radica en el
rango de valores que se pueden representar y, por lo tanto, tambin
en el espacio que ocupan.
BINARY_DOUBLE utiliza 9 bytes de almacenamiento (de los cuales 1
es para la longitud) y BINARY_FLOAT 5 bytes de almacenamiento (de
los cuales 1 es para la longitud).
Para almacenar cadenas de caracteres o texto en nuestra base de
datos, disponemos de hasta cuatro tipos de datos: CHAR y VARCHAR2;
y las correspondientes versiones para caracteres Unicode: NCHAR y
NVARCHAR2.
4. TIPOS DE DATOS DE TEXTO
-
10
Tablas
Los tipos de datos que empiezan por una n almacenan las cadenas
de caracteres con el formato o codicacin Unicode, lo que permite
representar prcticamente cualquier carcter de cualquier idioma.
Esto se consigue almacenando cada carcter como 2 bytes en lugar
de un byte, que es la forma de almacenamiento de los tres tipos no
Unicode.
En resumen: se pueden representar ms caracteres en Unicode
(adems de que se sabe con seguridad que el carcter se representar
siempre de la misma forma, independientemente de la conguracin del
servidor) pero tambin el nmero mximo de caracteres que puede
almacenar un campo Unicode es justamente la mitad que uno no
Unicode.
Aclarado esto, tenemos el tipo CHAR para representar texto de
longitud ja y el tipo VARCHAR2 para representar texto de longitud
variable.
En la tabla Productos puede ver dos campos de texto de longitud
variable. En la columna Tamao se indica el nmero mximo de
caracteres admitido.
Tambin puede ver un campo de tipo CLOB. Este tipo se utiliza
para almacenar grandes fragmentos de texto. VARCHAR2 admite un
mximo de 4000 caracteres, por lo que si necesita ms, deber utilizar
CLOB.
Por ejemplo, hemos utilizado CLOB como el tipo de datos del
campo DESCRIPCION de un producto.
Para aplicacio-nes que pue-
den ejecutarse en distintos
pases o dis-tintos idiomas, utilice los tipos de datos Uni-
code.
-
11Copyright Computer Aided Education, S.A.
Tablas
Mientras que en la tabla Clientes (tal como vemos en la gura de
la pgina anterior) tambin podemos encontrar el campo CODPOSTAL como
un campo de tamao jo, con 5 caracteres como mximo. Por lo tanto,
independientemente de lo que introduzcamos, siempre se guardarn 5
bytes o caracteres, rellenndose con espacios en blanco a su
derecha, si es necesario.
Oracle permite almacenar datos que representan fechas y horas.
Estos valores se conocen como datetime.La ventaja de esto es que
posteriormente se puede aplicar aritmtica
o comparacin de fechas. Por ejemplo, se puede aadir un da, un
mes, minutos, segundos, etc. a una fecha u hora.
Si en lugar de ello se almacenan como cadenas de caracteres,
entonces esto puede ser ms dicultoso de conseguir.
Para representar fechas y horas, se utilizan los tipos de datos
DATE y TIMESTAMP.
En la tabla Clientes tenemos un campo de tipo DATE para
almacenar la fecha y hora de nacimiento. Si no se indica la hora,
se entiende que es la 00:00:00 del da en cuestin.
Usualmente se introducen o se hace referencia a fechas/horas a
travs de cadenas de texto. Por ejemplo, podramos utilizar la cadena
13/08/1971 para representar el 13 de agosto de 1971.
Sin embargo, veremos que esto puede representar problemas ya que
depender de la conguracin local del servidor el que se interprete
una cadena de una forma u otra.
Como regla general es mejor producir fechas con las funciones
que para ello nos proporcione nuestro lenguaje de programacin que
introducirlas directamente como cadenas de texto.
Por su parte, el tipo TIMESTAMP se utiliza para marcar momentos
precisos en el tiempo, ya que permite guardar hasta fracciones de
segundo.
Se puede utilizar el
tipo CHAR(1) para repre-
sentar valores booleanos;
esto es, que son o verdade-
ro ('1') o falso ('0'). 5. TIPOS DE DATOS DE FECHA Y HORA
-
12
Tablas
stos son los principales tipos de datos que utilizar en las
bases de datos Oracle, aunque es necesario comentar tambin la
posibilidad de introducir datos XML.
Oracle incorpora un tipo de datos para almacenar informacin en
formato XML. Esto se podra hacer tambin mediante tipos de texto,
pero con un tipo especco para ello conseguimos mayor
funcionalidad.
En Oracle 10g podremos hacer que el servidor interprete y valide
los documentos XML de forma que se encargue de comprobar si estn
bien formados e incluso si son vlidos respecto a un esquema XSD
donde se especican los tipos de datos del documento XML y sus
restricciones. Todo esto, como algo propio de la base de datos.
Otros tipos de datos disponibles en Oracle 10g:
TIMESTAMP WITH TIMEZONE: es una variante del tipo de datos
TIMESTAMP en el que se incluye la zona horaria del servidor.
TIMESTAMP WITH LOCAL TIMEZONE: en este caso la fecha y hora se
almacena normalizada, lo que quiere decir que cuando se extrae de
la base de datos, se proporciona transformada a la zona horaria del
cliente que la recibe.
INTERVAL YEAR TO MONTH: este tipo de datos es til cuando
deseamos representar la diferencia entre dos fechas en las que
nicamente el ao y el mes son importantes.
INTERVAL DAY TO SECOND: este tipo de datos es til cuando
deseamos representar la diferencia entre dos fechas concretas.
Almacenan perodos de tiempo que incluyen das, horas, minutos y
segundos.
RAW: para almacenar informacin en formato binario, como imgenes,
documentos, sonidos, vdeos, etc.
LOB: permiten almacenar grandes cantidades de informacin. Un
subtipo de LOB es CLOB (o NCLOB) para almacenar grandes cantidades
de texto.
BFILE: permite el acceso a datos binarios que no se almacenan en
la propia base de datos, sino como archivos independientes.
-
13Copyright Computer Aided Education, S.A.
Tablas
En muchas ocasiones deseamos que los valores que se almacenan en
un campo sean nicos para cada registro, como ocurre en el caso de
las claves principales de una tabla.
Oracle puede encargarse de generar valores enteros nicos a travs
del concepto de secuencia.
Una secuencia es un objeto ms de un esquema, que podemos
utilizar a la hora de generar nmeros enteros nicos.
Por ejemplo, en lugar de tener que llevar la cuenta de los
clientes que introducimos en una tabla, por qu no hacemos que sea
Oracle el que se encargue de ello?
Esto es tan fcil como crear una secuencia y solicitar los
identicadores de cada registro en el momento de su creacin.
Para crear secuencias, acceda al correspondiente enlace en el
apartado Objetos de Base de Datos de la seccin Esquema.
Seguidamente, pulse en el botn .
Debemos indicar el nombre de la secuencia, que ser utilizado
posteriormente cuando solicitemos un valor de la secuencia, el
valor inicial y mximo, el intervalo entre cada valor generado y
opciones de cach.
En la seccin Valores podemos indicar:- El valor mnimo y mximo de
la secuencia.- El valor inicial.- El intervalo entre cada valor
generado.
6. SECUENCIAS
-
14
Tablas
Finalmente, vemos una seccin de opciones y otra de cach. En la
de opciones podremos indicar qu debe ocurrir cuando se alcance el
lmite impuesto (es decir, el valor mximo en una secuencia
ascendente o mnimo en una descendente); y si deseamos que los
nmeros se generen ordenadamente.
Normalmente los valores de una secuencia se generan
ordenadamente, por lo que no es necesario activar esta opcin.
La seccin cach es muy importante, ya que permite que
establezcamos (o no) la cach para la secuencia. La idea de la cach
es que la primera vez que se utiliza la secuencia, no slo se
reserva el valor devuelto sino un conjunto de valores (20 por
defecto).
Ms tarde, cuando se vuelve a solicitar un nmero, se coge de esta
cach con lo que el proceso es ms rpido al no tener que acceder de
nuevo a la secuencia hasta que se agoten los valores de la cach,
momento en el que se vuelven a coger ms nmeros.
A cambio de esta ventaja en las prestaciones, hay que tener en
cuenta que si la base de datos es reiniciada por cualquier motivo,
como un fallo en el servidor, los valores libres en cach se
perdern, por lo que podramos tener huecos entre los valores
generados por una secuencia. Si no se desea tener esos huecos, lo
mejor es desactivar la cach.
Ms tarde veremos cmo podemos solicitar valores de la secuencia.
Normalmente crearemos una secuencia por cada campo clave principal
donde lo necesitemos. Adems, es importante darse cuenta de que las
secuencias y las tablas son objetos distintos e independientes.
-
1Copyright Computer Aided Education, S.A.
Relaciones
1. INTRODUCCIN
En todo diseo de una base de datos relacional nos encontramos
con dos conceptos fundamentalmente: las tablas y las
relaciones.
Las tablas permiten almacenar la informacin necesaria, mientras
que las relaciones tienen dos objetivos: facilitar la extraccin o
consulta de dicha informacin y asegurar su integridad, es decir,
mantener la base de datos en un estado coherente.
Para esto ltimo se utiliza lo que se conoce como restricciones
de integridad referencial. Aunque el nombre puede parecer
complicado, veremos que no lo es tanto.
Supondremos que disponemos del diseo de nuestra base de datos,
por lo que no slo conocemos las tablas requeridas sino tambin qu
relaciones existen entre ellas. Veamos pues, cmo implementar esta
parte del diseo utilizando Oracle Enterprise Manager.
Lo primero que tenemos que conocer es que podemos encontrar dos
tipos de relaciones: 1 a muchos y Muchos a muchos.Una relacin 1 a
muchos entre dos tablas promociona una de las
tablas como principal y otra como secundaria.
Qu quiere decir esto? Es mejor verlo con un ejemplo.
Cojamos el caso de la relacin entre las tablas Categorias y
Productos. Si piensa en ello, comprobar que una categora puede
tener muchos productos relacionados, en el sentido de que estn
clasicados dentro de la misma; y, sin embargo, un producto slo
puede pertenecer a una determinada categora.
Vemos, por lo tanto, que aqu la tabla principal o parte 1 es la
de Categorias y la tabla secundaria o parte muchos es la de
Productos.
Este tipo de relaciones es muy fcil de representar en una base
de datos Oracle:
1.- Debe crear un campo adicional en la tabla secundaria que
haga referencia a la tabla principal.
2.- Debe establecer la relacin.
2. RELACIONES 1 A MUCHOS
-
2Relaciones
Aqu lo que estamos haciendo ahora es representar la relacin 1 a
muchos entre las tablas Categorias y Productos con el nuevo campo
IdCategoria. De esta forma, para cada producto ser muy fcil conocer
en qu categora est clasicado.
El dato que se guardar en este nuevo campo es justamente el
identicador o clave principal de la categora (tabla principal de la
relacin), por lo que este campo debe ser del mismo tipo que aquel
o, al menos, de un tipo de datos compatible.
Finalmente, debemos decidir si permitiremos valores nulos para
el campo que hace referencia a una categora o no. Esto depende
mucho de la naturaleza de la relacin.
Debe preguntarse: tiene sentido disponer de un producto del que
no conocemos su categora? Si la respuesta puede ser s, entonces
permita los valores nulos; en caso contrario, no lo permita.
Y cundo puede tener sentido en este caso? Bien, imagine que se
elimina una categora.
Si desea que los productos de esa categora sigan existiendo en
la base de datos, tal vez sea conveniente permitir valores nulos en
el campo IdCategoria de la tabla Productos. De esta forma, se podra
representar un producto de una categora eliminada.
Como puede ver, permitir los valores nulos suele complicar el
diseo (y programacin) de la base de datos. Pero es algo que tenemos
que estudiar para ver si lo necesitamos.
Aunque no es obligatorio, por claridad
le recomenda-mos que utilice el mismo nom-bre en ambas
tablas. As, si el campo
clave principal de la tabla
Categorias es IDCATEGORIA, cree un nuevo
campo con las mismas
caractersticas y nombre en la
tabla Produc-tos.
-
3Copyright Computer Aided Education, S.A.
Relaciones
Tras aadir el campo que representa la relacin, debemos denirla
realmente. Esto se consigue creando una restriccin del tipo FOREIGN
KEY en la estructura de la tabla secundaria.
Para ello, nos situaremos en la cha Restricciones, elegiremos el
tipo FOREIGN y pulsaremos en el botn Agregar.
En la nueva pgina web se nos explica la naturaleza de una
restriccin FOREIGN, haciendo referencia a la posibilidad de reejar
la relacin existente entre dos tablas.
Si no especicamos un nombre, Oracle genera uno automticamente.
Sin embargo, en este tipo de restricciones es mucho mejor
introducir un nombre descriptivo, ya que posteriormente podremos
necesitarlo.
Por ejemplo, con FK_Productos_Categorias reejamos que se trata
de una relacin de clave externa (Foreign Key), de forma que la
tabla Productos (tabla secundaria) hace referencia a la tabla
Categorias (tabla principal).
Seguidamente debemos indicar las columnas de la tabla secundaria
y principal que establecen la relacin. En la gura anterior vemos
que se establece una relacin entre las tablas Categorias y
Productos a travs del campo IdCategoria de ambas tablas.
De esta forma ira creando las relaciones entre las distintas
tablas.
Ve cmo es til que ambos campos tengan el mismo nom-
bre? De esta forma, es fcil identificarlos.
-
4Relaciones
Hemos comentado que uno de los objetivos de las relaciones es
mantener la base de datos en un estado coherente.Tal vez no ha
entendido muy bien a qu nos estbamos reriendo
y tiene razn. Bien, lo que esto quiere decir es que los datos
que se almacenan en las distintas tablas deben cumplir una serie de
restricciones y no poder almacenar cualquier valor.
Con el ejemplo de las tablas Categorias y Productos se ve muy
bien. Imagine que est introduciendo un nuevo producto en el catlogo
de la tienda.
Lgicamente necesita conocer en qu categora lo incluir y, lo que
es incluso ms importante, que esa categora exista en la tabla
Categorias.
Por qu? Porque si no es as, incluira un producto de una categora
inexistente.
Para que esto lo controle la propia base de datos, la restriccin
de tipo FOREIGN tiene que estar activada.
Es decir, que la columna Desactivado de dicha restriccin debe
indicar el valor No. Por defecto, la restriccin se crea de esta
forma, pero posteriormente podramos desactivarla temporalmente si
as lo necesitamos.
Adicionalmente, podemos indicar qu ocurre cuando se modican o
eliminan registros de la tabla principal. Volvamos a nuestro
ejemplo:
---> Qu debe ocurrir cuando se modica el valor del
identicador de una categora en la tabla Categorias?
Si est activada la restriccin FOREIGN y dicha categora dispone
de productos relacionados, Oracle no permitir la modicacin.
3. RESTRICCIONES DE INTEGRIDAD REFERENCIAL
Puede desacti-var una restric-cin FOREIGN accediendo a su edicin
en EM Database
Control.
-
5Copyright Computer Aided Education, S.A.
Relaciones
---> Qu debe ocurrir cuando se elimine una categora en la
tabla Categorias?
En este caso tenemos hasta tres opciones:
No permitirlo si la categora tiene productos relacionados.
Eliminar tambin esos productos relacionados (en cascada).
Establecer a NULL el campo IDCATEGORIA de los productos
relacionados.
Si deseamos aplicar la operacin ON DELETE CASCADE u ON DELETE
SET NULL, no podremos hacerlo directamente aqu sino que ser
necesario indicarlo mediante un comando SQL de modicacin de la
tabla.
Una forma de ejecutar un comando SQL directamente contra el
motor de base de datos es hacerlo mediante la herramienta sqlplus.
Esta herramienta aparece en el grupo de programas de Oracle -
Desarrollo de aplicaciones, pero si desea acceder a ella como
administrador de la base de datos (SYSDBA), es mejor ejecutarla
directamente con el comando sqlplusw /nolog.
Con ello, acceder a una ventana o consola donde lo primero es
conectarse con el usuario oportuno y despus ejecutar los distintos
comandos SQL que necesite. Obsrvelo en la gura adjunta.
-
6Relaciones
Si desea aplicar ON DELETE CASCADE u ON DELETE SET NULL, deber
hacerlo mediante un comando ALTER TABLE o en el momento de crear la
tabla de la misma forma, pero con el comando CREATE TABLE.
Desgraciadamente EM Database Control no lo permite hacer
visualmente.
La sintaxis sera:
ALTER TABLE tablaSecundaria ADD CONSTRAINT restriccion FOREIGN
KEY (campo) REFERENCES tablaPrincipal (campo) ON DELETE
CASCADE;
Al exigir las restricciones de integridad referencial, nos
aseguramos de que la base de datos se mantendr en un estado
coherente.
Adems, podemos indicar qu queremos que ocurra cuando se elimina
un registro que tiene registros relacionados en otras tablas.
Por defecto, esto no se permitir, pero podremos indicar que
tambin se eliminen esos registros relacionados si activamos la
opcin de hacerlo en cascada.
Esta opcin no est disponible para las actualizaciones en
cascada, algo que s que est disponible en otras bases de datos.
Otras relaciones 1 a muchos que puede encontrar en esta base de
datos son:
- Los carritos de la compra contienen productos (tablas
CarritoCompra y Productos).
- Los clientes realizan rdenes de compra (tablas Clientes y
Ordenes).
- ...
-
7Copyright Computer Aided Education, S.A.
Relaciones
Continuamos la leccin estudiando otro tipo de relacin menos
frecuente pero que tambin puede aparecer en una base de datos: las
relaciones muchos a muchos.
Por ejemplo, piense que en una orden de compra pueden aparecer
varios productos (junto a la cantidad en que se compran) y, adems,
un producto puede aparecer en varias rdenes de compra.
Por lo tanto, estamos identicando una relacin muchos a muchos
entre las tablas Productos y Ordenes.
Las relaciones muchos a muchos no se pueden representar
directamente en una base de datos relacional, sino que se tienen
que seguir estos pasos:
1.- Crear una nueva tabla en la que aparecern dos campos
representando las claves principales de las tablas relacionadas.
Estos dos campos constituirn la clave principal de la nueva
tabla.
Adicionalmente pueden aparecer ms campos en esta tabla, propios
de la relacin.
2.- Una vez creada la tabla adicional, establecer una relacin 1
a muchos entre la nueva tabla y cada una de las tablas
implicadas.
Aqu puede ver la tabla LineasOrden, que reeja justamente la
relacin Muchos a muchos entre las tablas Ordenes y Productos. Fjese
que la clave principal de esta nueva tabla es el par (IdOrden,
IdProducto), es decir, las claves de las tablas implicadas.
4. RELACIONES MUCHOS A MUCHOS
-
8Relaciones
Fjese cmo se utiliz la herramienta sql*plus para generar las dos
restricciones FOREIGN, estableciendo la eliminacin en cascada.
Recuerde que si no desea aplicar las operaciones ON DELETE
CASCADE u ON DELETE SET NULL, podr crear las restricciones de
integridad referencial ms fcilmente desde EM Database Control.
Fjese todo lo que estamos consiguiendo con las relaciones y la
integridad referencial:
Al aadir nuevos registros, nos aseguramos de que los valores de
las claves externas existen en las tablas principales a las que
hacen referencia.
Al eliminar un registro en la tabla principal, ocurrir lo mismo
en los registros relacionados de la tabla secundaria.
Aunque denir las relaciones y exigir la integridad referencial
va a dicultar la programacin, ya que se tienen que cumplir todas
estas restricciones, facilitamos que no se pueda dejar la base de
datos en un estado inconsistente.
-
1Copyright Computer Aided Education, S.A.
Propiedades de tabla
1. VALORES PREDETERMINADOS
Durante el diseo de las tablas en Oracle, vemos que
principalmente tenemos que hacer dos cosas: crear las columnas que
las constituyen (indicando el tipo de datos de cada una de ellas) y
establecer su clave principal.
Despus, cuando comprobamos que necesitamos algo ms para poder
extraer resultados tiles de la informacin almacenada en la base de
datos y para mantener su integridad, establecemos las
correspondientes relaciones o restricciones de clave externa.
Oracle permite anar todava ms el diseo de las tablas, incluyendo
conceptos que nos permiten representar lo ms elmente posible la
naturaleza de la informacin que en ellas se almacena.
Valores predeterminados, restricciones de valor, restricciones
de unicidad, etc. hacen que la base de datos incluya por s misma
cierta lgica y no slo datos.
Como resultado de todo esto, tendremos que la propia base de
datos se encargar de comprobar y exigir la coherencia de la
informacin almacenada independientemente de la aplicacin que
interacta con ella.
Una caracterstica que podemos establecer siguiendo este
razonamiento es incluir el valor predeterminado de las columnas o
campos de una tabla.
Qu es esto? Pues el valor que se insertar en el campo si no se
indica ninguno. El valor predeterminado debe ser acorde al tipo de
datos de la columna.
Por ejemplo, uno de los campos de la tabla Productos es
IMAGEURL, donde se indica la ubicacin y nombre de una pequea imagen
representativa del producto.
Podramos preparar una imagen genrica para los casos en que no se
disponga de ninguna imagen particular del producto. Pues esa imagen
puede ser el valor predeterminado de este campo.
El valor predeterminado de un campo se establece en la columna
Valor por Defecto, como puede ver en la gura de la pgina
siguiente.
-
2Propiedades de tabla
El valor predeterminado puede ser tanto una constante como una
expresin, pero debe ser de un tipo acorde al tipo de datos del
campo de la tabla.
Fjese: como el campo IMAGEURL es de tipo VARCHAR2, espera una
cadena de texto, por lo que debe incluirse entre comillas simples.
Es decir, que si no se indica una imagen particular, cada producto
tendr la imagen sinfoto.gif por defecto.
Si el campo fuera numrico, incluiramos un nmero; si fuera de
tipo fecha y hora, una fecha correcta.
Veamos otro ejemplo. Como se ha comentado anteriormente, podemos
utilizar una expresin para obtener el valor predeterminado. Lo
importante es que esa expresin se evale a un valor correcto para el
campo en cuestin. En la gura de la pgina siguiente vemos que se ha
utilizado la funcin SYSDATE para obtener la fecha y hora actual del
servidor. Estos detalles sern el valor predeterminado del campo
FechaOrden de la tabla Ordenes.
Por lo tanto, cuando se cree una orden, tendr como fecha la de
ese momento. Esto no quiere decir que no podamos insertar un valor
distinto. Aunque un campo tenga valor predeterminado, siempre
podremos insertar uno distinto.
La cuestin es que si no lo hacemos, tendr el valor
predeterminado.
-
3Copyright Computer Aided Education, S.A.
Propiedades de tabla
Otra caracterstica asociada con una columna que podemos utilizar
son las restricciones de valor o restricciones Check.
El concepto es parecido al de las restricciones de integridad
referencial, ya que estas ltimas restringen el valor que pueden
tener ciertas columnas a los valores almacenados en otra columna de
una tabla distinta (un producto debe tener una categora existente
en la tabla Categorias, por ejemplo).
Las restricciones Check son parecidas a esto pero los valores
que puede albergar una columna de tabla no hacen referencia a otra
columna de otra tabla, sino a un conjunto de valores conocidos y
establecidos directamente en la restriccin.
Con un ejemplo se ve todo ms claro. Fjese en la tabla Ordenes.
Vemos que para cada orden nos guardamos tanto la fecha de expedicin
de la orden (campo FechaOrden) como la fecha real del envo de la
orden (campo FechaEnvio).
Como ambos campos son del tipo DATE, pueden albergar cualquier
fecha/hora correcta. Pero, tiene sentido que la fecha de envo de la
orden sea anterior a la fecha de expedicin?
2. RESTRICCIONES CHECK
-
4Propiedades de tabla
Claramente no, ya que no deberamos permitir que se guarde una
fecha de envo anterior a la fecha en la que realmente se crea la
orden.
Para establecer esta restriccin, debemos utilizar una restriccin
Check. Podr hacerlo en la cha Restricciones de la tabla,
desplegando el tipo de restriccin, eligiendo CHECK y despus
pulsando el botn Agregar.
Con esta restriccin queremos asegurar que nunca se guardar una
fecha de envo posterior a la fecha de creacin de la orden.
Fjese que se indica un nombre descriptivo (utilizaremos el prejo
CK para las restricciones de Check) y el campo Condicin de Control
establece dicha restriccin.
Es intersante darse cuenta de que aqu podemos comparar dos
fechas directamente porque tanto el campo FechaOrden como
FechaEnvio son de tipo DATE. Si las hubisemos guardado como
caracteres, esto no sera tan sencillo, teniendo que convertirlas
previamente a un tipo de fecha.
La Condicin de Control no puede incluir referencias a funciones
no deterministas, es decir, que no devuelven siempre el mismo valor
con los mismos parmetros. Por ejemplo, no puede utilizar la funcin
SYSDATE, ya que devuelve un valor distinto (la fecha y hora actual)
cada vez que se invoca.
Adicionalmente, con el atributo Validar podremos indicar si
queremos aplicar la restriccin incluso para los datos que ya
pudieran almacenarse en la tabla.
Adems tambin podemos activar o desactivar la restriccin.
-
5Copyright Computer Aided Education, S.A.
Propiedades de tabla
En la gura siguiente aparece la restriccin Check que acabamos de
crear junto a otras de este tipo que genera Oracle
automticamente.
Por ejemplo, cada vez que indicamos que un campo no puede tener
valores nulos, Oracle implementa esta caracterstica con una
restriccin Check.
Veamos otro ejemplo de restriccin Check. Vamos a exigir que la
direccin de correo electrnico que introduce cada cliente tiene que
incluir siempre el carcter arroba (@).
Una expresin que podramos utilizar como Condicin de control de
la restriccin sera:
INSTR(EMAIL, '@') 0
En este caso utilizamos la funcin INSTR, que devuelve la posicin
inicial de una expresin en una cadena de caracteres. Nosotros
buscamos el carcter arroba @ en el campo Email.
La restriccin comprueba que la posicin inicial de este carcter
sea distinto de cero; es decir, que exista el carcter arroba en el
valor del campo Email.
En resumen vemos que las restricciones Check permiten introducir
restricciones o limitaciones de sentido comn en la propia denicin
de la tabla.
Al guardarlas como parte de la tabla, es Oracle el que se
encarga de aplicarlas cuando se insertan nuevos registros o cuando
se actualizan los existentes, por lo que nuestras aplicaciones no
tienen que preocuparse de ello.
Si desea deshabilitar
temporalmente una restriccin
Check, active el atributo
Desactivado. Esto puede ser necesario, por
ejemplo, cuan-do se importan
datos prove-nientes de otra base de datos
donde la infor-macin puede
no respetar la restriccin establecida.
-
6Propiedades de tabla
Otros ejemplos de restricciones Check que podramos utilizar en
nuestra base de datos:
- Cantidad > 0: para exigir que la cantidad comprada de un
producto en cierta orden sea siempre positiva.
- Edad BETWEEN 18 AND 120: La edad de los clientes tiene que
estar entre los 18 y 120 aos.
- Sexo IN ('Masculino', 'Femenino'): El campo Sexo slo puede
almacenar la palabra Masculino o Femenino.
En resumen, podemos utilizar constantes, funciones y operadores
del lenguaje propio de Oracle, conocido como PL/SQL.
Cuando estudiamos la forma de establece la clave principal de
una tabla, indicamos que, de esta forma, cada registro se
identicaba unvocamente, ya que no poda haber valores repetidos para
la clave principal.
Las restricciones UNIQUE son parecidas en este aspecto, ya que
no permiten que en un campo haya valores repetidos, pero se
diferencian de las claves principales en que s que pueden admitir
valores NULL. Adems, podemos denir varias restricciones UNIQUE en
una tabla, pero sta slo podr tener una clave principal (compuesta
por uno o ms campos).
Por lo tanto, podemos utilizar restricciones UNIQUE para
garantizar que no se introducen valores duplicados en campos que no
forman la clave principal de la tabla.
Por ejemplo, en la tabla Clientes podra tener sentido garantizar
que los clientes no introducen direcciones de correo electrnico
repetidas.
Crear una restriccin de este tipo es igual que en el resto de
los casos. Accederemos a la cha Restricciones de la correspondiente
tabla, elegiremos UNIQUE en la lista de tipo de restriccin y
pulsaremos en el botn Agregar.
3. RESTRICCIONES UNIQUE
-
7Copyright Computer Aided Education, S.A.
Propiedades de tabla
Deber elegir el campo o conjunto de campos que se vern afectados
por la restriccin UNIQUE en la lista Columnas Disponibles y pasarlo
a la lista de Columnas Seleccionadas mediante el botn Mover.
Para este tipo de restricciones, utilizaremos un nombre que
empiece con el prejo UN, como puede ver en la gura anterior.
Tenga en cuenta que Oracle no evala como iguales dos campos con
el valor NULL, por lo que aceptar ms de un valor NULL almacenado en
el campo EMAIL de esta tabla.
Este comportamiento puede ser distinto en otras bases de datos,
como Microsoft SQL Server.
Y es que el valor NULL es distinto a cualquier otro, por lo que
slo puede preguntarse si es nulo o no, pero no compararlo con otro,
aunque sea otro valor nulo.
-
1Copyright Computer Aided Education, S.A.
ndices
1. INTRODUCCIN
Los ndices son uno de los objetos de una base de datos que menos
frecuentemente se utilizan, y que, sin embargo, pueden determinar
en gran medida las prestaciones de la base de datos.
Los ndices son estructuras que se utilizan para acceder
rpidamente a la informacin almacenada en las tablas. La idea
principal es evitar recorrer la tabla para lo que, en lugar de
ello, se accede al ndice.
Debido a esto, durante el diseo inicial de las tablas podemos
anticipar la utilizacin de alguno de los ndices pero no de
todos.
Normalmente, el diseador de bases de datos debe estar atento al
uso que se est haciendo de la base de datos; es decir, a las
consultas ms frecuentes, y generar nuevos ndices si ello contribuye
a mejorar su rendimiento.
Sin embargo, aunque pueda parecer que la creacin de ndices es
algo que mejora las prestaciones de la base de datos, no tiene por
qu ser siempre as.
Si pensamos que normalmente ser ms rpido consultar un ndice que
recorrer toda una tabla, entendemos que los ndices son tiles cuando
queremos consultar la informacin de una tabla.
Sin embargo, si pensamos en lo que ocurre cada vez que
insertamos nuevos registros o que modicamos/eliminamos los
existentes en una tabla, veremos que la presencia de ndices puede
ralentizar estos procesos ya que tambin tienen que ser
actualizados.
Esto nos debe hacer pensar que un buen diseo de ndices es
crucial en nuestra base de datos y que segn las caractersticas de
sta, ser adecuado utilizarlos en mayor o menor medida.
Como regla general, aunque sin poder tomarla al pie de la letra,
podemos pensar en la creacin de ndices cuando la operacin ms
frecuente contra la tabla es la consulta de sus datos; por otra
parte, deberemos evitar crear muchos ndices si lo ms frecuente es
insertar, actualizar o eliminar registros en dicha tabla.
En esta leccin veremos qu considerar durante el diseo de los
ndices y ofreceremos toda una serie de directrices que nos pueden
ayudar en este proceso, pero teniendo en cuenta que muchas veces es
necesario realizar pruebas del rendimiento de la base de datos para
encontrar el mejor conjunto de ndices.
-
2ndices
Lo primero que tenemos que saber es que Oracle utiliza los
ndices para llevar a cabo algunas de las restricciones que
establecemos en nuestras tablas, como las de clave principal y
restricciones UNIQUE.
Aqu vemos que la tabla Clientes tiene un ndice asociado con la
columna IdCliente porque sta es la clave principal de la tabla, y
un ndice establecido para la columna Email, que se cre
automticamente tambin al establecer la restriccin UNIQUE en dicho
campo.
Las restricciones de clave principal y UNIQUE generan
automticamente ndices en la denicin de la tabla, ya que es la forma
que tiene Oracle de implementarlas.
Sin embargo, usted establece restricciones desde un punto de
vista lgico y para mantener la integridad de los datos, mientras
que crea ndices cuando est estudiando la optimizacin de la base de
datos.
En la pgina siguiente podemos ver la estructura de un ndice. Se
trata del ndice segn el campo IdCliente de la tabla Clientes.
En un ndice encontramos tres tipos de registros o nodos: el nodo
raz, los nodos intermedios (ramas) y los nodos hoja.
2. CREAR NDICES
-
3Copyright Computer Aided Education, S.A.
ndices
El nodo raz es desde donde parte toda la estructura, que se
ampla con los nodos intermedios y que llega a las hojas de datos o
donde encontramos los enlaces a la informacin almacenada en la
tabla.
Por ejemplo, imagine la consulta todos aquellos clientes cuyo
IdCliente est contenido entre el 158 y el 271.
Cuando Oracle recibe esta consulta, comprueba qu valor
almacenado en el nodo raz del ndice es el ms apropiado para empezar
a buscar y elige el 157.
Fjese que en el ndice slo se almacena el valor de IdCliente
(columna clave del ndice) y no el resto de detalles que tenemos en
la tabla Clientes.
Este valor apunta a un nodo intermedio que nalmente da paso a
las hojas donde se incluye un puntero o enlace a los datos buscados
en la tabla.
Como el ndice se mantiene ordenado, las consultas en las que
solicitamos rangos de datos continuos, como la del ejemplo, se
benecian en gran medida del ndice.
Veamos cmo podramos crear nosotros los ndices que estimemos
oportuno. Para ello, si se encuentra editando una tabla, sitese en
la cha ndices y elija Crear ndice en la lista de Acciones.
Finalmente, pulse en el botn Ir.
-
4ndices
Tambin puede crear ndices independientemente de las tablas,
utilizando el enlace adecuado en el apartado Objetos de Base de
Datos de la pgina de administracin.
Imagine que es frecuente consultar la base de datos para conocer
los productos de una determinada categora. Por ejemplo, podramos
incluir un ltro en la aplicacin web que accede a la base de datos
para que el usuario elija el tipo o categora de productos que
quiere comprar.
En este caso, disponer de un ndice segn el identicador de la
categora en la tabla Productos podra acelerar el acceso a dicha
informacin, ya que en el ndice dispondramos de la ubicacin exacta
de cada producto de dicha categora.
Seguramente utilizar este ndice sea ms efectivo que recorrer
toda la tabla, sobre todo si sta tiene muchos productos.
A la hora de crear un ndice debemos indicar su nombre, la tabla
a la que har referencia y sobre qu columnas actuar o tendr
almacenadas en su estructura (claves del ndice).
Podemos elegir entre dos tipos de ndice: Estndar (B-Tree) o
Bitmap.
-
5Copyright Computer Aided Education, S.A.
ndices
Los ndices que se utilizan en una base de datos OLTP, como la
nuestra, son los ndices Estndar o B-TREE. Los ndices Bitmap se
utilizan en bases de datos OLAP.
En la parte inferior de la pgina es donde indicaremos la tabla y
qu columna o conjunto de columnas formarn parte del ndice.
Vemos que hemos escrito un 1 para la columna IDCATEGORIA. De
esta forma indicamos que el ndice se formar a partir de esta
columna o campo de la tabla.
En el caso de que en el ndice se incluya ms de una columna,
deberemos indicar el orden (1, 2, 3, ....) en que queremos
utilizarlas.
Esto es muy importante, ya que puede determinar que se utilice o
no el ndice ante una consulta.
En general, utilice ndices en aquellas tablas en las que no sea
muy frecuente la insercin o modicacin de datos, sino ms bien su
consulta. Pero, adems, recuerde las siguientes indicaciones:
Tener en cuenta campos en los que sus valores tengan un alto
grado de unicidad. Por ejemplo, no es adecuado crear un ndice en un
campo donde se almacene el sexo de una persona, ya que slo puede
haber dos posibles valores: hombre o mujer.
Tener en cuenta campos en los que se realicen consultas de
intervalos: IdProducto entre el 10 y el 35, Ordenes enviadas
durante el mes de agosto, etc. Se reeren a consultas en las que se
utilizan la clusula BETWEEN o los operadores , = del lenguaje
SQL.
Campos que aparecen en clusulas ORDER BY o GROUP BY del lenguaje
SQL. Ya que estos comandos ordenan el resultado de la consulta, es
til tener un ndice en dichos campos porque los enlaces a los
registros ya estarn ordenados.
Utilice ndices para mejorar el rendimiento de consultas con
clusulas JOIN o GROUP BY del lenguaje SQL.
Los campos que acten como clave externa en una relacin con otra
tabla son candidatos para establecer ndices.
Siempre debe poner el orden
anterior en las columnas
que ms se utilicen.
-
6ndices
Ya sea durante la creacin del ndice o, posteriormente al
editarlo, podemos establecer una serie de propiedades y opciones
del ndice que debemos conocer.
La primera de ellas la tenemos aqu en la cha General del ndice.
Junto a la columna o columnas que lo forman, podemos indicar cmo
deben mantenerse ordenados los valores del ndice: ascendente o
descendentemente.
Por defecto, el orden es ascendente. En nuestro caso esto
signica que en el ndice se guardar el identicador de la categora de
cada producto ascendentemente.
Este detalle debe concordar con el orden en que normalmente se
utilizarn los valores clave del ndice: si las consultas reclaman un
determinado orden en su resultado, ese orden es el que debera
elegir para el ndice.
Con el botn Agregar Expresin de Columna podemos hacer que se
guarde el resultado de una determinada expresin en la que
interviene la columna indizada en lugar de su valor real.
Esto se utiliza mucho en columnas de texto para evitar la
necesidad de utilizar funciones a la hora de comparar cadenas de
caracteres.
Por ejemplo, una forma rpida de asegurarnos de comparar dos
cadenas sin tener en cuenta la combinacin de maysculas y minsculas
que tienen es pasarlas ambas a maysculas o a minsculas.
Para ello podemos utilizar las funciones UPPER y LOWER,
respectivamente.
Pues bien, si utiliza esta estrategia en sus consultas SQL,
seguramente ser mejor guardar los valores de la columna en
maysculas (o minsculas) en el ndice.
De esta forma, se utilizar el valor almacenado en el ndice en
lugar de tener que ejecutar la funcin UPPER o LOWER para cada
registro afectado por la consulta SQL
Podemos utilizar cualquier funcin, incluso aquellas que nosotros
mismos creemos, pero siempre que sean deterministas.
3. OPCIONES DE NDICE
Para que se utilice el
ndice, debe escribir la mis-
ma expresin en su consulta SQL que en la definicin del
ndice.
-
7Copyright Computer Aided Education, S.A.
ndices
En la cha Opciones encontraremos otras propiedades del
ndice.
Si el campo o conjunto de campos que usted ha elegido para crear
el ndice tiene la caracterstica de ser nico para los registros de
la tabla, debe especicarlo en la propiedad nico.
Oracle utiliza un ndice nico cuando establecemos restricciones
UNIQUE.
Oracle no almacena entradas en el ndice para aquellos registros
con el valor NULL.
Por lo tanto, aunque establezcamos la propiedad nico para el
ndice, podra existir una tabla con mltiples valores NULL en el
campo del ndice.
La propiedad Inverso se utiliza cada vez menos. Sirve para
almacenar, en forma inversa, los valores en el ndice con el
objetivo de que est balanceado.
Qu signica esto? Bien, para entenderlo es mejor pensar en el
ndice como en un rbol. Si el rbol crece siempre de un lado (por
ejemplo, de su lado derecho), entonces el rbol no est
balanceado.
Esto puede ocurrir cuando los registros que se crean en la tabla
tienen valores del ndice ascendentes (por ejemplo, cuando en el
ndice se incluye un campo cuyos valores provienen de una secuencia
ascendente).
En este caso, y para facilitar el que el rbol se mantenga
balanceado, podramos guardar los valores de forma inversa en el
ndice.
-
8ndices
Sin embargo, esto tena ms sentido en versiones anteriores de
Oracle, ya que actualmente el servidor utiliza tcnicas para que el
rbol que representa un ndice se mantenga siempre balanceado.
En Paralelo podremos especicar que se cree el ndice utilizando
ms de un proceso. Esto puede acelerar la creacin de un ndice en una
tabla con muchos registros.
A cambio, la necesidad de almacenamiento aumenta
considerablemente (aunque nicamente durante la creacin del
ndice).
Con la propiedad En Lnea podremos indicar si durante la creacin
del ndice se aceptan operaciones DML, es decir, si la tabla est
operativa o no durante la creacin del ndice.
Tenga en cuenta que la creacin de un ndice puede ser una tarea
que consuma bastante tiempo, por lo que mantener operativa la tabla
es una ventaja muy importante.
Con la propiedad Calcular Estadsticas podremos hacer que se
recopilen estadsticas de uso del ndice durante su creacin. Estas
estadsticas son las que pueden hacer que Oracle decida utilizar el
ndice o no durante las consultas.
Puede ser interesante cuando se crea un ndice respecto de una
tabla con muchos registros.
La ltima propiedad del ndice, Sin ordenar, es til cuando sabemos
que los valores que se incluyen en el ndice ya estn ordenados de
por s. Entonces no hace falta que se realice este paso durante la
creacin del ndice.
Esto puede suceder con tablas organizadas por ndice, como despus
veremos, o cuando los valores del ndice son generados mediante una
secuencia.
Por ltimo, cabe comentar que es importante tambin en qu
tablespace se crea el ndice. Por defecto, se crea en el mismo que
la tabla a la que hace referencia, como puede comprobar en la cha
General del ndice.
Esto tiene la ventaja de que es ms fcil realizar la copia de
seguridad de una tabla y todas sus estructuras relacionadas, como
los ndices.
Es convenien-te crear los ndices una
vez insertadas grandes canti-
dades de datos en una tabla
y no antes, de forma que no sea necesario
actualizar tam-bin el ndice
cada vez.
-
9Copyright Computer Aided Education, S.A.
ndices
Sin embargo, de cara a conseguir mejores prestaciones en el
acceso a los datos de la tabla, si el ndice se crea en una
tablespace distinto puede ser mejor.
Si los tablespaces se almacenan fsicamente en discos duros
distintos, acceder (en paralelo) al ndice y a la tabla puede
aumentar signicativamente las prestaciones del servidor ante
consultas complejas.
Crear los ndices ms adecuados para nuestra base de datos no es
una tarea ni muchos menos sencilla. Normalmente es necesario
realizar pruebas con datos reales para ello.
Cuando Oracle decide utilizar un ndice para acceder a la
informacin solicitada en una consulta, tiene que encontrar la
entrada apropiada en el ndice y despus utilizar su enlace para
obtener la ubicacin real de los datos en la tabla.
Incluso realizando estos dos pasos (encontrar la entrada en el
ndice y seguir el enlace hasta los datos en la tabla), normalmente
el acceso a la informacin es mucho ms rpido que recorrer toda la
tabla.
Oracle permite aprovechar la idea del ndice en la propia
organizacin de las tablas, creando lo que se conoce como una tabla
organizada por ndice.
Una tabla de este tipo almacena los registros de la misma forma
que un ndice B-Tree, pero en el que cada hoja no slo incluye la
columna clave del ndice, sino todas las columnas de la tabla.
El orden en que quedan almacenados los registros de la tabla
viene dado por el campo que es la clave principal de la tabla, por
lo que es obligatorio establecer esta restriccin.
A diferencia de una tabla estndar, en que los registros se
almacenan en el orden en que se crean, una tabla organizada por
ndice almacena sus registros ordenados por su clave principal.
Est claro, por lo tanto, que esto puede venir muy bien en
ciertos tipos de aplicaciones donde es habitual solicitar
informacin ordenada por el campo que es clave principal de la tabla
y donde los registros se crean ordenadamente.
4. TABLAS ORGANIZADAS POR NDICES
-
10
ndices
Por ejemplo, la tabla Ordenes de nuestra base de datos es un
claro ejemplo de esto. Los registros de dicha tabla se crean
ascendentemente segn el campo IdOrden.
Esto quiere decir que no vamos a provocar gran sobrecarga en el
servidor por mantener ordenados fsicamente esos registros si
creamos una tabla organizada por ndice, y, sin embargo, s que
podemos obtener todas las ventajas que implica tener un ndice para
acceder a los datos de la tabla.
Otra ventaja de este tipo de tablas es que no se duplica la
informacin, ya que no es necesario crear un ndice explcitamente
para los valores de su clave principal.
Usted debe indicar el tipo de la tabla en el primer paso del
asistente de creacin de tablas. Obsrvelo en la gura adjunta.
Dependiendo de las caractersticas de la tabla, es conveniente
una cosa u otra. As, en nuestra base de datos tendra bastante
sentido haber elegido la organizacin por ndice para las tablas, ya
que los valores de las claves principales vienen generados por
secuencias ascendentes.
Sin embargo, debe tener en cuenta las tres operaciones de
manipulacin de datos, INSERT, UPDATE y DELETE, a la hora de
decidirse por un tipo de tabla u otro.
Usted conoce las ventajas y desventajas de los ndices, pues
aplquelas a las tablas.
-
11Copyright Computer Aided Education, S.A.
ndices
Las tablas organizadas por ndice tambin aceptan otros ndices
adicionales, por lo que no slo podemos obtener la ventaja del
acceso segn su clave principal, sino todas las ventajas de los
ndices en s.
La confeccin del conjunto de ndices apropiado no es sencilla por
lo que slo entender lo mejor posible cmo funcionan nos puede ayudar
a realizarla.
Debemos entender que los ndices tienen el objetivo de acelerar
el acceso a los datos, por lo que son de especial utilidad en
aquellas tablas donde lo ms frecuente es la seleccin o extraccin de
informacin y no su modicacin.
Los ndices se utilizan cuando Oracle recibe la solicitud de una
consulta. En ese momento tiene dos opciones: bien recorrer la tabla
o bien utilizar el ndice.
Cuando la tabla tiene muchos registros, es lgico pensar que ser
mucho ms rpido utilizar el ndice, ya que normalmente ser mucho ms
pequeo y, adems, dispondr de cierto orden.
Sin embargo, si la consulta realizada afecta a un porcentaje
elevado de registros de la tabla, no obtendremos ninguna ventaja al
utilizar el ndice, ya que nalmente tendremos que acceder a la
mayora de los datos de la tabla.
Oracle decide qu hacer consultando las estadsticas de uso de los
distintos ndices y en funcin del tamao de la tabla. La mayora de
las veces elegir utilizar el ndice (sobre todo cuando en la
consulta intervienen varias tablas en las que hemos denido ndices
para las claves externas).
Como contrapartida a esta situacin en la que los ndices pueden
ser de gran utilidad, tenemos las operaciones de insercin (INSERT),
modicacin (UPDATE) y eliminacin (DELETE) de registros.
En estos casos no slo se ve afectada la tabla, sino tambin los
ndices. Adems, en el caso de una tabla organizada por ndice esto
puede ser incluso peor, ya que puede implicar modicar la ubicacin
de almacenamiento de los registros para seguir mantenindolos
ordenados.
5. CUNDO SE UTILIZAN LOS NDICES?
-
12
ndices
Esta circunstancia, junto al hecho ineludible de que los ndices
tambin ocupan espacio ya que, al n y al cabo, estn almacenando
informacin que ya disponemos en las tablas, hacen que veamos la
necesidad de analizar con cuidado cada situacin y experimentar
hasta conseguir un buen diseo de ndices.
-
1Copyright Computer Aided Education, S.A.
El lenguaje SQL (I)
1. INTRODUCCIN
El lenguaje SQL es un lenguaje estndar para el acceso y
manipulacin de bases de datos relacionales como Oracle.Esto quiere
decir que aprender SQL es algo indispensable para
cualquier programador o administrador de bases de datos, ya que
se va a encontrar constantemente con la necesidad de consultar o
modicar los datos almacenados.
Oracle no es una excepcin, aunque dispone de una versin un poco
personalizada del lenguaje SQL que acepta que en lo fundamental es
compatible con el estndar ANSI.
Por otra parte, el lenguaje SQL