vistas vista ventajas varias usar una tipos tablas qué parametros más mostrar implementación definicion datos crear consultas con común casos sql sql-server-2008

ventajas - ¿Cuál es una buena razón para usar vistas SQL?



ventajas de usar vistas en sql (11)

Estoy leyendo la Biblia de SQL Server 2008 y estoy cubriendo la sección de vistas. Pero el autor realmente no explica el propósito de las vistas. ¿Cuál es un buen uso para las vistas? ¿Debo usarlos en mi sitio web y cuáles son los beneficios de ellos?


¡Las vistas son malvadas! Evítelos si es posible y utilícelos solo por el motivo mencionado por DVK: migración temporal de datos.

Debe comprender que en una base de datos con 100 tablas es difícil recordar el propósito de cada tabla. Ahora, si agrega aquí otras 300 vistas, se convertirá en un completo desastre. Que los "amantes de la vista" tienden a usar vistas anidadas y luego usan las vistas anidadas en los procedimientos almacenados. ¡Personalmente trabajo ahora con una base de datos donde hay Vistas anidadas en profundidad 4 veces! Entonces, para comprender una lógica más simple de un procedimiento almacenado, primero tengo que pasar por todas las vistas.


(Copiado del primer tutorial que apareció en una búsqueda de Google , pero tiene todos los beneficios que habría escrito manualmente).

Las vistas tienen los siguientes beneficios:

  • Seguridad: las vistas pueden ponerse a disposición de los usuarios mientras que las tablas subyacentes no son accesibles directamente. Esto le permite al DBA brindar a los usuarios solo los datos que necesitan, mientras protege otros datos en la misma tabla.
  • Simplicidad: las vistas se pueden usar para ocultar y reutilizar consultas complejas.
  • Simplicación o aclaración del nombre de la columna: las vistas se pueden usar para proporcionar alias en los nombres de las columnas para que sean más memorables y / o significativas.
  • Stepping Stone: las vistas pueden proporcionar un escalón en una consulta de "múltiples niveles". Por ejemplo, podría crear una vista de una consulta que contara el número de ventas que cada vendedor había hecho. A continuación, puede consultar esa vista para agrupar a los vendedores por el número de ventas que han realizado.

Algunas razones de Wikipedia :

Las vistas pueden proporcionar ventajas sobre las tablas:

  1. Las vistas pueden representar un subconjunto de los datos contenidos en una tabla
  2. Las vistas pueden unir y simplificar varias tablas en una sola tabla virtual
  3. Las vistas pueden actuar como tablas agregadas , donde el motor de base de datos agrega datos (suma, promedio, etc.) y presenta los resultados calculados como parte de los datos
  4. Las vistas pueden ocultar la complejidad de los datos ; por ejemplo, una vista podría aparecer como Sales2000 o Sales2001, particionando de forma transparente la tabla subyacente real
  5. Las vistas ocupan muy poco espacio para almacenar ; la base de datos contiene solo la definición de una vista, no una copia de todos los datos que presenta
  6. Dependiendo del motor SQL utilizado, las vistas pueden proporcionar seguridad adicional
  7. Las vistas pueden limitar el grado de exposición de una mesa o mesas al mundo exterior

Aquí hay un uso muy común del uso de vistas para restringir a una entidad según algunos criterios.

Tabla: USUARIOS contiene todos los usuarios

Ver: ACTIVE_USERS contiene todos los usuarios, excluyendo aquellos que están suspendidos, prohibidos, que esperan ser activados y que no cumplen con ningún criterio que pueda elegir definir en el futuro como parte de los requisitos activos. Esto hace que no sea necesario eliminar las filas de la tabla USERS si no lo hace porque ACTIVE_USERS siempre puede ocultar las filas no deseadas.

De esta forma, puede usar la tabla en sus páginas de administración de usuarios, pero el resto de la aplicación puede usar ACTIVE_USERS, ya que pueden ser los únicos usuarios que deberían poder ejecutar procesos y acceder / modificar datos.


Estas son algunas de las muchas razones por las que se utiliza la vista en lugar de la tabla directamente

  • Simplicidad: las vistas se pueden usar para ocultar consultas complejas.
  • Seguridad: la vista puede ocultar información importante del usuario final al crear vista en algunas columnas seleccionadas
  • Seguridad - Asegure la tabla para cambiar la estructura de la misma usando VIEW.
  • Redundancia: reduzca el código redundante en cada procedimiento / consulta utilizando una vista común.
  • Cálculo: todos los cálculos se pueden hacer una vez en consulta de vista.
  • Nombre significativo: la tabla puede tener un nombre para id como tbl_org_emp_id que puede alias como [Employee No] o algún nombre significativo.

De imexploring.com


Las VIEWS se pueden usar como secciones reutilizables de SELECT / CODE, que se pueden incluir en otras selects / queries para unir, y usar varios filtros diferentes, sin tener que volver a crear todo el SELECT cada vez.

Esto también coloca la lógica en una sola ubicación, por lo que no tiene que cambiarla por todo el código base.

Mira esto

Elección entre procedimientos almacenados, funciones, vistas, desencadenadores, SQL en línea

La belleza principal de una vista es que se puede usar como una tabla en la mayoría de las situaciones, pero a diferencia de una tabla, puede encapsular cálculos muy complejos y combinaciones comúnmente utilizadas. También puede usar casi cualquier objeto en el archivo db excepto por los procedimientos almacenados. Las vistas son más útiles cuando siempre debe unirse al mismo conjunto de tablas, por ejemplo, un Pedido con un Detalle del pedido para obtener campos de cálculo de resumen, etc.


Las vistas pueden permitirle combinar datos de varias tablas diferentes y formatearlo (combinar campos, dar nombres de campos más significativos, etc.) para que sea más fácil para los usuarios finales. Son una abstracción del modelo de base de datos. También se pueden usar para dar acceso a los usuarios a los datos de la tabla sin darles acceso directo a la tabla.


No siempre es cierto que no puede actualizar la tabla subyacente de una vista.

Por ejemplo, prueba

create view theyshallnotpass como select * from

y probar una actualización para una desagradable sorpresa ...

(MSSQL)


Otro uso que ninguna de las respuestas anteriores parece haber mencionado es una implementación más sencilla de los cambios en la estructura de la tabla.

Digamos que desea retirar una tabla (T_OLD) que contiene datos para usuarios activos, y en su lugar usar una nueva tabla con datos similares (llamada T_NEW) pero que tenga datos para usuarios activos e inactivos, con una columna adicional "activa".

Si su (s) sistema (s) tiene (n) múltiples consultas que SELECT whatever FROM T_OLD WHERE whatever que SELECT whatever FROM T_OLD WHERE whatever que SELECT whatever FROM T_OLD WHERE whatever , tiene dos opciones para el despliegue:

1) Cold Turkey - Cambie la base de datos, y al mismo tiempo, cambie, pruebe y libere numerosos fragmentos de código que contenían dicha consulta. MUY difícil de hacer (o incluso coordinar), muy arriesgado. Malo.

2) Gradual: cambie el DB creando T_NEW, soltando T_OLD y en su lugar creando una VISTA llamada T_OLD que imita la tabla T_OLD al 100% (por ejemplo, la consulta de vista es SELECT all_fields_except_active FROM T_NEW WHERE active=1 ).

Eso le permitiría evitar la liberación de CUALQUIER código que actualmente seleccione de T_OLD, y hacer los cambios para migrar el código de T_OLD a T_NEW en el ocio.

Este es un ejemplo simple, hay otros mucho más involucrados.

PD Por otro lado, probablemente debería haber tenido una API de procedimiento almacenado en lugar de consultas directas de T_OLD, pero no siempre es así.


Una pequeña lista de razones / usos comunes:

  • úselos para cambiar el formato o el "aspecto" de los datos (es decir, puede unir un nombre y un apellido)

    realizar cálculos u otras búsquedas en datos

    desnormalizar datos (extraer datos de varias tablas en un solo lugar)


Una vista es una capa de abstracción y hace lo que hace cualquier capa de abstracción, incluso encapsulando el esquema de la base de datos y protegiéndote de las consecuencias de cambiar los detalles internos de implementación.

Es una interfaz.