stringtranslate.com

Ver (SQL)

En una base de datos , una vista es el conjunto de resultados de una consulta almacenada , que se puede consultar de la misma manera que un objeto de colección de base de datos persistente. [1] Este comando de consulta preestablecido se mantiene 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 de la base de datos cuando se solicita 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 puede hacerlo una vista de base de datos. En otro paralelo 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 sería mucho más difícil. Las vistas pueden facilitar la creación de una descomposición de uniones sin pérdidas.

Así como 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 declaración CREATE TABLE. Sin embargo, los datos ordenados se pueden obtener de una vista, del mismo modo que cualquier otra tabla, como parte de una declaración de consulta en esa vista. Sin embargo, algunos DBMS (como Oracle Database ) no cumplen con esta restricción del estándar SQL.

Vistas de solo lectura versus 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 vista al esquema de las tablas base subyacentes, entonces la vista es actualizable. Las operaciones INSERTAR , ACTUALIZAR y ELIMINAR se pueden realizar en vistas actualizables. Las vistas de solo lectura no admiten este tipo de operaciones porque el DBMS no puede asignar los cambios a las tablas base subyacentes. Una actualización de la vista se realiza mediante la preservación de la clave.

Algunos sistemas admiten la definición de activadores EN LUGAR DE en las vistas. Esta técnica permite la definición de otra lógica de ejecución en lugar de una operación de inserción, actualización o eliminación en las vistas. Por lo tanto, los sistemas de bases de datos pueden implementar modificaciones de datos basadas en vistas de solo lectura. Sin embargo, un disparador 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 no virtuales preejecutadas comúnmente utilizadas en el almacenamiento de datos . Proporcionan 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 desencadenantes detrás de sus actualizaciones.

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

Equivalencia

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

- vista_cuentas: ------------- SELECCIONE nombre , dinero_recibido , dinero_enviado , ( dinero_recibido - dinero_enviado ) COMO saldo , dirección , ... DESDE table_customers c ÚNASE a cuentas_tabla a EN a . id_cliente = c . Identificación del cliente                      

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

- Consulta simple ------------ SELECCIONAR nombre , saldo DESDE 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: ------------------ SELECCIONAR nombre , saldo DESDE ( SELECCIONAR nombre , dinero_recibido , dinero_enviado , ( dinero_recibido - dinero_enviado ) AS saldo , dirección , ... DESDE table_customers c ÚNETE a cuentas_table a ON a .                         

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.

Ver también

Referencias

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