lunes, 8 de agosto de 2011

Bloques anónimos PL/SQL


Los bloques anónimos, caracterizados porque no tienen nombre y se suelen crear y ejecutar desde PL/SQL.
Todo bloque debe acabar en . para que sea almacenado en el buffer SQL. Una vez guardado lo podemos ejecutar con la orden “run”. También podemos guardarlo en un fichero con la siguiente orden:

save nombrefichero [replace]

El replace sólo lo pondremos si el fichero ya esta creado.

Para cargar y ejecutar este bloque anónimo guardado en fichero ejecutaremos la siguiente orden:

start nombrefichero

El start lo podemos cambiar por la @ y nos funcionará igualmente.

Pero también podemos cargarlo sin ejecutarlo con la orden “get” y luego ejecutarlo posteriormente con la orden “run”.

Un ejemplo muy sencillo de bloque seria el que nos muestra en pantalla un nombre.
BEGIN
   DBMS_OUTPUT.PUT_LINE('nombre');
END;

 


Además en los bloques PL/SQL se pueden utilizar lo que llamamos variables de sustitución, que nos pedirán datos por pantalla antes de ejecutar el bloque. Estas variables tienen que ir antepuestas del & para que funcionen.
Un ejemplo seria un bloque que nos pide el DNI de un usuario y nos muestra su nombre.

DECLARE
   Vnom clientes.nombre%TYPE;
BEGIN
   select nombre into Vnom from clientes where NIF= '&V_nif';
   DBMS_OUTPUT.PUT_LINE (Vnom);
END;
 
 
Como ves es bastante sencillo, pero no tienen tanta funcionalidad como los procedimientos o funciones.








DICCIONARIO DE DATOS


Durante la creación de la base da datos, el oracle server crea estructuras de datos adicionales junto con los data file.
·         Tabla de diccionario de datos.
·         Tabla de funcionamientos.

EL DICCIONARIO DE DATOS

·         El diccionario de datos es un conjunto de tablas de solo lectura y vistas que registran, verifican y proveen información. 
·         El diccionario de datos describe la base de datos y sus objetos.
·         El diccionario incluye 2 tipos de objetos: -Tabla de base de datos: es un almacén de la  descripción de la base vista del diccionario de datos.

CONTENIDO DEL DICCIONARIO DE DATOS
El diccionario de datos provee información acerca de lo siguiente:
·         El nombre de los usuarios de Oracle.
·         Privilegios.
·         Roles.
·         Defectos por valor de las columnas.
·         Auditoría.
·         Integridad de la información.
·         La definición de todos los esquemas del objeto en la base de datos.
CATEGORÍAS DE LAS VISTAS DEL DICCIONARIO DE DATOS
El diccionario de datos consiste de 3 principales vistas estáticas:
1.                  DBA: accede a todos los objetos de la base.
2.                  ALL: objetos accesibles para usuarios comunes.
3.                  USER: objetos propios para usuarios comunes.
Para obtener un listado de las vistas se usa la consulta SELECT  y FROM.

El Modelo de Datos Entidad-Relación (E/R)


       Cuando se utiliza una base de datos para gestionar información, se está plasmando una parte del mundo real en una serie de tablas, registros y campos ubicados en un ordenador; creándose un modelo parcial de la realidad. Antes de crear físicamente estas tablas en el ordenador se debe realizar un modelo de datos.
       Se suele cometer el error de ir creando nuevas tablas a medida que se van necesitando, haciendo así el modelo de datos y la construcción física de las tablas simultáneamente. El resultado de esto acaba siendo un sistema de información parcheado, con datos dispersos que terminan por no cumplir adecuadamente los requisitos necesarios.

Entidades y relaciones
       El modelo de datos más extendido es el denominado ENTIDAD/RELACIÓN (E/R) En el modelo E/R se parte de una situación real a partir de la cual se definen entidades y relaciones entre dichas entidades:
·                     Entidad.- Objeto del mundo real sobre el que queremos almacenar información (Ej: una persona). Las entidades están compuestas de atributos que son los datos que definen el objeto (para la entidad persona serían DNI, nombre, apellidos, dirección,...). De entre los atributos habrá uno o un conjunto de ellos que no se repite; a este atributo o conjunto de atributos se le llama clave de la entidad, (para la entidad persona una clave seria DNI). En toda entidad siempre hay al menos una clave que en el peor de los casos estará formada por todos los atributos de la tabla. Ya que pueden haber varias claves y necesitamos elegir una, lo haremos atendiendo a estas normas:
·         Que sea única.
·         Que se tenga pleno conocimiento de ella.- ¿Por qué en las empresas se asigna a cada cliente un número de cliente?.
·         Que sea mínima, ya que será muy utilizada por el gestor de base de datos.
·         Relación.- Asociación entre entidades, sin existencia propia en el mundo real que estamos modelando, pero necesaria para reflejar las interacciones existentes entre entidades. Las relaciones pueden ser de tres tipos:
·         Relaciones 1-1.- Las entidades que intervienen en la relación se asocian una a una (Ej: la entidad HOMBRE, la entidad MUJER y entre ellos la relación MATRIMONIO).
·         Relaciones 1-n.- Una ocurrencia de una entidad está asociada con muchas (n) de otra (Ej: la entidad EMPERSA, la entidad TRABAJADOR y entre ellos la relación TRABAJAR-EN).
·         Relaciones n-n.-Cada ocurrencia, en cualquiera de las dos entidades de la relación, puede estar asociada con muchas (n) de la otra y viceversa (Ej: la entidad ALUMNO, la entidad EMPRESA y entre ellos la relación MATRÍCULA).

Representación gráfica de entidades y relaciones

       Para asimilar fácilmente un diseño de datos cuando se emplea el modelo E/R se utilizan los siguientes elementos gráficos:
       La utilización de estos elementos dará como resultado lo que se denomina el esquema entidad-relación de la base de datos. Los ejemplos que se incluyen en el apartado anterior, gráficamente quedarían como sigue:


¿Cómo se pasa del esquema E/R a las tablas?
 Para cada entidad del esquema se creará una tabla con tantos campos como atributos tenga la entidad. Ejemplo:
Tabla 'TRABAJADOR'
DNI
NUM_SS
nombre-apellidos
...     
11111111
XXXXXXXXXXX
Fulano de tal
...
22222222
YYYYYYYYYYY
Mengano de cual
...
......
......
......
......
       Las relaciones 1-1 se pueden reflejar incluyendo en una de las dos tablas un campo en el que poder colocar la clave del elemento de la otra tabla con el que se está relacionado. Ese nuevo campo que se incluye en la tabla recibe el nombre de clave ajena. Ejemplo:
Tabla 'HOMBRE'
DNI
Nombre
...     
11111111
...
...
22222222
...
...
...
...
...
Tabla 'MUJER'
DNI
Nombre
...     
DNI-ESPOSO
33333333
...
...
11111111
44444444
...
...
(nulo)
...
...
...
...
       Donde el campo DNI-ESPOSO es clave ajena de la tabla HOMBRE. Aquí hay que hacer notar que el campo DNI-ESPOSO puede tomar o bien un valor nulo, en el caso de aquellas mujeres que no estén casadas, o bien el valor de alguno de los DNI de la tabla HOMBRE, en el caso de las mujeres casadas; en este segundo caso, ese DNI (la clave ajena) no se deberá repetir en ningún otro registro de la tabla MUJER.
       Las relaciones 1-n se representan de forma muy parecida a como se ha explicado para las relaciones 1-1. La diferencia está en que ahora no es indiferente donde se coloque la clave ajena, esta debe estar obligatoriamente en la tabla del 'mucho' (n); y además, para este caso si se permitirá que haya valores repetidos en dicho campo. Ejemplo:
Tabla 'EMPRESA'
CIF
Nombre
...     
XX-1111-AA
...
...
YY-2222-BB
...
...
...
...
...
Tabla 'TRABAJADOR'
DNI
Nombre
...     
CIF
11111111
...
...
XX-1111-AA
22222222
...
...
YY-2222-BB
33333333
...
...
YY-2222-BB
44444444
...
...
XX-1111-AA
...
...
...
...
       Para representar las relaciones n-n en tablas lo que se hace es crear una nueva tabla solamente para la relación. Esta nueva tabla tendrá dos claves ajenas y su propia clave estará formada por la unión de las claves ajenas. Ejemplo:
Tabla 'ALUMNO'
DNI
Nombre
...     
11111111
...
...
22222222
...
...
...
...
...
Tabla 'ASIGNATURA'
COD-ASIGNATURA
Nombre
...     
01
...
...
02
...
...
...
...
...
Tabla 'MATRÍCULA'(esta es la relación)
DNI
COD_ASIGNATURA
NOTA
11111111
01
7.5
11111111
02
6.25
22222222
01
5.5
22222222
02
8
...
...
...
       En la tabla MATRÍCULA es donde se refleja la relación. La clave de dicha tabla está formada por los campos DNI y COD-ASIGNATURA ; y cada uno de ellos es clave ajena, el primero de ALUMNO y el segundo de ASIGNATURA. Hacer ver aquí que la tabla MATRICULAS puede tener más campos además de los que son clave ajena como ocurre en el ejemplo; la tabla añade además un campo NOTA.