Acceso A La Informacion Con Complementacion de Vistas

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

U.T.

2 ACCESO A LA INFORMACIÓN CON IMPLEMENTACIÓN DE VISTAS

1. INTRODUCCIÓN A LAS VISTAS

Una vista ofrece la posibilidad de almacenar una consulta predefinida como un objeto
en una base de datos para usarse posteriormente. Las tablas consultadas en una vista
se denominan tablas base. Salvo algunas excepciones, es posible dar nombre a
cualquier instrucción SELECT y almacenarla como una vista.
Algunos ejemplos habituales de vistas son los siguientes:

1. Un subconjunto de las filas o columnas de una tabla base.


2. Una unión de dos o más tablas base.
3. Una combinación de dos o más tablas base.
4. Un resumen estadístico de una tabla base.
5. Un subconjunto de otra vista o alguna combinación de vistas y tablas base.

2. VENTAJAS DE LAS VISTAS

. Centrar el interés en los datos de los usuarios


Las vistas crean un entorno controlado que permite el acceso a datos específicos
mientras se oculta el resto. Los datos innecesarios, confidenciales o inadecuados
pueden quedar fuera de la vista. Los usuarios pueden tratar la presentación de los
datos en una vista de forma similar a como lo hacen en una tabla. Además, con los
permisos adecuados y algunas restricciones, también pueden modificar los datos que
muestra la vista.

. Enmascarar la complejidad de la base de datos


Las vistas ocultan al usuario la complejidad del diseño de la base de datos.

. Simplificar la administración de los permisos de usuario


En lugar de conceder a los usuarios permisos para consultar columnas específicas de
las tablas base, los propietarios de las bases de datos pueden conceder permisos para
que el usuario sólo pueda consultar los datos a través de vistas. Además, de esta forma
se protegen los cambios en el diseño de las tablas base subyacentes. Los usuarios
pueden continuar consultando la vista sin interrupciones.

. Mejorar el rendimiento
Las vistas le permiten almacenar los resultados de consultas complejas. Otras
consultas pueden utilizar estos resultados resumidos. Las vistas también permiten
dividir datos. Es posible colocar divisiones individuales en equipos distintos.

. Organizar los datos para exportarse a otras aplicaciones


Puede crear una vista basada en una consulta compleja que combine dos o más tablas
y, a continuación, exportar los datos a otra aplicación para analizarlos.
3. CREACIÓN DE UNA VISTA EN MySQL

Sintaxis de CREATE VIEW

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]


VIEW nombre_vista [(columnas)]
AS sentencia_select
[WITH [CASCADED | LOCAL] CHECK OPTION]

Esta sentencia crea una vista nueva o reemplaza una existente si se incluye la cláusula
OR REPLACE. La sentencia_select es una sentencia SELECT que proporciona la
definición de la vista. Puede estar dirigida a tablas de la base o a otras vistas.

Se requiere que posea el permiso CREATE VIEW para la vista, y algún privilegio en cada
columna seleccionada por la sentencia SELECT. Para columnas incluidas en otra parte
de la sentencia SELECT debe poseer el privilegio SELECT. Si está presente la cláusula OR
REPLACE, también deberá tenerse el privilegio DELETE para la vista.

Toda vista pertenece a una base de datos. Por defecto, las vistas se crean en la base de
datos actual. Pera crear una vista en una base de datos específica, indíquela con
base_de_datos.nombre_vista al momento de crearla.

Las tablas y las vistas comparten el mismo espacio de nombres en la base de datos, por
eso, una base de datos no puede contener una tabla y una vista con el mismo nombre.

Al igual que las tablas, las vistas no pueden tener nombres de columnas duplicados.
Por defecto, los nombres de las columnas devueltos por la sentencia SELECT se usan
para las columnas de la vista. Para dar explícitamente un nombre a las columnas de la
vista utilice la cláusula columnas para indicar una lista de nombres separados con
comas. La cantidad de nombres indicados en columnas debe ser igual a la cantidad de
columnas devueltas por la sentencia SELECT.

Las columnas devueltas por la sentencia SELECT pueden ser simples referencias a
columnas de la tabla, pero también pueden ser expresiones conteniendo funciones,
constantes, operadores, etc.

Los nombres de tablas o vistas sin calificar en la sentencia SELECT se interpretan como
pertenecientes a la base de datos actual. Una vista puede hacer referencia a tablas o
vistas en otras bases de datos precediendo el nombre de la tabla o vista con el nombre
de la base de datos apropiada.

Las vistas pueden crearse a partir de varios tipos de sentencias SELECT. Pueden hacer
referencia a tablas o a otras vistas. Pueden usar combinaciones, UNION, y
subconsultas. El SELECT inclusive no necesita hacer referencia a otras tablas.
La definición de una vista está sujeta a las siguientes limitaciones:

 La sentencia SELECT no puede contener una subconsulta en su cláusula FROM.


 La sentencia SELECT no puede hacer referencia a variables del sistema o del
usuario.
 La sentencia SELECT no puede hacer referencia a parámetros de sentencia
preparados.
 Dentro de una rutina almacenada, la definición no puede hacer referencia a
parámetros de la rutina o a variables locales.
 Cualquier tabla o vista referenciada por la definición debe existir. Sin embargo,
es posible que después de crear una vista, se elimine alguna tabla o vista a la
que se hace referencia. Para comprobar la definición de una vista en busca de
problemas de este tipo, utilice la sentencia CHECK TABLE.
 La definición no puede hacer referencia a una tabla TEMPORARY, y tampoco se
puede crear una vista TEMPORARY.
 Las tablas mencionadas en la definición de la vista deben existir siempre.
 No se puede asociar un disparador con una vista.

En la definición de una vista está permitido ORDER BY, pero es ignorado si se


seleccionan columnas de una vista que tiene su propio ORDER BY.

Con respecto a otras opciones o cláusulas incluidas en la definición, las mismas se


agregan a las opciones o cláusulas de cualquier sentencia que haga referencia a la vista
creada, pero el efecto es indefinido. Por ejemplo, si la definición de una vista incluye
una cláusula LIMIT, y se hace una selección desde la vista utilizando una sentencia que
tiene su propia cláusula LIMIT, no está definido cuál se aplicará. El mismo principio se
extiende a otras opciones como ALL, DISTINCT.

La cláusula opcional ALGORITHM es una extensión de MySQL al SQL estándar.


ALGORITHM puede tomar tres valores: MERGE, TEMPTABLE, o UNDEFINED. El
algoritmo por defecto es UNDEFINED si no se encuentra presente la cláusula
ALGORITHM. El algoritmo afecta la manera en que MySQL procesa la vista.

Para MERGE, el texto de una sentencia que haga referencia a la vista y la definición de
la vista son mezclados de forma que parte de la definición de la vista reemplaza las
partes correspondientes de la consulta.

Para TEMPTABLE, los resultados devueltos por la vista son colocados en una tabla
temporal, la cual es luego utilizada para ejecutar la sentencia.

Para UNDEFINED, MySQL determina el algoritmo que utilizará. En ese caso se prefiere
MERGE por sobre TEMPTABLE si es posible, ya que MERGE por lo general es más
eficiente y porque la vista no puede ser actualizable si se emplea una tabla temporal.

Una razón para elegir explícitamente TEMPTABLE es que los bloqueos en tablas
subyacentes pueden ser liberados después que la tabla temporal fue creada, y antes
de que sea usada para terminar el procesamiento de la sentencia. Esto podría resultar
en una liberación del bloqueo más rápida que en el algoritmo MERGE, de modo que
otros clientes que utilicen la vista no estarán bloqueados mucho tiempo.

Algunas vistas son actualizables. Esto significa que se las puede emplear en sentencias
como UPDATE, DELETE, o INSERT para actualizar el contenido de la tabla subyacente.
Para que una vista sea actualizable, debe haber una relación uno-a-uno entre los
registros de la vista y los registros de la tabla subyacente. Hay otros elementos que
impiden que una vista sea actualizable. Más específicamente, una vista no será
actualizable si contiene:

 Funciones agregadas (SUM(), MIN(), MAX(), COUNT(), etcétera)


 DISTINCT
 GROUP BY
 HAVING
 UNION o UNION ALL
 Una subconsulta en la lista de columnas del SELECT
 Join
 Una vista no actualizable en la cláusula FROM
 Una subconsulta en la cláusula WHERE que hace referencia a una tabla en la
cláusula FROM
 Hace referencia solamente a valores literales (en tal caso no hay una) tabla
subyacenta para actualizar.
 ALGORITHM = TEMPTABLE (utilizar una tabla temporal siempre resulta en una
vista no actualizable)

Con respecto a la posibilidad de agregar registros mediante sentencias INSERT, es


necesario que las columnas de la vista actualizable también cumplan los siguientes
requisitos adicionales:

 No debe haber nombres duplicados entre las columnas de la vista.


 La vista debe contemplar todas las columnas de la tabla en la base de datos que
no tengan indicado un valor por defecto.
 Las columnas de la vista deben ser referencias a columnas simples y no
columnas derivadas. Una columna derivada es una que deriva de una
expresión.

No puede insertar registros en una vista conteniendo una combinación de columnas


simples y derivadas, pero puede actualizarla si actualiza únicamente las columnas no
derivadas

A veces, es posible que una vista compuesta por múltiples tablas sea actualizable,
asumiendo que es procesada con el algoritmo MERGE. Para que esto funcione, la vista
debe usar inner join (no outer join o UNION). Además, solamente puede actualizarse
una tabla de la definición de la vista, de forma que la cláusula SET debe contener
columnas de sólo una tabla de la vista. Las vistas que utilizan UNION ALL no se pueden
actualizar aunque teóricamente fuese posible hacerlo, debido a que en la
implementación se emplean tablas temporales para procesarlas.

En vistas compuestas por múltiples tablas, INSERT funcionará si se aplica sobre una
única tabla. DELETE no está soportado.

La cláusula WITH CHECK OPTION puede utilizarse en una vista actualizable para evitar
inserciones o actualizaciones excepto en los registros en que la cláusula WHERE de la
sentencia_select se evalúe como true.

En la cláusula WITH CHECK OPTION de una vista actualizable, las palabras reservadas
LOCAL y CASCADED determinan el alcance de la verificación cuando la vista está
definida en términos de otras vistas. LOCAL restringe el CHECK OPTION sólo a la vista
que está siendo definida. CASCADED provoca que las vistas subyacentes también sean
verificadas. Si no se indica, el valor por defecto es CASCADED

La sentencia CREATE VIEW fue introducida en MySQL 5.0.1. La cláusula WITH CHECK
OPTION fue implementada en MySQL 5.0.2.

INFORMATION_SCHEMA contiene una tabla VIEWS de la cual puede obtenerse


información sobre los objetos de las vistas.

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]


VIEW nombre_vista [(columnas)]
AS sentencia_select
[WITH [CASCADED | LOCAL] CHECK OPTION]

Esta sentencia modifica la definición de una vista existente.

DROP VIEW [IF EXISTS]


nombre_vista [, nombre_vista] ...
[RESTRICT | CASCADE]

DROP VIEW elimina una o más vistas de la base de datos. Se debe poseer el privilegio
DROP en cada vista a eliminar.

La cláusula IF EXISTS se emplea para evitar que ocurra un error por intentar eliminar
una vista inexistente. RESTRICT y CASCADE son ignoradas.

SHOW CREATE VIEW nombre_vista

Muestra la sentencia CREATE VIEW que se utilizó para crear la vista.

También podría gustarte