Banco de Dados II IMPLEMENTAÇÃO E OPTIMIZAÇÃO DE BANCOS DE DADOS

Slides:



Advertisements
Presentaciones similares
Base de Datos Orientada a Objetos (OODBMS)
Advertisements

UNIVERSIDAD NACIONAL DE LOJA Carrera de Ingeniería en Sistemas
PL/SQL Francisco Moreno Universidad Nacional. Funciones Si un procedimiento tiene solo un parámetro de salida, se puede remplazar por una función y esta.
Maestría en Bioinformática Bases de Datos y Sistemas de Información Otros objetos de Base de Datos Ing. Alfonso Vicente, PMP
PL/SQL Francisco Moreno Universidad Nacional.
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
UNITA - IBARRA BLOQUES PL-SQL SUBPROGRAMAS Paulina Guevara.
Diseño Físico Procedimientos Almacenados y Disparadores (Triggers)
PL/SQL Francisco Moreno Universidad Nacional.
1 BD Activas: Motivación zLos SGBD convencionales son “pasivos”. Sólo ejecutan preguntas o transacciones realizadas por los usuarios o por los programas.
PL/SQL Francisco Moreno Universidad Nacional. Introducción al PL/SQL ¿Por qué PL/SQL? A pesar de que SQL tiene mecanismos de control condicional (cláusula.
Bases de Datos Relacionales
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
PL/SQL Francisco Moreno Universidad Nacional.
PL/SQL Francisco Moreno Universidad Nacional.
Procedimientos Almacenados Funciones Agregadas
UNITA - IBARRA TRIGGERS
Lenguaje Estructurado de Consultas
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
TRIGGERS EN ORACLE 8 J. Iriarte S. España
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
Triggers(Disparadores)
Estructura general de un programa en el servidor de Bases de Datos.
INSTRUCCIONES Elaboración de la Presentación:
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Cursores SQL RECORRER CON UN CONJUNTO DE RESULTADOS RECORRER CON UN CONJUNTO DE RESULTADOS.
CONSTRUCCIÓN DE BASES DE DATOS
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
PUESTO-TRABAJO (Código-Puesto, Empresa, Sueldo, DNI- Contratado) TITULADO (DNI-Titulado, Nombre, Apellidos, Dirección) TITULACION (Iden-Titulación, Nombre,
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo SQL en PL/SQL Conceptos básicos.
MULTIPLAN Multiplan es la práctica en grupo que hemos tenido que realizar durante el curso según las especificaciones dadas en la asignatura.
Bases de Datos SQL.
AA Gerardo Morgade Donato AA Isnel Leyva Herbella.
Lenguaje Estructurado de Consultas
5 Paquetes ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Apuntes PL-SQL Triggers II. Tipos de datos compuestos Registros PL/SQL: Son similares a un tipo struct en C o a un tipo Registro en otros 3GL. Se componen.
6 Triggers ORACLE - II Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Apuntes PL-SQL Triggers I.
3 Cursores ORACLE Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega.
Base de Datos I – Ing. Mary Carlota Bernal J.  Cada instrucción PL/SQL tiene asociado internamente un cursor  Los cursores en PL/SQL pueden ser de dos.
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
6 Triggers ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
6 Triggers ORACLE - III Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Crear una tabla (create table - sp_tables - sp_columns - drop table) Para ver las tablas existentes creadas por los usuarios en una base de datos usamos.
GESTOR DE BASE DE DATOS CARRERA: COMPUTACIÓN E INFORMÁTICA CURSO: TALLER DE SISTEMAS I DOCENTE: ING. JOSÉ EDUARDO QUISPE TAIPE CICLO: QUINTO.
Administración de Sistemas Gestores de Bases de Datos.
Conferencia 8. Lenguaje PL/pgSQL.
PL/SQL Francisco Moreno Universidad Nacional.
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle
Lenguaje de manipulación de datos
Tipos de datos en MYSQL YEAR: Año. “YYYY” o “YY”
BASE DE DATOS IUPSM CLASE PRACTICA. PROF. ING. JOSE L GUZMAN H.
Stored Procedures Firebird.
Implementação e Optimização de Bancos de dados
SQL: structured Query Language
UN DISPARADOR O TRIGGER es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Es una rutina autónoma.
5. SQL Procedural.
SQL Lenguaje de Consulta Estructurado
Orígenes Funciones Condicionales
Oracle Pl/SQl Developer – Nivel 1
BD Activas: Motivación
Números Índices. Índices simples fazem comparação entre duas épocas - época atual e época base - para um único produto. 1. Relativo de preço Denotando.
TRIGGERS VISTAS Y PROCESOS Ing. Fabiola Nilda Perez Oliver
DOS – Sistema operacional de disco Marizete Aparecida da Silva Raquel Patrícia de Oliveira.
El SQL es el lenguaje estándar ANSI/ISO de definición, manipulación y control de bases de datos relacionales. La sigla que se conoce como SQL corresponde.
Transcripción de la presentación:

Banco de Dados II IMPLEMENTAÇÃO E OPTIMIZAÇÃO DE BANCOS DE DADOS Objetivo: Identificar índices en una BD para disminuir el tiempo de respuesta del sistema. Características y aplicación de los triggers y cursores. MsC. Leoder Alemañy Socarrás

PL/PgSql É uma linguagem procedural carregável desenvolvida para o sistema de banco de dados PostgreSQL. Criar procedimentos de funções e de gatilhos; Adicionar estruturas de controle à linguagem SQL; Realizar processamentos complexos; Herdar todos os tipos de dado, funções e operadores definidos pelo usuário; Hago una intro de lo que han visto hasta el momento (funciones), refresco un poco los conocimientos hasta ahora de pl/pgsql pues en esta conferencia vamos a ver como resolver estas situaciones planteadas anteriormente pasor ende el objetivo de la clase es indentificar...

PL/PgSql CREATE FUNCTION populate() RETURNS integer AS $$ DECLARE -- declarações BEGIN PERFORM minha_funcao(); END; $$ LANGUAGE plpgsql; Hago una intro de lo que han visto hasta el momento (funciones), refresco un poco los conocimientos hasta ahora de pl/pgsql pues en esta conferencia vamos a ver como resolver estas situaciones planteadas anteriormente pasor ende el objetivo de la clase es indentificar...

Preguntas ¿Como conseguimos que se executem funções e procedimentos dentro do banco de dados sem que seja o utente quem os mande a executar? ¿Como podemos tratar filas de maneira independentes no resultado de uma consulta? Hago una intro de lo que han visto hasta el momento (funciones), refresco un poco los conocimientos hasta ahora de pl/pgsql pues en esta conferencia vamos a ver como resolver estas situaciones planteadas anteriormente pasor ende el objetivo de la clase es indentificar...

Objetivos: Identificar as estruturas e elementos que compõem os triggers e cursores. po

Características e aplicativo dos trigger e cursores. Contenido: Características e aplicativo dos trigger e cursores. Estruturas e elementos necessários para sua definição.

Manuales de referencia de PostgreSQL. Bibliografía: Manuales de referencia de PostgreSQL. PostgreSQL Documentation. The PostgreSQL Global Development Group.

Quando se elimine determinado registro que guarde um relatório. Introducción Em ocasiões o utente precisa que a BD possa executar tarefas sem que ele as mande a executar. Exemplo: Quando se elimine determinado registro que guarde um relatório.

Trigger É uma Acção(função) que se executa de forma automática quando se cumpre uma condição estabelecida ao realizar uma operação sobre o banco de dados. Que começa quando um evento específico ocorre sobre uma tabela específica.

¿Quando entra em vigor um trigger? Dantes ou depois de uma inserção (INSERT). Dantes ou depois de uma actualização (UPDATE). Dantes ou depois de uma eliminação (DELETE). Dantes ou depois de uma eliminação(TRUNCATE) [postgresql 8.4]. Poner ejemplo del uso (auditoria de tablas)

Definição dos triggers: A definição da função associada ao trigger é a que executa a acção em resposta ao evento(INSERT, UPDATE, DELETE). A definição formal de trigger indicará: a) De que tabela esperar-se os eventos. b) A que tipo de evento responder-se. c) Llamada à função trigger. Poner ejemplo del uso (auditoria de tablas)

[ RETURNS trigger ] AS $$ DECLARE Variable; BEGIN sentencia; CREATE OR REPLACE FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [ RETURNS trigger ] AS $$ DECLARE Variable; BEGIN sentencia; Return null-- Return new o Return old END; $$ LANGUAGE ‘plpgsql’; Poner ejemplo del uso (auditoria de tablas)

Trigger CREATE OR REPLACE TRIGGER nombre_trigger [ AFTER | BEFORE ] [ INSERT | UPDATE | DELETE ] ON nombre_tabla FOR EACH [ROW | STATEMENT] EXECUTE PROCEDURE function; Poner ejemplo del uso (auditoria de tablas)

Trigger CREATE {OR REPLACE} TRIGGER nombre_disp. [BEFORE|AFTER] [DELETE|INSERT|UPDATE {OF colunas}] [ OR [DELETE|INSERT|UPDATE {OF colunas}]...] ON tablela [FOR EACH ROW [WHEN condição de disparo]] [DECLARE] -- Declaração de variáveis locais BEGIN -- Instruções de execução [EXCEPTION] -- Instruções de execução de excepção END; Poner ejemplo del uso (auditoria de tablas)

Variables especiales dos trigger NEW: aloja os novos valores da tupla que se está a modificar. OLD: aloja os valores antigos da tupla que se está a modificar. TG_OP: Variable tipo string que indica qué tipo de evento está ocurrendo (INSERT, UPDATE, DELETE). EI: otras variables especiales (documentación de postgresql) Poner ejemplo del uso (auditoria de tablas)

Ejemplo

IF NEW.genero = 'Bolero' THEN NEW.autor:='Ricardo Montes'; end if; Ejemplo CREATE OR REPLACE FUNCTION "public"."FAutor" () RETURNS trigger AS $body$ BEGIN IF NEW.genero = 'Bolero' THEN NEW.autor:='Ricardo Montes'; end if; Return NEW; END; LANGUAGE 'plpgsql';

CREATE TRIGGER "TAutor" BEFORE INSERT OR UPDATE Definición del Trigger, usando la Función antes definida. CREATE TRIGGER "TAutor" BEFORE INSERT OR UPDATE ON "public"."canciones" FOR EACH ROW EXECUTE PROCEDURE "public"."FAutor"();

Ejecución automática del Trigger INSERT INTO canciones (idcancion,nombre_cancion,genero) VALUES (495017, 'Hasta que te conocí', 'Bolero'); O Trigger executará a função FAutor que completa o último campo da Tabela Canções, com o nome do autor.

¿Que passaria se se retorna NULL ou OLD a função trigger? Pergunta!!! ¿Que passaria se se retorna NULL ou OLD a função trigger?

Trigger que permite Proteger os dados de uma tabela. Ejemplo Trigger que permite Proteger os dados de uma tabela.

Criamos uma Função que devolva NULL Ejemplo Criamos uma Função que devolva NULL CREATE OR REPLACE FUNCTION "public"."FProteger_Datos" () RETURNS trigger AS $body$ BEGIN Return NULL; END; LANGUAGE 'plpgsql';

CREATE TRIGGER "canciones_TProteger_Datos" BEFORE DELETE Ejemplo Criámos um Trigger que se executa dantes da operação “Eliminar” da Tabela em questão e mandamos a executar a Função “FProteger_Dados” CREATE TRIGGER "canciones_TProteger_Datos" BEFORE DELETE ON "public"."canciones" FOR EACH ROW EXECUTE PROCEDURE "public"."FProteger_Datos"();

A operação DELETE sobre a tabela Canções não terá efeito. Ejemplo A operação DELETE sobre a tabela Canções não terá efeito. DELETE FROM Canciones; As Funções utilizadas por disparadores que se executam uma vez por fila(row-level) e DANTES de executar o comando SQL que o lançou, podem: retornar NULL para saltar-se a operação na fila afectada.

Ejemplo Precisa-se levar um registro de todas as mudanças de preço de venda em a tabela PRODUCTO (producto_id, nombre, precio, tipo, cantidad, precio_compra, precio_venta). PRODUCTO_ACTUALIZADO (producto_id, nombre, precio_anterior, precio_actualizado). Poner ejemplo del uso (auditoria de tablas)

Ejemplo CREATE FUNCTION producto_actualizado_tri() RETURN trigger AS $$ BEGIN IF (TG_OP = 'UPDATE') THEN IF (NEW.precio_venta<>OLD.precio_venta) THEN INSERT INTO PRODUCTO_ACTUALIZADO VALUES (OLD.producto_id, OLD.nombre, OLD.precio_venta, NEW.precio_venta); END IF; RETURN NULL; END; $$ Language 'plpgsql'; Poner ejemplo del uso (auditoria de tablas)

Ejemplo Agora se cria o trigger que chamará a função anterior: CREATE TRIGGER actualizar_producto AFTER UPDATE ON PRODUCTO FOR EACH EXECUTE PROCEDURE producto_actualizado_tri(); Poner ejemplo del uso (auditoria de tablas)

O Trigger executará a função produto_actualizado_tri, depois de actualizar um valor do precio_venta na tabela produto e insere os valores na tabela PRODUTO_ACTUALIZADO.

Estudio Independiente Estudiar como se opera sobre el evento TRUNCATE (cap. sobre trigger en plpgsql, documentación de postgreSQL) Conclusiones

Ventajas y Desventajas Permite executar rotinas sem necessidade que o utentes as invoque. Pode-se utilizar uma mesma função trigger desde diferentes triggers. Podem ser um mecanismo de segurança nas BD. Desventajas: Nunca se pode chamar directamente. Põem lento o servidor quando se executam sobre muitas tuplas. Meter TPI aquí en el asunto de los DBA y sus responsabilidades en una BD. Meter ejemplo de akademos si hacemos un trigger qye si viene tan nombre con 2 le ponemos 3. eso es fraude informatico. Responsable y comprometido

Modificar o valor do décimo registro de uma consulta determinada. Cursores Em ocasiões precisa-se operar sobre um registro determinado do resultado de uma consulta. Exemplo: Modificar o valor do décimo registro de uma consulta determinada. Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

Cursores Representam consultas SELECT de SQL que se podem operar os registros de modo independente. Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

Pasos Cursores Declarar o cursor Abrir o cursor. Depois de abrir o cursor, o ponteiro do cursor assinalará à primeira fila(se existe). Processar o cursor. FETCH obter informação do cursor até que chegue ao final. MOVE permite mover a um lugar determinado do cursor. Fechar o cursor. Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

DECLARE Nome CURSOR FOR Select…; Nome refcursor; Cursores Declarar el Cursor DECLARE Nome CURSOR FOR Select…; Nome refcursor; Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

OPEN nombre_cursor for select … Cursores Abrir cursor OPEN nombre_cursor OPEN nombre_cursor for select … Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

FETCH cursor INTO listaDeVariables FETCH LAST FROM curs3 INTO x; Cursores A sentença FETCH é a encarregada de percorrer o cursor e ir processando os valores do mesmo: retorna o valor e move o ponteiro do cursor. FETCH cursor INTO listaDeVariables FETCH LAST FROM curs3 INTO x; FETCH RELATIVE -2 FROM curs4 INTO x; Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

Cursores Open cursorProvincias LOOP FETCH cursorProvincias INTO v_nombre EXIT WHEN... --aquí se pondría la condición de salida... --instrucciones de proceso de los datos del cursor END LOOP; Close cursorProvincias Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

Cursores declare temp cursor for select empid from empleado; var integer; Begin open temp; loop fetch temp into var; EXIT WHEN not found ; if var> 4 then return next var; end if; end loop; Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

MOVE RELATIVE -2 FROM curs3; MOVE FORWARD 2 FROM curs3; Cursores MOVE 4 from curs1; MOVE LAST FROM curs3; MOVE RELATIVE -2 FROM curs3; MOVE FORWARD 2 FROM curs3; ...FETCH curs3 INTO var1; 

Cursores con parametros DECLARE cur_personas CURSOR (dep NUMBER, pue VARCHAR2 (20)) FOR SELECT nombre, apellidos FROM empleados WHERE departamento=dep AND puesto=pue; BEGIN OPEN cur_personas (12,’administrativo’); ..... CLOSE cur_personas; End; Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

Permitem situar-se em filas específicas do conjunto de resultados. Cursores Ventajas: Permitem situar-se em filas específicas do conjunto de resultados. Recuperam uma fila ou bloco de filas da posição atual no conjunto de resultados. Podem utilizar-se em funções. Hago una explicación de la diferencias con un select normal , de cómo las aplicaciones en ocasiones no necesitan el resultado completo si no solo una parte del resultado y ahí entra a jugar los cursores.

Cursores: Desventajas Reservam recursos no servidor, como por exemplo processos, armazenamento temporário, etc. Se um cursor não se fecha de maneira correta, o recurso não será libertado até que a sessão SQL (conexão) seja fechada.

¿Sobre que evento se pode definir um trigger? Conclusiones ¿Sobre que evento se pode definir um trigger? ¿Em quantos passos define-se um trigger em PostgreSQL? ¿Quais são as operações que se realizam sobre os cursores? ¿Sina fecham-se correctamente os cursores pode trazer consumo de cor desnecessário? Perguntas que respondan al cumplimiento del objetivo : Identificar las estructuras y elementos que componen los triggers y cursores