Programación con acceso a base de datos - Bases de Datos 2 ... · Mapear la estructura de datos...

31
Programación con acceso a base de datos Bases de Datos 2 - Tecnologo de Informatica BD2 - Programación

Transcript of Programación con acceso a base de datos - Bases de Datos 2 ... · Mapear la estructura de datos...

Programación con acceso a base de datosBases de Datos 2 - Tecnologo de Informatica

BD2 - Programación

Outline

1 Acceso a las bases de datos

2 Metodologías de programación de base de datosSQL incrustadoBiblioteca de funcionesDiseño de lenguaje compatible (procedimientosalmacenados)

3 Procedimientos y funciones almacenados

4 Triggers

BD2 - Programación

Outline

1 Acceso a las bases de datos

2 Metodologías de programación de base de datosSQL incrustadoBiblioteca de funcionesDiseño de lenguaje compatible (procedimientosalmacenados)

3 Procedimientos y funciones almacenados

4 Triggers

BD2 - Programación

Acceso a las bases de datos

Interfaz interactiva.Permite ejecutar comandos SQL, comandos propios delproveedor de BD.Comunmente puede ejecutar un fichero de comandos.Es adecuada para la creación del esquema, restricciones opara las consultas temporales u ocasionales.

Programas de aplicación/Aplicaciones de bases de datos.Desarrollados en lenguajes de programación de propósitogeneral: Java, C, COBOL, etc.Cuando sentencias de BD son incluídas en un programa, allenguaje de propósito general se le llama host language yal lenguaje de BD se le llama data sublanguage.También existen database programming languages.

BD2 - Programación

Desajuste de impedanciaImpedance Mismatch

Término que se utiliza para referirse a los problemasderivados de las diferencias entre el modelo de BD y elmodelo del lenguajde de programación.Algunos problemas:

Tipos de datos del lenguaje de programación difieren delos tipos de datos de atributo del modelo de datos. Senecesita un enlace (binding).Mapear la estructura de datos del resultado de la consulta.

El desajuste de impedancia es un problema menor cuandose diseña un lenguaje de programación de BD.

BD2 - Programación

Secuencia típica de interacción

Comunmente se utiliza modelo cliente/servidor.Posible secuencia de interacción:

El programa cliente establece o abre una conexión con elservidor de BD.Establecida la conexión, el programa interactua con la BDemitiendo consultas, actualizaciones y otros comandos deBD.Finalizada la interacción el programa termina o cierra laconexión con la BD.

Un programa puede acceder a varias BD estableciendouna o más conexiones con cada una.

BD2 - Programación

Outline

1 Acceso a las bases de datos

2 Metodologías de programación de base de datosSQL incrustadoBiblioteca de funcionesDiseño de lenguaje compatible (procedimientosalmacenados)

3 Procedimientos y funciones almacenados

4 Triggers

BD2 - Programación

Metodologías de programación de base de datos

Incrustando comandos de BD en lengujes de propósitogeneral. En nuestro caso SQL Inscrustado.

Uso de una biblioteca de funciones de BD.

Diseño de un lenguaje completamente nuevo, llamadosdatabase programming languages

BD2 - Programación

Outline

1 Acceso a las bases de datos

2 Metodologías de programación de base de datosSQL incrustadoBiblioteca de funcionesDiseño de lenguaje compatible (procedimientosalmacenados)

3 Procedimientos y funciones almacenados

4 Triggers

BD2 - Programación

SQL incrustado

Incrustando comandos de BD en lengujes de propósitogeneral.

Las sentencias de BD son incrustadas (embedded) en ellenguaje de programación host pero son indentificadas porun prefijo especial. Ej. EXEC SQL.Se utiliza un precompilador o prepocesador para rastrear,extraer y reemplazar las sentencias.SQL incrustado (Embedded SQL).

BD2 - Programación

SQL incrustadoEmbedded SQL (lenguaje C)

Figura : Elmasri edición 7, fig. 10.1

BD2 - Programación

SQL incrustadoEmbedded SQL (lenguaje C)

Figura : Elmasri edición 7, fig. 10.2

BD2 - Programación

SQL incrustadoSQLJ (lenguaje Java)

SQL puede ser incrustado en un lenguaje deprogramación orientado a objetos, como ser Java.En particular SQLJ es un estandar adoptado por variosproveedores de DBMS para incrustar SQL en Java.Fue desarrollado posteriormente a JDBC (vemos másadelante) y la utiliza.El traductor de SQLJ generalmente convierte sentenciasSQL en código Java, que luego puede ser ejecutado através de la interfaz JDBC

BD2 - Programación

SQL incrustadoSQLJ (lenguaje Java)

Figura : Elmasri edición 7, fig. 10.7

BD2 - Programación

Outline

1 Acceso a las bases de datos

2 Metodologías de programación de base de datosSQL incrustadoBiblioteca de funcionesDiseño de lenguaje compatible (procedimientosalmacenados)

3 Procedimientos y funciones almacenados

4 Triggers

BD2 - Programación

Biblioteca de funcionesFunction Calls

Uso de una biblioteca de funciones de BD.Se ofrece una API (Application Programming Interface)para acceder a la BD desde los programas de aplicación.Esto es, en el lenguaje de programación host se disponede una biblioteca de funciones: funciones para conectarcon la BD, enviar comandos SQL al servidor de BD, extraertuplas y/o cargar en variales, etc.Este enfoque no necesita un preprocesador.

BD2 - Programación

Biblioteca de funcionesDos ejemplos de...

SQL Call Level Interface (SQL/CLI)Es parte del estandar de SQL.Fue desarrollada como estandarización de la libreríaODBC (Open Database Connectivity).ODBC funciona con lenguajes C, C++, C, Visual Basic.

Java Database Connectivity (JDBC)Es una interfaz para acceder a bases de datos desde Java.Soporta ejecución de consultas, actualización de datos,recuperar consultas, obtener metadata, etc.Las aplicaciones utilizan JDBC drivers provistos por losproveedores de RDBMS.

BD2 - Programación

JDBC

Figura : Elmasri edición 7, fig. 10.12BD2 - Programación

Outline

1 Acceso a las bases de datos

2 Metodologías de programación de base de datosSQL incrustadoBiblioteca de funcionesDiseño de lenguaje compatible (procedimientosalmacenados)

3 Procedimientos y funciones almacenados

4 Triggers

BD2 - Programación

Diseño de lenguaje compatible

Diseño de un lenguaje completamente nuevo.Se diseña un lenguaje de programación de BD compatiblecon el modelo de BD y el lenguaje de consulta.El estandar SQL define el lenguaje SQL/PSM(SQL/Persistent Stored Modules).Este soporta sentencias típicas de lenguajes deprogramación: loops, it-then-else, asignaciones, etc.Ejemplo: Oracle PL/SQL.

BD2 - Programación

Outline

1 Acceso a las bases de datos

2 Metodologías de programación de base de datosSQL incrustadoBiblioteca de funcionesDiseño de lenguaje compatible (procedimientosalmacenados)

3 Procedimientos y funciones almacenados

4 Triggers

BD2 - Programación

Procedimientos y funciones almacenadosSotred procedures and functions

Un procedimiento es un programa dentro de la base dedatos que ejecuta una acción o conjunto de accionesespecificas.Un procedimiento tiene un nombre, un conjunto deparámetros (opcional) y un bloque de código.El standard SQL se refiere a estos utilizando el términoPersistent Stored Modules.SQL/PSM es la parte del estandar de SQL que especificacómo escribir un un procedimiento y funcion almacenados.Muchas BD tiene su propia extensión procedural a SQLque difiere del estandar.

BD2 - Programación

Procedimientos y funciones almacenadosSotred procedures and functions

Para crear un procedimiento almacenado debemosemplear la siguiente sentencia,CREATE PROCEDURE <nombre_proc> (<parametros>)<declaraciones_locales><cuerpo_procedimiento> ;Los parámetros y las declaraciones locales son opcionales.

Para declarar una función es necesario especificar un tipo deretorno,CREATE FUNCTION <nombre_func> (<parametros>)RETURNS <tipo_de_retorno><declaraciones_locales><cuerpo_funcion> ;

BD2 - Programación

Procedimientos y funciones almacenadosEjemplo

Figura : Elmasri edición 7, fig. 10.14

BD2 - Programación

Ventajas de usar procedimientos almacenados

Compilación: La primera vez que se invoca unprocedimiento almacenado, el motor lo compila y a partirde ahí, se sigue usando la versión compilada del mismo,hasta que se modifique. Esto significa que se tendrá unmejor rendimiento que las consultas directas que usancadenas con las instrucciones , que se compilan cada vezque se invocan.

Automatización: si tenemos un conjunto de instruccionesSQL, las cuales queremos ejecutar de manera ordenada,un SP es la mejor manera de hacerlo.

BD2 - Programación

Ventajas de usar procedimientos almacenados

Administración: cuando realizamos aplicaciones con ungran numero de líneas de código, y queremos hacercambios, solo implica modificar un SP y no toda laaplicación, lo que significa solo cambiamos los SP en elservidor y no tenemos que actualizar la aplicación entodos los equipos cliente.Seguridad: una parte importante es que a los usuarios denuestra aplicación, solo les proporcionamos los permisospara ejecutar los procedimientos almacenados y no elacceso a todos los objetos de la base.Programabilidad: Los SP admiten el uso de variables yestructuras de control como IF, Bucles, Case, etc. ademásdel manejo de transacción y permite controlarexcepciones.

BD2 - Programación

Outline

1 Acceso a las bases de datos

2 Metodologías de programación de base de datosSQL incrustadoBiblioteca de funcionesDiseño de lenguaje compatible (procedimientosalmacenados)

3 Procedimientos y funciones almacenados

4 Triggers

BD2 - Programación

TriggerDisparadores

Un trigger/disparador es un procedimiento que esejecutado automáticamente por el sistema como un efectocolateral de una modificación de la BD.Los triggers fueron incorporados en el estandar SQL:1999.Permiten especificar reglas activas (active rules).

Utilizadas en Bases de Datos Activas (active databases).El modelo que utilizado para especificar reglas de BDactivas se denomina modelo event-condition-action (ECA).Un trigger típico es considerado o llamado un ECA.

BD2 - Programación

TriggerTípico ECA

Los eventos pueden ser de inserción (INSERT),actualización (UPDATE), borrado (DELETE) ocombinación de estos.

Se especifican luego de las keyword BEFORE o AFTER.La condición determina cuando la regla de acciones debeser ejecutado

Una vez que se ha producido el evento disparador, lacondición podrá ser evaluada.Es opcional. Si no se especifica, las acciones seránejecutadas una vez que se dispare el evento. Si seespecifica, solo se ejecuta la regla de acciones si lacondición evalua verdadero.Se especifica en la cláusula WHEN del trigger.

Las accionesUsualmente son una secuencia de sentencias SQL.También pueden ser trasacciones de BD o un programaexterno que puede ser ejecutado automáticamente.

BD2 - Programación

TriggerDisparadores

Para diseñar un mecanismo de trigger debemos:Especificar las condiciones y eventos bajo las cuales eltrigger es ejecutado.Especificar las acciones que toman lugar cuando seejecuta el trigger.

Multiples triggers de cada tipo pueden ser creados parauna misma tabla.Todos los que estén activados se ejecutan/disparan.No se garantiza que mantegan un mismo orden deejecución. La cláusula FOLLOWS permite especificar ygarantizar el orden.

BD2 - Programación

TriggerEjemplo

CREATE TRIGGER Total_salarioAFTER INSERT ON EMPLEADOFOR EACH ROWWHEN ( NEW.Dno IS NOT NULL )UPDATE DEPARTMENTOSET Total_salario = Total_salario + NEW.SalarioWHERE Dno = NEW.Dno;

BD2 - Programación