stringtranslate.com

Ver (SQL)

En una base de datos , una vista es el conjunto de resultados de una consulta almacenada que presenta una perspectiva limitada de la base de datos a un usuario. [1] Este comando de consulta preestablecido se guarda en el diccionario de datos . A diferencia de las tablas base ordinarias en una base de datos relacional , una vista no forma parte del esquema físico : como conjunto de resultados, es una tabla virtual [1] calculada o cotejada dinámicamente a partir de los datos en la base de datos cuando se solicita el acceso a esa vista. Los cambios aplicados a los datos en una tabla subyacente relevante se reflejan en los datos que se muestran en invocaciones posteriores de la vista.

Las vistas pueden proporcionar ventajas sobre las tablas:

Así como una función (en programación) puede proporcionar abstracción , también lo puede hacer una vista de base de datos. En otro paralelismo con las funciones, los usuarios de bases de datos pueden manipular vistas anidadas, por lo que una vista puede agregar datos de otras vistas. Sin el uso de vistas, la normalización de bases de datos por encima de la segunda forma normal se volvería mucho más difícil. Las vistas pueden facilitar la creación de una descomposición de uniones sin pérdida.

Del mismo modo que las filas de una tabla base carecen de un orden definido, las filas disponibles a través de una vista no aparecen con ningún orden predeterminado. Una vista es una tabla relacional y el modelo relacional define una tabla como un conjunto de filas. Dado que los conjuntos no están ordenados (por definición), tampoco lo están las filas de una vista. Por lo tanto, una cláusula ORDER BY en la definición de la vista no tiene sentido; el estándar SQL ( SQL:2003 ) no permite una cláusula ORDER BY en la subconsulta de un comando CREATE VIEW, del mismo modo que se rechaza en una sentencia CREATE TABLE. Sin embargo, los datos ordenados se pueden obtener de una vista, de la misma manera que cualquier otra tabla, como parte de una sentencia de consulta en esa vista. No obstante, algunos DBMS (como Oracle Database ) no cumplen con esta restricción del estándar SQL.

Vistas de solo lectura vs. vistas actualizables

Las vistas se pueden definir como de solo lectura o actualizables. Si el sistema de base de datos puede determinar la asignación inversa del esquema de la vista al esquema de las tablas base subyacentes, entonces la vista es actualizable. Las operaciones INSERT , UPDATE y DELETE se pueden realizar en vistas actualizables. Las vistas de solo lectura no admiten dichas operaciones porque el DBMS no puede asignar los cambios a las tablas base subyacentes. La actualización de una vista se realiza mediante la conservación de la clave.

Algunos sistemas admiten la definición de activadores INSTEAD OF en las vistas. Esta técnica permite la definición de otra lógica para la ejecución en lugar de una operación de inserción, actualización o eliminación en las vistas. De este modo, los sistemas de bases de datos pueden implementar modificaciones de datos basadas en vistas de solo lectura. Sin embargo, un activador INSTEAD OF no cambia la propiedad de solo lectura o actualizable de la vista en sí.

Vistas materializadas

Varios sistemas de gestión de bases de datos han ampliado las vistas de subconjuntos de datos de solo lectura , en particular las vistas materializadas : vistas preejecutadas, no virtuales, que se utilizan habitualmente en el almacenamiento de datos . Ofrecen una instantánea estática de los datos y pueden incluir datos de fuentes remotas. La precisión de una vista materializada depende de la frecuencia de los mecanismos de activación detrás de sus actualizaciones.

Las vistas materializadas fueron introducidas por Oracle Database , mientras que IBM Db2 proporciona las denominadas "tablas de consulta materializadas" (MQT) para el mismo propósito. Microsoft SQL Server introdujo en su versión 2000 vistas indexadas que solo almacenan un índice separado de la tabla, pero no todos los datos. PostgreSQL implementó las vistas materializadas en su versión 9.3.

Equivalencia

Una vista es equivalente a su consulta de origen. Cuando se ejecutan consultas en vistas, la consulta se modifica. Por ejemplo, si existe una vista denominada accounts_view con el siguiente contenido:

-- cuentas_vista : ------------- SELECT nombre , dinero_recibido , dinero_enviado , ( dinero_recibido - dinero_enviado ) AS saldo , dirección , ... FROM tabla_clientes c JOIN tabla_cuentas a ON a.customer_id = c.customer_id                      

Entonces la aplicación podría ejecutar una consulta simple como:

-- Consulta simple ------------ SELECT nombre , saldo FROM cuentas_vista    

Luego, el RDBMS toma la consulta simple, reemplaza la vista equivalente y luego envía lo siguiente al optimizador de consultas :

-- Consulta preprocesada : ------------------ SELECT nombre , saldo FROM ( SELECT nombre , dinero_recibido , dinero_enviado , ( dinero_recibido - dinero_enviado ) AS saldo , dirección , ... FROM tabla_clientes c JOIN tabla_cuentas a ON a.customer_id = c.customer_id )                         

Luego, el optimizador elimina los campos innecesarios y la complejidad (por ejemplo, no es necesario leer la dirección, ya que la invocación principal no la utiliza) y luego envía la consulta al motor SQL para su procesamiento.

Véase también

Referencias

  1. ^ ab "25.5 Uso de vistas". MySQL . Oracle. 2023-12-12. Archivado desde el original el 2023-11-23 . Consultado el 2023-12-12 . Las vistas son consultas almacenadas que, cuando se invocan, producen un conjunto de resultados. Una vista actúa como una tabla virtual.
  2. ^ abc Groff, James R.; Weinberg, Paul N. (1999). SQL: La referencia completa (PDF) . Osborne/McGraw-Hill. págs. 291–292. ISBN. 0072118458.