Você está na página 1de 36

Objetos de la Base de Datos y SQL

Profundizacin en la estructura lgica de una BD ORACLE. Introduccin de nuevos conceptos.


1

Objetivo

Completar el conocimiento de los objetos y conceptos de una BD ORACLE.

Objetos y SQL

Integridad de los datos


Integridad de columnas Integridad referencial Restricciones de validacin

Objetos

Indices
Introduccin Procedimientos, funciones y paquetes Triggers
3

PL/SQL

Integridad

Garantizar que los datos cumplan con un conjunto de reglas del negocio preestablecidas por el diseador No admitir que ingresen datos invlidos a la base

Restriccin de Integridad

Mtodo declarativo que se utiliza para definir las reglas de integridad que deben cumplir los datos.

Tipos de restricciones

NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CASCADE CHECK


6

Tipos de restricciones
NOT NULL: no permite nulos para una columna. UNIQUE: no admite duplicados para una columna.

PRIMARY KEY: define una columna para identificar una fila. ( no admite duplicados ni nulos en la columna. )
FOREIGN KEY: define a una columna dependiente de otra ( comnmente una PRIMARY KEY ). Ambas ( la secundaria y la primaria ) pueden estar en tablas distintas. La tabla donde se define la columna primaria se denomina padre y la tabla dependiente hijo.
7

Tipos de restricciones
DELETE CASCADE: genera un borrado automtico de las filas hijo cuando se borra una fila padre.

CHECK: define reglas ms complejas expresadas con una condicin. Puede incluir cualquier expresin que se evale a TRUE o FALSE. ( inclusive un SELECT ).

Ventajas

Facilidad, no requieren de programacin. Centralizacin. Independencia, no pertenecen a ninguna aplicacin. Productividad, un cambio de regla slo significa cambiar una restriccin. Retroalimentacin inmediata. Flexibilidad, se pueden habilitar/deshabilitar dinmicamente.
9

Integridad y diccionario

dba_constraints user_constraints

dba_cons_columns
user_cons_columns

10

ndices
Objeto que contiene una entrada para cada valor que aparece en la o las columnas indexadas y provee un acceso rpido y directo a las filas.

ndices basados en funciones ndices de dominio

11

ndices y diccionario
dba_indexes user_indexes

12

PL/SQL
Procedural Languaje SQL, adiciona funcionalidad a SQL por incorporar estructuras de control, manipulacin de errores, control transaccional y capacidad de procesar objetos.
Totalmente portable e interoperable Minimiza el trfico en un ambiente de red y el intercambio con la BD Aumenta la seguridad de la BD

13

Entornos
PL/SQL es un motor que interpreta y ejecuta sentencias procedurales. Forma parte de cada aplicacin Cliente y del servidor ORACLE

14

Bloque PL/SQL
Declare declaraciones Begin Cuerpo del bloque Exception Manipuladores de excepciones End;
15

Procedimientos y funciones

Constituyen la forma primaria de rehusar cdigo

Se pueden almacenar en la BD (stored procedures)


Al almacenarlos en la BD comenzamos a hacer programacin en la BD. Los clientes slo hacen un llamado. El motor de la BD es quien interpreta y ejecuta el procedimiento CREATE OR REPLACE PROCEDURE/FUNCTION
16

Procedimientos

Un bloque PL/SQL con nombre que puede aceptar parmetros y retorna valores a travs de estos. ( void function en C, SUBROUTINES en VB, etc) Se invocan como una sentencia independiente, no pueden formar parte de una expresin

17

Funciones

Un bloque PL/SQL con nombre que puede aceptar parmetros y retorna un valor Se invoca en el contexto de alguna expresin: Edad:=getEdad(Ramon);

El tipo de la funcin se deriva del tipo del retorno


Las funciones tambin pueden retornar valores a travs de parmetros
18

Paquetes
Construccin que permite agrupar funciones y procedimientos relacionados. Los paquetes permiten igualmente declarar variables GLOBALES a una sesin.

Tienen dos partes: el encabezamiento (spec) y el cuerpo (body) En la declaracin se admiten variables, tipos de datos y firma de procedimientos pblicos.

19

Encabezamiento
CREATE PACKAGE estudiante IS edad number(2); FUNCTION getEdad ( id VARCHAR2); FUNCTION getEdad ( num NUMBER ); END;

20

Cuerpo
En el cuerpo se admiten declaraciones, bloques ejecutables y manipuladores de excepciones para cada una de las funciones y/o procedimientos declarados en el encabezamiento En el cuerpo se implementan las funciones. Todo lo que se declare en el cuerpo es invisible fuera del paquete

21

Inicializacin
El cuerpo del paquete puede tener una seccin de inicializacin (constructor) que se ejecuta la primera vez que se hace referencia al mismo. Puede utilizarse para inicializar variables GLOBALES dinmicamente en tiempo de ejecucin. Puede existir un paquete sin cuerpo. Las variables GLOBALES se consideran de sesin. Cada sesin mantiene una copia propia. Son persistentes a la sesin.
22

Ventajas
Mejoran el rendimiento pues ante la primera referencia se carga completo en memoria Facilitan la administracin y el mantenimiento

Permiten la implementacin de funciones y procedimientos cuyos parmetros y/o valores de retorno puedan ser de tipos no primitivos

23

Referencia
Los datos pblicos de un paquete se referencian utilizando notacin de punto Paquete.funcin; Paquete.variable;

24

Sobrecarga de mtodos
Se redefinen mtodos a partir de su firma

Function GetCreditos( ne number) return integer; Function GetCreditos return integer;

25

Triggers
Unidad de programa que se ejecuta automticamente cuando ocurre el evento al cual est asociado. Cualquier comando SQL-DML que modifique los datos constituye un evento de trigger.

26

Usos comunes

Generar valores derivados. Prevenir la ejecucin de transacciones invlidas. Control de acceso adicional. Cumplimiento de reglas de integridad sofisticadas. Estadsticas.
27

Partes
Evento: DML: UPDATE, INSERT, DELETE. DDL: CREATE, DROP, ALTER, DATABASE Restriccin: condicin que limita al evento asociado. Accin: determina lo que se hace cuando se dispara.

28

Tipos

Row triggers: Actan sobre cada fila afectada. Statement triggers: Actan slo una vez.

29

Clasificacin
Before triggers: se disparan antes de que se ejecute el evento. After trigger: se disparan despus de la ejecucin del evento.

Instead of: para la implementacin de operaciones DML sobre las vistas

30

Estado

Habilitado: se dispara cuando ocurre el evento. Deshabilitado: no se dispara.

31

Ejemplo1
CREATE TRIGGER t1 AFTER UPDATE OF salario ON personal WHEN DPTO = GPP FOR EACH ROW BEGIN UPDATE estat SET total_filas = total_filas + 1 WHERE tabla = PERSONAL; END;

32

Ejemplo2
CREATE TRIGGER log_errors AFTER SERVERERROR ON DATABASE BEGIN IF (IS_SERVERERROR (1017)) THEN <special processing of logon error> ELSE <log error number> END IF; END;

33

Ejemplo3
CREATE VIEW order_info AS SELECT c.customer_id, c.cust_last_name, c.cust_first_name, o.order_id, o.order_date, o.order_status FROM customers c, orders o WHERE c.customer_id = o.customer
CREATE OR REPLACE TRIGGER order_info_insert INSTEAD OF INSERT ON order_info DECLARE duplicate_info EXCEPTION; PRAGMA EXCEPTION_INIT (duplicate_info, -00001); BEGIN INSERT INTO customers (customer_id, cust_last_name, cust_first_name) VALUES ( :new.customer_id, :new.cust_last_name, :new.cust_first_name); INSERT INTO orders (order_id, order_date, customer_id) VALUES ( :new.order_id, :new.order_date, :new.customer_id); EXCEPTION WHEN duplicate_info THEN RAISE_APPLICATION_ERROR ( num=> -20107, msg=> 'Duplicate customer or order ID'); END order_info_insert;
34

Ejemplo4
CREATE OR REPLACE TRIGGER drop_trigger BEFORE DROP ON hr.SCHEMA BEGIN RAISE_APPLICATION_ERROR ( num => -20000, msg => 'Cannot drop object'); END;

35

Programas y diccionario
dba_source user_source

36