Cenários para usar exibições

As exibições são geralmente usadas para focalizar, simplificar e personalizar a percepção que cada usuário tem do banco de dados. As exibições podem ser usadas como mecanismos de segurança para permitir que usuários acessem dados por meio da exibição, sem conceder-lhes permissões para acessarem diretamente as tabelas base subjacentes da exibição. As exibições podem ser usadas para fornecer uma interface compatível com versões anteriores para emular uma tabela que costumava existir, mas cujo esquema foi alterado. As exibições também podem ser usadas quando você copia dados para e de Microsoft SQL Server para melhorar o desempenho e particionar dados.

Para focalizar em dados específicos

As exibições permitem que os usuários foquem em dados específicos de seu interesse e nas tarefas específicas pelas quais são responsáveis. Dados desnecessários ou confidenciais podem ser omitidos da exibição.

Por exemplo, uma exibição no banco de dados de exemplo vBikesAdventureWorks2008R2 permite que o usuário consulte os nomes de todas as bicicletas atualmente em estoque. As exibições filtram todos os campos da tabela Product, exceto Name, e retornam apenas nomes das bicicletas concluídas em vez dos 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 a manipulação de dados

As exibições podem simplificar como os usuários trabalham com dados. Você pode definir junções, projeções, consultas UNION e consultas SELECT freqüentemente usadas como exibições para que usuários não tenham de especificar todas as condições e qualificações cada vez que uma operação adicional seja executada nos dados. Por exemplo, uma consulta complexa usada para relatar propósitos e executar subconsultas, junções externas e agregação para recuperar dados de um grupo de tabelas, pode ser criada como exibição. A exibição simplifica o acesso aos dados porque a consulta subjacente não tem de ser gravada ou submetida cada vez que o relatório é gerado; a exibição é consultada em vez disso. Para obter mais informações sobre manipulação de dados, consulte Conceitos básicos sobre consultas.

Apesar de não ser uma consulta complexa, a exibição vBikes no banco de dados de exemplo AdventureWorks2008R2 permite que os usuários foquem em dados específicos sem precisar construir cláusulas JOIN necessárias para produzir a exibição.

Você pode criar funções embutidas definidas pelo usuário que operem logicamente como exibições com parâmetros, ou exibições que tenham parâmetros em critério de pesquisa de cláusula WHERE ou outras partes da consulta. Para obter mais informações, consulte Funções embutidas definidas pelo usuário.

Para fornecer compatibilidade com versões anteriores.

Exibições permitem a criação de uma interface compatível com versões anteriores para uma tabela quando seu esquema alterar. Por exemplo, um aplicativo pode ter referenciado uma tabela não normalizada que tem o seguinte esquema:

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

Para evitar armazenar os dados redundantemente no banco de dados, você pode normalizar a tabela dividindo-a nas seguintes tabelas:

Employee2(Name, BirthDate, Salary, DeptId)

Department(DeptId, BuildingName)

Para fornecer uma interface compatível com versões anteriores que ainda referenciem dados da Employee, você pode descartar a tabela Employee e velha substituí-la pela seguinte exibição:

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

Aplicativos que consultavam a tabela Employee podem, agora, obter seus os dados da exibição Employee. O aplicativo não terá de ser alterado se só ler de Employee. Os aplicativos que atualizam Employee podem, às vezes, também obter suporte pela adição de gatilhos INSTEAD OF à nova exibição para mapear as operações INSERT, DELETE e UPDATE na exibição de tabelas subjacentes. Para obter mais informações, consulte Criando gatilhos INSTEAD OF.

Para personalizar os dados

As exibições permitem que diferentes usuários vejam os dados de forma diferente, mesmo quando eles estiverem usando os mesmos dados ao mesmo tempo. Isso é especialmente útil quando os usuários que têm muitos interesses e níveis de habilidade diferentes compartilham o mesmo banco de dados. Por exemplo, uma exibição pode ser criada para recuperar apenas os dados para clientes com quem um gerente de conta lida. A exibição pode determinar quais dados a serem recuperaods com base no ID de logon do gerente de conta que usa a exibição.

Para exportar e importar dados

Exibições podem ser usadas para exportar dados a outros aplicativos. Por exemplo, você pode usar as tabelas Customer e SalesOrderHeader no banco de dados AdventureWorks2008R2 para analisar os dados de vendas usando o Microsoft Excel. Para fazer isso, você pode criar uma exibição com base nas tabelas Customer e SalesOrderHeader. Você pode, então, usar o utilitário bcp para exportar os dados definidos pela exibição. Os dados também poderão ser importados para certas exibições de arquivos de dados usando o utilitário bcp ou uma instrução BULK INSERT se as colunas puderem ser inseridas na exibição usando a instrução INSERT. Para obter mais informações sobre as restrições para copiar dados em exibições, consulte INSERT (Transact-SQL). Para obter mais informações sobre como usar o utilitário bcp e a instrução BULK INSERT para copiar dados para e de uma exibição, consulte Exportação ou importação de dados em massa para uma exibição.

Para combinar dados particionados por servidores

O operador UNION Transact-SQL definido pode ser usado em uma exibição para combinar os resultados de duas ou mais consultas de tabelas separadas em um único conjunto de resultados. Isto aparece ao usuário como uma única tabela que é chamada uma exibição particionada. Por exemplo, se uma tabela contiver dados de vendas para Washington e outra tabela contiver dados de vendas para a Califórnia, uma exibição poderia ser criada de uma UNION dessas tabelas. A exibição representa os dados de vendas para ambas as regiões.

Para usar exibições particionadas, você cria várias tabelas idênticas, especificando uma restrição para determinar o intervalo de dados que pode ser adicionados a cada tabela. A exibição, então, é criada que usa essas tabelas base. Quando a exibição for consultada, o SQL Server determina automaticamente quais tabelas serão afetadas pela consulta e referencia apenas essas tabelas. Por exemplo, se uma consulta especificar que apenas os dados de vendas para o estado de Washington são necessários, o SQL Server lê apenas a tabela que contém os dados de vendas de Washington; nenhuma outra tabela será acessada.

Exibições particionadas podem ser usadas com base em dados de fontes heterogêneas, como servidores remotos, para criar uma federação de servidores de banco de dados. Por exemplo, para combinar dados de diferentes servidores remotos, cada um dos quais armazena dados para uma região diferente de sua organização, você pode criar consultas distribuídas que recuperem dados de cada fonte de dados e depois crie uma exibição com base nessas consultas distribuídas. Qualquer consulta lê apenas dados de tabelas nos servidores remotos que contenham dados requeridos pela consulta; os outros servidores referenciados pelas consultas distribuídas na exibição não são acessados.

Ao particionar dados por servidores múltiplos, as consultas que acessam apenas uma fração de dados podem ser executadas mais rapidamente, porque há menos dados para verificar. Se as tabelas estiverem localizadas em servidores diferentes, ou em um computador que usa multiprocessadores, cada tabela envolvida na consulta também pode ser verificada em paralelo. Isso pode melhorar o desempenho de consulta. Além disso, tarefas de manutenção, como reconstruir índices ou fazer backup de uma tabela, podem ser executadas mais rapidamente.

Ao usar a exibição particionada, os dados ainda aparecem como uma única tabela e podem ser consultados sem ter de referir manualmente a tabela subjacente correta.

ObservaçãoObservação

O método preferencial para o particionamento dos locais de dado para um servidor é por tabelas particionadas. Para obter mais informações, consulte Tabelas e índices particionados.

Exibições particionadas serão atualizáveis se qualquer uma das seguintes condições for verdadeira:

  • Um gatilho INSTEAD OF está definido na exibição com lógica para dar suporte às instruções INSERT, UPDATE e DELETE.

  • A exibição e as instruções INSERT, UPDATE e DELETE seguem as regras definidas para exibições particionadas atualizáveis. Para obter mais informações, consulte Criando exibição particionadas.