Escenarios de utilización de vistas

Las vistas suelen utilizarse para centrar, simplificar y personalizar la percepción de la base de datos para cada usuario. Las vistas pueden emplearse como mecanismos de seguridad, que permiten a los usuarios obtener acceso a los datos por medio de la vista, pero no les conceden el permiso de obtener acceso directo a las tablas base subyacentes de la vista. Las vistas pueden utilizarse para proporcionar una interfaz compatible con versiones anteriores con el fin de emular una tabla que existía pero cuyo esquema ha cambiado. También pueden utilizarse para copiar datos entre MicrosoftSQL Server a fin de mejorar el rendimiento y crear particiones de los datos.

Para centrarse en datos específicos

Las vistas permiten a los usuarios centrarse en datos de su interés y en tareas específicas de las que son responsables. Los datos innecesarios o sensibles pueden quedar fuera de la vista.

Por ejemplo, una vista vBikes en la base de datos de ejemplo AdventureWorks permitiría a un usuario ver las existencias de bicicletas disponibles actualmente. La vista filtra todos los campos de la tabla Product salvo Name y sólo devuelve los nombres de las bicicletas completas en lugar de los componentes de bicicleta.

CREATE VIEW vBikes AS
SELECT DISTINCT p.[Name] FROM Production.Product p
    JOIN Production.ProductInventory i ON p.ProductID = i.ProductID
    JOIN Production.ProductSubCategory ps 
        ON p.ProductSubcategoryID = ps.ProductSubCategoryID 
    JOIN Production.ProductCategory pc 
        ON (ps.ProductCategoryID = pc.ProductCategoryID 
            AND pc.Name = N'Bikes')
        AND i.Quantity > 0

Para simplificar la manipulación de datos

Las vistas permiten simplificar la forma en que los usuarios trabajan con los datos. Las combinaciones, proyecciones, consultas UNION y consultas SELECT que se utilizan con frecuencia pueden definirse como vistas para que los usuarios no tengan que especificar todas las condiciones y calificaciones cada vez que realicen una operación adicional en los datos. Por ejemplo, es posible crear como vista una consulta compleja que se utilice para la elaboración de informes y que realice subconsultas, combinaciones externas y agregaciones para recuperar datos de un grupo de tablas. La vista simplifica el acceso a los datos ya que evita la necesidad de escribir o enviar la consulta subyacente cada vez que se genera el informe; en lugar de eso, se realiza una consulta en la vista. Para obtener más información acerca de la manipulación de datos, vea Aspectos básicos de las consultas.

Aunque no se trata de una consulta compleja, la vista vBikes de la base de datos de ejemplo AdventureWorks permite a los usuarios centrarse en los datos específicos sin tener que crear las cláusulas JOIN que se necesitan para generar la vista.

También puede crear funciones insertadas definidas por el usuario que funcionen de manera lógica como vistas con parámetros o como vistas con parámetros de condiciones de búsqueda de cláusulas WHERE u otras partes de la consulta. Para obtener más información, vea Funciones insertadas definidas por el usuario.

Para proporcionar compatibilidad con versiones anteriores

Las vistas permiten crear una interfaz compatible con versiones anteriores para una tabla cuando su esquema cambia. Por ejemplo, una aplicación puede haber hecho referencia a una tabla no normalizada que tiene el siguiente esquema:

Employee(Name, BirthDate, Salary, Department, BuildingName)

Para evitar el almacenamiento redundante de datos en la base de datos, puede normalizar la tabla dividiéndola en las dos siguientes tablas:

Employee2(Name, BirthDate, Salary, DeptId)

Department(DeptId, BuildingName)

Para proporcionar una interfaz compatible con versiones anteriores que siga haciendo referencia a los datos de Employee, puede eliminar la tabla Employee antigua y reemplazarla por la siguiente vista:

CREATE VIEW Employee AS
SELECT Name, BirthDate, Salary, BuildingName
FROM Employee2 e, Department d
WHERE e.DeptId = d.DeptId

Las aplicaciones que realizaban consultas en la tabla Employee, ahora pueden obtener sus datos desde la vista Employee. No es necesario cambiar la aplicación si sólo lee desde Employee. A veces, las aplicaciones que actualizan Employee también pueden admitirse agregando desencadenadores INSTEAD OF a la nueva vista para asignar operaciones INSERT, DELETE y UPDATE en la vista a las tablas subyacentes. Para obtener más información, vea Diseñar desencadenadores INSTEAD OF.

Para personalizar datos

Las vistas permiten que varios usuarios puedan ver los datos de modo distinto, aunque estén utilizando los mismos simultáneamente. Esto resulta de gran utilidad cuando usuarios que tienen distintos intereses y calificaciones trabajan con la misma base de datos. Por ejemplo, es posible crear una vista que recupere únicamente los datos para los clientes con los que trabaja el responsable comercial de una cuenta. La vista puede determinar qué datos deben recuperarse en función del Id. de inicio de sesión del responsable comercial que utilice la vista.

Para exportar e importar datos

Es posible utilizar vistas para exportar datos a otras aplicaciones. Por ejemplo, es posible que quiera utilizar las tablas Customer y SalesOrderHeader de la base de datos AdventureWorks para analizar los datos de ventas mediante Microsoft Excel. Para ello, puede crear una vista a partir de las tablas Customer y SalesOrderHeader. A continuación, puede utilizar la herramienta bcp para exportar los datos definidos por la vista. También es posible importar información desde archivos de datos a determinadas vistas con la utilidad bcp o la instrucción BULK INSERT, siempre que se puedan insertar las filas en la vista mediante la instrucción INSERT. Para obtener más información acerca de las restricciones para la copia de datos en vistas, vea INSERT (Transact-SQL). Para obtener más información acerca del funcionamiento de la utilidad bcp y la instrucción BULK INSERT para copiar datos en una vista y desde ella, vea Exportar o importar datos de forma masiva en una vista.

Para combinar datos de particiones entre servidores

El operador de conjuntos UNION de Transact-SQL puede utilizarse dentro de una vista para combinar los resultados de dos o más consultas de tablas distintas en un solo conjunto de resultados. Esta combinación se muestra al usuario como una tabla única denominada vista con particiones. Por ejemplo, si una tabla contiene datos de ventas de Washington y otra tabla contiene datos de ventas de California, podría crearse una vista a partir de la UNION de ambas tablas. La vista representada incluye los datos de ventas de ambas zonas.

Para utilizar vistas con particiones, debe crear varias tablas idénticas y especificar una restricción que determine el intervalo de datos que se pueden agregar a cada tabla. A continuación, se crea la vista a partir de esas tablas base. Cuando se realiza una consulta en la vista, SQL Server determina automáticamente qué tablas se ven afectadas por la consulta y sólo hace referencia a esas tablas. Por ejemplo, si en una consulta se especifica que sólo se necesitan los datos de ventas de Washington, SQL Server únicamente lee la tabla que contiene los datos de Washington, sin intentar obtener acceso a otras tablas.

Las vistas con particiones pueden estar basadas en datos de distintos orígenes, como servidores remotos, para crear una federación de servidores de bases de datos. Por ejemplo, para combinar datos de distintos servidores remotos, cada uno de los cuales almacena datos para una región distinta de su organización, puede crear consultas distribuidas que recuperan datos de cada origen de datos y, a continuación, crear una vista basada en esas consultas distribuidas. Las consultas sólo leen datos de las tablas de los servidores remotos que contienen los datos pedidos por la consulta; no se intenta el acceso al resto de los servidores a los que hacen referencia las consultas distribuidas de la vista.

Cuando realice una partición de datos entre varios servidores, las consultas que tengan acceso únicamente a una fracción de los datos pueden ejecutarse con mayor rapidez, ya que se deben recorrer menos datos. Si las tablas se encuentran en servidores distintos o en un equipo con varios procesadores, también se podrá recorrer en paralelo cada tabla incluida en la consulta, lo que aumenta el rendimiento de las consultas. Además, las tareas de mantenimiento (como, por ejemplo, la reconstrucción de índices o las copias de seguridad de una tabla), podrán ejecutarse con mayor rapidez.

Mediante la utilización de una vista con particiones, los datos siguen apareciendo como una sola tabla y se les puede hacer una consulta tal cual, sin necesidad de hacer referencia manualmente a la tabla subyacente que corresponda.

[!NOTA]

El método preferido para crear particiones de datos locales en un servidor es mediante tablas con particiones. Para obtener más información, vea Tablas e índices con particiones.

Las vistas con particiones se actualizan si se cumple alguna de estas condiciones:

  • Se ha definido un desencadenador INSTEAD OF en la vista con lógica para admitir instrucciones INSERT, UPDATE y DELETE.

  • Tanto la vista como las instrucciones INSERT, UPDATE y DELETE siguen las reglas definidas para las vistas con particiones actualizables. Para obtener más información, vea Crear vistas con particiones.