Programación con acceso a base de datos
Bases de Datos 2 - Tecnologo de InformaticaOutline
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
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
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.
Desajuste de impedancia
Impedance MismatchTé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 unenlace (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.
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.
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
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
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
SQL incrustado
Incrustando comandos de BD en lengujes de propósito general.
Las sentencias de BD sonincrustadas (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 (lenguaje C)SQL incrustado
Embedded SQL (lenguaje C)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
SQL incrustado
SQLJ (lenguaje Java)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
Biblioteca de funciones
Function CallsUso de una biblioteca de funciones de BD.
Se ofrece unaAPI (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 unabiblioteca de funciones: funciones para conectar con la BD, enviar comandos SQL al servidor de BD, extraer tuplas y/o cargar en variales, etc.
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 utilizanJDBC drivers provistos por los proveedores de RDBMS.
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
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.
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
Procedimientos y funciones almacenados
Sotred procedures and functionsUn 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
Procedimientos y funciones almacenados
Sotred procedures and functionsPara 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> ;
Procedimientos y funciones almacenados
EjemploVentajas 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 directas que 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.
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
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
Trigger
DisparadoresUn 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.
Trigger
Típico ECALoseventos 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.
Lacondició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.
Lasacciones
Trigger
DisparadoresPara 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.
Trigger
EjemploCREATE TRIGGER Total_salario
AFTERINSERT ON EMPLEADO
FOR EACH ROW
WHEN ( NEW.Dno IS NOT NULL ) UPDATE DEPARTMENTO
SET Total_salario = Total_salario + NEW.Salario WHERE Dno = NEW.Dno;