Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Programación con acceso a base de datos Bases 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 datos SQL incrustado Biblioteca de funciones Diseño de lenguaje compatible (procedimientos almacenados) 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 datos SQL incrustado Biblioteca de funciones Diseño de lenguaje compatible (procedimientos almacenados) 3 Procedimientos y funciones almacenados 4 Triggers BD2 - Programación Acceso a las bases de datos Interfaz interactiva. Permite ejecutar comandos SQL, comandos propios del proveedor de BD. Comunmente puede ejecutar un fichero de comandos. Es adecuada para la creación del esquema, restricciones o para las consultas temporales u ocasionales. Programas de aplicación/Aplicaciones de bases de datos. Desarrollados en lenguajes de programación de propósito general: Java, C, COBOL, etc. Cuando sentencias de BD son incluídas en un programa, al lenguaje de propósito general se le llama host language y al lenguaje de BD se le llama data sublanguage. También existen database programming languages. BD2 - Programación Desajuste de impedancia Impedance Mismatch Término que se utiliza para referirse a los problemas derivados de las diferencias entre el modelo de BD y el modelo del lenguajde de programación. Algunos problemas: Tipos de datos del lenguaje de programación difieren de los tipos de datos de atributo del modelo de datos. Se necesita un enlace (binding). Mapear la estructura de datos del resultado de la consulta. El desajuste de impedancia es un problema menor cuando se 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 el servidor de BD. Establecida la conexión, el programa interactua con la BD emitiendo consultas, actualizaciones y otros comandos de BD. Finalizada la interacción el programa termina o cierra la conexión con la BD. Un programa puede acceder a varias BD estableciendo una 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 datos SQL incrustado Biblioteca de funciones Diseño de lenguaje compatible (procedimientos almacenados) 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ósito general. En nuestro caso SQL Inscrustado. Uso de una biblioteca de funciones de BD. Diseño de un lenguaje completamente nuevo, llamados database programming languages BD2 - Programación Outline 1 Acceso a las bases de datos 2 Metodologías de programación de base de datos SQL incrustado Biblioteca de funciones Diseño de lenguaje compatible (procedimientos almacenados) 3 Procedimientos y funciones almacenados 4 Triggers BD2 - Programación SQL incrustado Incrustando comandos de BD en lengujes de propósito general. Las sentencias de BD son incrustadas (embedded) en el lenguaje de programación host pero son indentificadas por un 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 incrustado Embedded SQL (lenguaje C) Figura : Elmasri edición 7, fig. 10.1 BD2 - Programación SQL incrustado Embedded SQL (lenguaje C) Figura : Elmasri edición 7, fig. 10.2 BD2 - Programación SQL incrustado SQLJ (lenguaje Java) SQL puede ser incrustado en un lenguaje de programación orientado a objetos, como ser Java. En particular SQLJ es un estandar adoptado por varios proveedores de DBMS para incrustar SQL en Java. Fue desarrollado posteriormente a JDBC (vemos más adelante) y la utiliza. El traductor de SQLJ generalmente convierte sentencias SQL en código Java, que luego puede ser ejecutado a través de la interfaz JDBC BD2 - Programación SQL incrustado SQLJ (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 datos SQL incrustado Biblioteca de funciones Diseño de lenguaje compatible (procedimientos almacenados) 3 Procedimientos y funciones almacenados 4 Triggers BD2 - Programación Biblioteca de funciones Function 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 dispone de una biblioteca de funciones: funciones para conectar con la BD, enviar comandos SQL al servidor de BD, extraer tuplas y/o cargar en variales, etc. Este enfoque no necesita un preprocesador. BD2 - Programación Biblioteca de funciones Dos ejemplos de... SQL Call Level Interface (SQL/CLI) Es parte del estandar de SQL. Fue desarrollada como estandarización de la librería ODBC (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 los proveedores de RDBMS. BD2 - Programación JDBC Figura : Elmasri edición 7, fig. 10.12 BD2 - Programación Outline 1 Acceso a las bases de datos 2 Metodologías de programación de base de datos SQL incrustado Biblioteca de funciones Diseño de lenguaje compatible (procedimientos almacenados) 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 compatible con 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 de programació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 datos SQL incrustado Biblioteca de funciones Diseño de lenguaje compatible (procedimientos almacenados) 3 Procedimientos y funciones almacenados 4 Triggers BD2 - Programación Procedimientos y funciones almacenados Sotred procedures and functions Un procedimiento es un programa dentro de la base de datos que ejecuta una acción o conjunto de acciones especificas. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código. El standard SQL se refiere a estos utilizando el término Persistent Stored Modules. SQL/PSM es la parte del estandar de SQL que especifica cómo escribir un un procedimiento y funcion almacenados. Muchas BD tiene su propia extensión procedural a SQL que difiere del estandar. BD2 - Programación Procedimientos y funciones almacenados Sotred procedures and functions Para crear un procedimiento almacenado debemos emplear 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 de retorno, CREATE FUNCTION <nombre_func> (<parametros>) RETURNS <tipo_de_retorno> <declaraciones_locales> <cuerpo_funcion> ; BD2 - Programación Procedimientos y funciones almacenados Ejemplo Figura : Elmasri edición 7, fig. 10.14 BD2 - Programación Ventajas de usar procedimientos almacenados Compilación: La primera vez que se invoca un procedimiento almacenado, el motor lo compila y a partir de ahí, se sigue usando la versión compilada del mismo, hasta que se modifique. Esto significa que se tendrá un mejor rendimiento que las consultas directasque usan cadenas con las instrucciones , que se compilan cada vez que se invocan. Automatización: si tenemos un conjunto de instrucciones SQL, 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 un gran numero de líneas de código, y queremos hacer cambios, solo implica modificar un SP y no toda la aplicación, lo que significa solo cambiamos los SP en el servidor y no tenemos que actualizar la aplicación en todos los equipos cliente. Seguridad: una parte importante es que a los usuarios de nuestra aplicación, solo les proporcionamos los permisos para ejecutar los procedimientos almacenados y no el acceso a todos los objetos de la base. Programabilidad: Los SP admiten el uso de variables y estructuras de control como IF, Bucles, Case, etc. además del manejo de transacción y permite controlar excepciones. BD2 - Programación Outline 1 Acceso a las bases de datos 2 Metodologías de programación de base de datos SQL incrustado Biblioteca de funciones Diseño de lenguaje compatible (procedimientos almacenados) 3 Procedimientos y funciones almacenados 4 Triggers BD2 - Programación Trigger Disparadores Un trigger/disparador es un procedimiento que es ejecutado automáticamente por el sistema como un efecto colateral 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 BD activas se denomina modelo event-condition-action (ECA). Un trigger típico es considerado o llamado un ECA. BD2 - Programación Trigger Típico ECA Los eventos pueden ser de inserción (INSERT), actualización (UPDATE), borrado (DELETE) o combinación de estos. Se especifican luego de las keyword BEFORE o AFTER. La condición determina cuando la regla de acciones debe ser ejecutado Una vez que se ha producido el evento disparador, la condición podrá ser evaluada. Es opcional. Si no se especifica, las acciones serán ejecutadas una vez que se dispare el evento. Si se especifica, solo se ejecuta la regla de acciones si la condición evalua verdadero. Se especifica en la cláusula WHEN del trigger. Las acciones Usualmente son una secuencia de sentencias SQL. También pueden ser trasacciones de BD o un programa externo que puede ser ejecutado automáticamente. BD2 - Programación Trigger Disparadores Para diseñar un mecanismo de trigger debemos: Especificar las condiciones y eventos bajo las cuales el trigger es ejecutado. Especificar las acciones que toman lugar cuando se ejecuta el trigger. Multiples triggers de cada tipo pueden ser creados para una misma tabla. Todos los que estén activados se ejecutan/disparan. No se garantiza que mantegan un mismo orden de ejecución. La cláusula FOLLOWS permite especificar y garantizar el orden. BD2 - Programación Trigger Ejemplo CREATE TRIGGER Total_salario AFTER INSERT ON EMPLEADO FOR EACH ROW WHEN ( NEW.Dno IS NOT NULL ) UPDATE DEPARTMENTO SET Total_salario = Total_salario + NEW.Salario WHERE Dno = NEW.Dno; BD2 - Programación Acceso a las bases de datos Metodologías de programación de base de datos SQL incrustado Biblioteca de funciones Diseño de lenguaje compatible (procedimientos almacenados) Procedimientos y funciones almacenados Triggers
Compartir