Vistas, Stored Procedures, Triggers & demas yerbas aromaticas


Por Viktor Ml. Justo Vasquez


Views

En teoria de base de datos, una vista es el resultado de una consulta a la data en nuestra base de datos, que ha sido almacenada, que los usuarios pueden utilizar como si fuera un objeto persistente en nuestra BD.

Esta consulta es pre-establecida es guardada en el diccionario de la BD y a diferencia de las tablas ordinarias en una base de datos relacional, un view no forma parte del Esquema fisico:

como es un set de resultado, es una tabla virtual que es generada a partir de la data en el momento en que la vista es requerida.


VENTAJAS DE LAS VISTAS

  • Pueden representar un subset de la data contenida en una tabla; Por lo que, una vista puede limitar el grado de exposicion de las talbas. Un usuario puede tener permiso para consultar la vista pero negarle el permiso para accesar el resto de la tabla.
  • Las vistas puden unir y simplificar multiples tablas en una sola tabla virtual. Eliminando asi la complejidad que nos trae la normalizacion.
  • Pueden actuar como tablas agregadas, donde la consulta agrega y calcula data y muestra el resultado como parte de ella.
  • Las vistas toman muy poco espacio de almacenamiento; la BD solo contiene la definicion de una vista y no una copia de la data que presenta.

Read-only vs. updatable views

Los profesionales en el tema de BD pueden definir las vistas como solo-lectura o actualizables. Si el sistema de BD puede determinar el mapeo inverso del esquema de la vista para el esquema de la tabla con la que esta enlasada, entonces la vista es Actualizable. Estas vistas soportan las operaciones de Insert, Update y Delete.

Las vistas de solo lectura no soportan estas operaciones ya que el DBMS no puede mapear los cambios a las  subyacentes


Updatable views

La data de una tabla subyacente puede ser modificada a traves de una vista en T-SQL mientras las siguientes condiciones se cumplan:

  • Cualquier modificacion, ya sea UPDATE, INSERT y DELETE debe de solamente hacer referencia a una sola tabla subyacente.
  • Las columnas modificadas en el view deben de hacer referencia DIRECTAMENTE a la colimna de la tabla. Lo que quiere decir que no pueden ser computadas y el resultado de funciones de agregacion como (COUNT, SUM...)
  • Las columnas modificadas no son filtradas por un GROUP BY, HAVING o DISTINCT.


Las restricciones anteriores aplican para cualquier subquery en el FROM del query en la definicion de la vista, asi como aplican para la vista en general.

Puesto de manera simple: El motor de la base de datos debe de poder identificar sin duda alguna a que tabla se va a hacer la modificacion.

Si estas restricciones previenen que modifiques la data directamente a travez de una vista, las siguientes opciones se pueden considerar:

  • INSTEAD OF Triggers
  • Partitioned Views

Stored Procedures

Un stored procedure es un grupo de comandos compilados en un solo plan de ejecucion. Visto de otra manera, es una subrutina que esta disponible a aplicaciones en un RDBMS, estos son guardados en el diccionario de la base de datos.

El uso tipico de esto incluye validacione de datos y mecanismos control de control de acceso. Mas alla de esto, los stored procedures pueden consoludar y centralizar logica que fue inicialmente implementada en una aplicacion. procesamiento extensivo o complejo que utiliza varias llamadas a SQL es movido a estos y todas las aplicaciones llaman al stored procedure.

Cabe notar que es posible utilizar store procedures anidados.


Los SP pueden contener variables declaradas para procesar data y cursores que permiten que itere a travez de multiples record. Los metodos de control de flujo que utiliza tipicamente incluyen lo mismo que la programacion comun, digase, IF, WHILE, LOOP, REPEAT, CASE, entre otros. Pueden retornar un set de resultados a partir de un parametro, o modificar el valor de este y devolverlo.


 IF (@QuantityOrdered < (SELECT QuantityOnHand
                  FROM Inventory
                  WHERE PartID = @PartOrdered) )
   BEGIN
   -- SQL statements to update tables and process order.
   END
ELSE
   BEGIN
   -- SELECT statement to retrieve the IDs of alternate items
   -- to suggest as replacements to the customer.
   END

Triggers

Un Trigger de Bases de datos, es un procedimiento que es ejecutado automaticamente en respuesta a ciertos eventos en una tabla o vista. Es usado generalmente para mantener la integridad de la informacion a lo largo de la base de datos.

Title

Loa triggers son comunmente usados para:

  • Auditar Cambios
  •  Mejorar la informacion acerca de los cambios.
  • forzar las reglas de negocio
  • Ejecutar reglas de negocios
  • Replicacion de data


Tambien es posible en algunos sistemas de BD, crear triggers que son disparados al momento de creacion de tablas, login, commit o roll back y estos son usados para auditar el manejo como tal de una BD.

Title

MSQLMS soporta triggers antes, despues o "en vez de" para INSERT, UPDATE o DELETE. Estos pueden ser contra una tabla o una vista, con la salvedad de que las vistas solo pueden ser referenciadas por un trigger INSTEAD OF (en vez de)


deck

By Viktor Ml. Justo Vasquez