MODELOS Y BASES DE DATOS
PL/ SQL Básico
2020-1
Guia autoestudio 4/6
OBJETIVO
1. Conocer herramientas que facilitan el trabajo del desarrollador de una base de
datos específicamente la herramienta SQL Developer
2. Desarrollar competencias para definir e implementar restricciones de integridad
con mecanismos declarativos y procedimientales.
TÓPICOS OBJETIVO 2
1. Acciones referenciales
2. Disparadores
3. Constantes y variables
4. Instrucciones básicas: asignación
5. Cursores: implícitos y explícitos
ENTREGA
Publicar las respuestas en el espacio correspondiente en un archivo .zip , el
nombre de este archivo debe ser la concatenación en orden alfabético de los
primeros apellidos de cada uno de los miembros.
INVESTIGACIÓN
A. Acciones referenciales
1. ¿Para qué sirven las acciones referenciales?
2. ¿Qué acciones soporta ORACLE? ¿Qué permite hacer cada una de ellas?
B. PL/SQL
1. ¿Qué es PL/SQL?
2. ¿Qué motores lo soportan?
C. Datos e instrucciones en PL/SQL
1. ¿Cuáles son los tipos de datos que ofrece?
2. ¿Cuál es la forma de definir constantes y variables?
3. ¿Cómo se define una variable con un tipo tomado de la base de datos?
4. ¿Cuál es la forma de los diferentes tipos de asignación? (Son tres)
D. Cursores
1. ¿Qué es un cursor implícito? ¿Para qué sirve?
Cursores implícitos. Este tipo de cursores se utiliza para operaciones SELECT INTO. Se usan
cuando la consulta devuelve un único registro.
2. ¿Qué es un cursor explícito? ¿Para qué sirve?
Son los cursores que son declarados y controlados por el programador. Se utilizan cuando la
consulta devuelve un conjunto de registros. Ocasionalmente también se utilizan en consultas
que devuelven un único registro por razones de eficiencia. Son más rápidos.
3. ¿Cuáles son las excepciones propias de uso de estos cursores?
NO_DATA_FOUND
TOO_MANY_ROWS
E. Modularidad
1. ¿Cuál es la estructura general de un bloque PL/SQL?
[DECLARE Declaracion de variables]
BEGIN
Sentencias sql y PL/SQL
[EXCEPTION Manejadores de excepciones]
END;
2. ¿Para qué sirven las diferentes estructuras modulares? (bloque anónimo,
procedimiento, función y disparador)
Anonimos: Se construyen de forma dinámica y se ejecutan una sola vez.
Procedimiento y funcion: Subprogramas que no suelen cambar después de su construcción y se
ejecutan multiples veces mediante una llamada “call”.
Triggers: Son bloques con nombre que tambien se almacenan en la BD. Tampoco suelen cambiar
después de su construcción y se ejecutan varias veces. Se ejecutan de forma automática ante
algún suceso de disparo, que será una orden del lenguaje de manipulación de datos (INSERT,
UPDATE, DELETE) que se ejecuta sobre una tabla de la BD.
PRACTICANDO. Venta
En este auto-estudio vamos a implementar un caso de uso.
Consultar especificaciones de entrega en el vínculo moodle: Tuplas, restricciones
procedimientales y automatización
CASOS DE USO
Registrar una venta(Ad,Co,El)
Ad
El número de la orden, la fecha de orden, las direcciones de cobro y envío, el subtotal,
el valor de imputestos y el valor de envío se generan automáticamente.
La dirección de cobro es la oficina principal del cliente. Si el cliente no tiene
dirección de envío se envía también a la oficina principal.
Si no se indica la fecha de vencimiento se consideran 30 días después de la fecha de
orden.
Si no se indica el porcentaje de impuestos se asume un 12.5 %.
El número del detalle de venta y el precio unitario(precio de lista) se generan
automáticamente.
El valor de descuento máximo es de 10%. Si no se indica nada, se asume que el descuento es
0.
El
Las facturas no se pueden eliminar
Mo
Los únicos datos que se pueden modificar son el valor del flete. la fecha de envío.
Regla de negocio
Si se elimina un producto las ventas se mantienen con codigo de producto desconocido.
A. Adicionando restricciones declarativas.
Para proteger la base de datos vamos a implementar las restricciones que se pueden
garantizar usando restricciones declarativas.
1. Definir las restricciones declarativas
(Atributos, Tuplas)
2. Validar con casos significativos la protección de la base de datos, adicione
comentarios.
(AtributosOK, AtributosNoOK, TuplasOK, TuplasNoOK)
B. Adicionando acciones de referencia
Para proteger la base de datos vamos a implementar las acciones de referencia
necesarias para el caso de uso.
1. Definir las acciones de referencia
(Deben eliminar y volver a crear las FK afectadas)
(Acciones)
2. Validar con casos significativos las condiciones definidas
(AccionesOK)
C. Adicionando disparadores
Para preparar las acciones asociadas a los diferentes casos de uso vamos a
implementar algunos disparadores (CRUD).
Use los siguientes nombres para los disparadores que necesite.
Disparadores : Ad_HEADER, Mo_HEADER, El_HEADER
Ad_DETAIL,Mo_DETAIL,El_DETAIL
Para cada uno de ellos:
1. Escriba las instrucciones necesarias para crear y eliminar el disparador
( Disparadores – Xdisparadores )
2. Escriba 3 instrucciones que permitan probar la actualización de la base de datos
haciendo uso de cada disparador, cuando sea pertinente.
( DisparadoresOK )
3. Escriban 3 instrucciones por disparador para validar que protege la base de
datos impidiendo que se actualice, cuando sea pertinente.