Descrever objetos de banco de dados
Além de tabelas, um banco de dados relacional pode conter outras estruturas que ajudam a otimizar a organização de dados, encapsular ações programáticas e melhorar a velocidade de acesso. Nesta unidade, você aprenderá sobre três dessas estruturas com mais detalhes: exibições, procedimentos armazenados e índices.
O que é uma vista?
Uma vista é uma tabela virtual baseada nos resultados de uma consulta SELECT . Você pode pensar em um modo de exibição como uma janela em linhas especificadas em uma ou mais tabelas subjacentes. Por exemplo, você pode criar uma exibição nas tabelas Pedido e Cliente que recupera dados de pedidos e clientes para fornecer um único objeto que facilita a determinação de endereços de entrega para pedidos:
CREATE VIEW Deliveries
AS
SELECT o.OrderNo, o.OrderDate,
c.FirstName, c.LastName, c.Address, c.City
FROM Order AS o JOIN Customer AS c
ON o.Customer = c.ID;
Pode consultar a vista e filtrar os dados praticamente da mesma forma que uma tabela. A consulta a seguir localiza detalhes de pedidos para clientes que moram em Seattle:
SELECT OrderNo, OrderDate, LastName, Address
FROM Deliveries
WHERE City = 'Seattle';
O que é um procedimento armazenado?
Um procedimento armazenado define instruções SQL que podem ser executadas sob comando. Os procedimentos armazenados são usados para encapsular a lógica programática em um banco de dados para ações que os aplicativos precisam executar ao trabalhar com dados.
Você pode definir um procedimento armazenado com parâmetros para criar uma solução flexível para ações comuns que talvez precisem ser aplicadas a dados com base em uma chave ou critérios específicos. Por exemplo, o procedimento armazenado a seguir pode ser definido para alterar o nome de um produto com base na ID do produto especificada.
CREATE PROCEDURE RenameProduct
@ProductID INT,
@NewName VARCHAR(20)
AS
UPDATE Product
SET Name = @NewName
WHERE ID = @ProductID;
Quando um produto precisa ser renomeado, você pode executar o procedimento armazenado, passando a ID do produto e o novo nome a ser atribuído:
EXEC RenameProduct 201, 'Spanner';
O que é um índice?
Um índice ajuda a procurar dados numa tabela. Um índice de uma tabela é como um índice de um livro. Um índice num livro contém um conjunto ordenado de referências, com as páginas em que cada referência ocorre. Quando quer localizar uma referência a um item num livro, procura-a no índice. Pode utilizar os números de página no índice para ir diretamente para as páginas corretas no livro. Sem um índice, poderia ter de ler todo o livro para encontrar as referências que procura.
Quando cria um índice numa base de dados, especifica uma coluna da tabela e o índice contém uma cópia desses dados em sequência de ordenação, com ponteiros para as linhas correspondentes na tabela. Quando o usuário executa uma consulta que especifica essa coluna na cláusula WHERE , o sistema de gerenciamento de banco de dados pode usar esse índice para buscar os dados mais rapidamente do que se tivesse que examinar toda a tabela linha por linha.
Por exemplo, você pode usar o código a seguir para criar um índice na coluna Nome da tabela Produto :
CREATE INDEX idx_ProductName
ON Product(Name);
O índice cria uma estrutura baseada em árvore que o otimizador de consulta do sistema de banco de dados pode usar para localizar rapidamente linhas na tabela Produto com base em um Nome especificado.
Para uma tabela que contém poucas linhas, usar o índice provavelmente não é mais eficiente do que simplesmente ler a tabela inteira e encontrar as linhas solicitadas pela consulta (nesse caso, o otimizador de consulta ignorará o índice). No entanto, quando uma tabela tem muitas linhas, os índices podem melhorar drasticamente o desempenho das consultas.
Pode criar muitos índices numa tabela. Portanto, se você também quiser encontrar produtos com base no preço, criar outro índice na coluna Preço na tabela Produto pode ser útil. No entanto, os índices não são gratuitos. Um índice consome espaço de armazenamento e, sempre que você insere dados em uma tabela, atualiza ou exclui dados em uma tabela, os índices dessa tabela devem ser mantidos. Esse trabalho adicional pode tornar mais lentas as operações de inserção, atualização e exclusão. Você deve encontrar um equilíbrio entre ter índices que aceleram suas consultas versus o custo de executar outras operações.