Guía 5

Anuncio
2
Base de datos II
Facultad de Ingeniería.
Escuela de computación.
Base de datos II. Guía 5 3
Introducción
Este manual ha sido elaborado para orientar al estudiante de Bases de datos II en el
desarrollo de sus prácticas de laboratorios, haciendo uso de este antes, durante y después
de la práctica, de tal forma que ofrece un método facilitador en su proceso de
enseñanza/aprendizaje durante esta asignatura.
En el desarrollo de esta asignatura se ha designado realizar las prácticas en 16 sesiones
semanales de laboratorios, los que incluyen 11 prácticas, dos parciales y un proyecto final
durante los cuales, el estudiante aplicará los conceptos y las técnicas fundamentalmente
necesarias para el dominio de programas para el uso, configuración y administración de
ORACLE.
Todas las guías de laboratorio están estructuradas de la siguiente forma:
- Objetivos
- Materiales y equipos
- Introducción teórica
- Procedimiento
- Bibliografía
- Hoja de evaluación( En caso de que la actividad sea evaluada )
La asignatura Base de Datos II,está dividida en cinco unidades durante el ciclo. La unidad 1
Administración avanzada de bases de datos tendrá 3 laboratorios prácticos, la unidad 2
Arquitectura de bases de datos tendrá 2 laboratorios prácticos y la unidad 3 Diseño de un
Datawarehuse tendrá 4 laboratorios prácticos. La unidad 4 Minería de datos tendrá 3
laboratorios prácticos. Y finalmente la Unidad 5 Calidad de datos y auditoria de bases de
datos tendrá 3 laboratorios prácticos.
4
Base de datos II, Guía 5
Facultad: Ingeniería.
Escuela: Computación.
Asignatura: Base de datos II.
Pág
Guía 5. Desnormalizar una base de datos.
Guía 6
Tabla de Contenido
a1
Contenido ----------------------------------------------------------------------------------------------- 5
Objetivos ------------------------------------------------------------------------------------------------ 5
Materiales y equipos --------------------------------------------------------------------------------- 5
Introducción teórica ---------------------------------------------------------------------------------- 5
Procedimiento ----------------------------------------------------------------------------------------- 8
Investigación ------------------------------------------------------------------------------------------- 9
Bibliografía ---------------------------------------------------------------------------------------------- 9
Base de datos II. Guía 5 5
Tema: Desnormalizar una base de datos.
Contenidos
En la presente guía de laboratorio se desarrollaran ejercicios básicos de desnormalización
de bases de datos como un principio que sustente los conceptos de datawarehouse.
Objetivo Específico
Desarrollar un proceso de desnormalización.
Desarrollar cursores en ORACLE.
Materiales y Equipo
 ORACLE 11g.
 Virtual de Windows 2003 server.
Introducción Teórica
Manejo de cursores.
Cursores explícitos
Los cursores explícitos los utilizamos cuando tenemos consultas que nos devuelven más
de una fila.
Tenemos 4 operaciones básicas para trabajar con un cursor explícito.
1. Declaración del cursor: lo tenemos que declarar en la zona de declaraciones, con el
siguiente formato: CURSOR <nombrecursor> IS <sentencia SELECT>;
2. Apertura del cursor: Deberá colocarse en la zona de instrucciones, con el siguiente
formato: OPEN <nombrecursor>;
Al hacerlo se ejecuta automáticamente la sentencia select y sus resultados se
almacenan en las estructuras internas de memoria manejadas por el cursor.
3. Recogida de información: Para recuperar la información anteriormente guardada
en las estructuras de memoria interna tenemos que usar el siguiente formato:
FETCH <nombrecursor> INTO {<variable> | <listavariables>};
Si tenemos una única variable que recoge los datos de todas las columnas, el
formato de la variable seria el siguiente:
<variable> <nombrecursor>%ROWTYPE;
6
Base de datos II, Guía 5
Si tenemos una lista de variables, cada una recogerá la columna correspondiente
de la cláusula select, por lo que serán del mismo tipo que las columnas.
4. Cierre del cursor:
CLOSE <nombrecursor>;
Ahora, veamos un ejemplo de utilización de cursores explícitos:
DECLARE
CURSOR C1 IS SELECT nombre, apellido FROM arbitro;
Vnom VARCHAR2(12);
Vape VARCHAR2(20);
BEGIN
OPEN C1;
LOOP
FETCH C1 INTO Vnom, Vape;
EXIT WHEN C1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(Vnom || '' || Vapen);
END LOOP;
CLOSE C1;
END;
Si nos fijamos, en la declaración de los cursores explícitos no utilizamos la cláusula INTO,
que sí se utilizaba en los cursores implícitos.
Además se puede ver que después del FETCH hemos comprobado si nos devuelve valores
con la linea del EXIT. Es algo importante ya que si no nos devuelve nada el LOOP se
interrumpirá.
Atributos del cursor
Para conocer detalles de la situación del cursor tenemos 4 atributos:
•%FOUND: devuelve verdadero di el ultimo FETCH ha recuperado algún valor; en caso
contrario devuelve falso; si el cursor no esta abierto nos devuelve error.
•%NOTFOUND: hace justamente lo contrario al anterior.
•%ROWCOUNT: nos devuelve el número de filas recuperadas hasta el momento.
•%ISOPEN: devuelve verdadero si el cursor esta abierto.
Veamos ahora un ejemplo de utilización de %ROWCOUNT:
DECLARE
CURSOR C1 IS SELECT nombre from futbolista WHERE Cod='e1';
Vnom VARCHAR2(15);
BEGIN
OPEN C1;
LOOP
FETCH C1 INTO Vnom;
Base de datos II. Guía 5 7
EXIT WHEN C1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE (C1%ROWCOUNT || Vnom);
END LOOP;
CLOSE C1;
END;
Variables de acoplamientos en el manejo de cursores
En el ejemplo siguiente podemos observar que en la cláusula WHERE se incluye una
variable que se debería haber declarado previamente. Este tipo de variables reciben el
nombre de variables de acoplamiento. El programa la sustituirá por su valor en el
momento en que se abre el cursor, y se seleccionarán las filas según dicho valor. Aunque
ese valor cambie durante la recuperación de los datos con FETCH, el conjunto de filas que
contiene el cursor no variará.
El ejemplo nos muestra los futbolistas de un equipo cualquiera.
CREATE OR REPLACE PROCEDURE ver_futbolistas_por_equipos(codeq VARCHAR2)
IS
Vequi VARCHAR2(3);
CURSOR C1 IS SELECT nombre from futbolista where codeq=Vequi;
Vnom VARCHAR(15);
BEGIN
vequi:=codeq;
OPEN C1;
FETCH C1 INTO vnom;
WHILE C1%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(Vnom);
FETCH C1 INTO Vnom;
END LOOP;
CLOSE C1;
END;
8
Base de datos II, Guía 5
Procedimiento
NOTA: LAS SIGUIENTES INSTRUCCIONES EXPLICITAMENTE DEBERAN SER REALIZADAS
EN SQLPLUS ALGUNAS REQUIEREN. ALGUNAS INSTRUCCIONES REQUIEREN UN
Bibliografía
ANALISIS PARA SU DESARROLLO.
Guía 11.
Ejecute la siguiente instrucción, la cual creara una tabla por nombre T_FACTURA.
2. Realice un select de la tabla t_factura , que acaba de crear. Cuantos registros muestra?
3. Cree el siguiente storeprocedure.
4. Ejecute el storeprocedure utilizando la instrucción. CALL SP_VENTADIARIA();
5. Cuantos registros muestra la tabla t_factura luego de ejecutado el storeprocedure.
____________________
6. Ejecute nuevamente el storeprocedure creado. Que mensaje da :
7. Realice los siguientes cambios.
En el storeprocedure y luego del segundo BEGIN registre la siguiente instrucción:
DELETE T_FACTURA; el storeprocedure deberá quedar de la siguiente manera:
Base de datos II. Guía 5 9
8. Desarrolle por su cuenta los siguientes cambios.
a. Cree otra estructura con el nombre de TT_FACTURA, la cual contendrá tres
campos AÑO de tipo varchar2(4), y TOTALVENTA de tipo float,
TOTALIMPUESTO de tipo float.
b. Modifique el storeprocedure del paso 7 para que adicional a lo que realice,
inserte el total de venta por año en la tabla TT_FACTURA.
c. Modifique la estructura T_FACTURA, para contener también el monto del
impuesto.
9. Conceptualmente la consulta tiene un error, los documentos de facturas tipo_factura
= D, son devoluciones por lo tanto esos valores se restan (es decir su SIGNO es
negativo), modifique el storeprocedure anterior para corregir esta falla lógica.
10. Cree una estructura para poder tener una tabla de ventas por vendedor, por año y
modifique el storeprocedure anterior, en este momento el storeprocedure deberá
registrar T_FACTURA,TT_FACTURA y la nueva estructura que ud. Ha creado para
registra la venta por vendedor.
Investigación Complementaria
1. Realice dentro del storeprocedure una modificación para controlar las excepciones y evitar
Guía 3que el sistema falle en su ejecución.
Bibliografía
Guía 4
 ORACLE 11g. Curso práctico. Teaching Soft Group.
fía
Guía 3
 ORACLE 9i. Manual del administrador. Técnicas de gestión de datos Oracle robustas y de alto
rendimiento. Kevin Loney/ Marlene Thenault.
Guía 4
fía
Descargar