Tutorial Prático: Views, Sequences e Synonyms
Published: 2023-12-08 00:53:16

**Introdução**

Views, sequences e synonyms são três recursos poderosos que podem ser usados para melhorar a flexibilidade, a segurança e o desempenho de bancos de dados. Este tutorial prático irá demonstrar como usar esses recursos em cenários reais.

**View**

Uma view é uma tabela virtual que é baseada nos resultados de uma consulta SQL. Views podem ser usadas para ocultar dados confidenciais, fornecer uma interface simplificada para dados complexos ou simplesmente organizar dados de uma maneira mais conveniente.

**Exemplos práticos**

Aqui estão cinco exemplos práticos de como views podem ser usadas:
 - Ocultar dados confidenciais

Vamos supor que temos uma tabela de clientes com as seguintes colunas:

``
id_cliente
nome
endereço
telefone
e-mail
``
Queremos ocultar o endereço e o telefone dos clientes para fins de segurança. Podemos criar uma view chamada "clientes_visivel" que filtra essas colunas:

```
SQL
CREATE VIEW clientes_visivel AS
SELECT
    id_cliente,
    nome,
    e-mail
FROM
    clientes;

```

Essa view pode ser usada para visualizar apenas o nome e o e-mail dos clientes.
- Fornecer uma interface simplificada para dados complexos

Vamos supor que temos uma tabela de vendas com as seguintes colunas:

`id_venda
data_venda
id_cliente
id_produto
quantidade
valor`

Essa tabela pode ser complexa para usuários que não estão familiarizados com bancos de dados. Podemos criar uma view chamada "vendas_resumo" que fornece um resumo dos dados de vendas:

```
SQL
CREATE VIEW vendas_resumo AS
SELECT
    id_venda,
    data_venda,
    SUM(quantidade) AS quantidade_total,
    SUM(valor) AS valor_total
FROM
    vendas
GROUP BY
    id_venda,
    data_venda;
```

Essa view pode ser usada para visualizar o número total de itens vendidos, o valor total das vendas e a data da venda.
 - Melhorar o desempenho de consultas

Vamos supor que temos uma tabela de produtos com as seguintes colunas:

`id_produto
nome
preco
descricao`

Podemos criar uma view chamada "produtos_com_preco_maior_que_100" que filtra os produtos com preço maior que 100 reais:

```
SQL
CREATE VIEW produtos_com_preco_maior_que_100 AS
SELECT
    id_produto,
    nome,
    preco
FROM
    produtos
WHERE
    preco > 100;
```

Essa view pode ser usada para visualizar apenas os produtos com preço maior que 100 reais. Essa view pode melhorar o desempenho de consultas que precisam acessar apenas esses produtos, pois não precisará consultar todas as linhas da tabela original.
 - Criar relatórios e análises de dados

Views podem ser usadas para criar relatórios e análises de dados de forma rápida e fácil. Por exemplo, podemos criar uma view para calcular o número de vendas por produto ou o valor total das vendas por mês.
 - Fornecer acesso a dados de diferentes esquemas

Views podem ser usadas para fornecer acesso a dados de diferentes esquemas. Por exemplo, podemos criar uma view para acessar uma tabela em um esquema de desenvolvimento a partir de um esquema de produção.

**Vantagens e desvantagens das views**

**Vantagens:**
- Flexibilidade: Views podem ser usadas para organizar dados de uma maneira mais conveniente.
- Segurança: Views podem ser usadas para ocultar dados confidenciais.
- Desempenho: Views podem melhorar o desempenho de consultas que acessam dados complexos.

**Desvantagens:**
- Eficiência: Views podem ser menos eficientes do que consultas diretas às tabelas originais.
- Modificabilidade: Views são dependentes da consulta SQL que as criou. Qualquer alteração na consulta SQL afetará a view.

**Sequence**

Uma sequence é um objeto de banco de dados que gera números únicos. Sequences podem ser usadas para gerar identificadores únicos para registros, controlar o fluxo de transações ou simplesmente gerar números aleatórios.

**Exemplos práticos**

Aqui estão cinco exemplos práticos de como sequences podem ser usadas:
- Gerar identificadores únicos

Vamos supor que queremos criar um sistema de gerenciamento de pedidos. Queremos garantir que cada pedido tenha um ID único. Podemos usar uma sequence para gerar esses IDs:

```
SQL
CREATE SEQUENCE pedidos_seq
START WITH 1
INCREMENT BY 1;
```

Podemos então usar essa sequence para gerar o ID do pedido ao criar um novo pedido:

```
SQL
INSERT INTO pedidos (id, data_pedido, cliente_id)
VALUES (nextval('pedidos_seq'), '2023-08-02', 1);

```

A instrução nextval() retornará o próximo valor da sequence.
- Controlar o fluxo de transações

Sequences podem ser usadas para controlar o fluxo de transações. Por exemplo, podemos usar uma sequence para controlar a frequência com que uma transação pode ser executada.
- Gerar números aleatórios

Sequences podem ser usadas para gerar números aleatórios. Por exemplo, podemos usar uma sequence para gerar números de sorteio.
- Atualizar dados em massa

Sequences podem ser usadas para atualizar dados em massa. Por exemplo, podemos usar uma sequence para incrementar o valor de um campo em todas as linhas de uma tabela.
- Fornecer um ID sequencial para registros

Sequences podem ser usadas para fornecer um ID sequencial para registros. Isso pode ser útil para garantir que os registros sejam ordenados corretamente.

**Vantagens e desvantagens das sequences**

**Vantagens:**
- Identificador único: Sequences podem ser usadas para gerar identificadores únicos para registros.
- Controle de fluxo: Sequences podem ser usadas para controlar o fluxo de transações.
- Aleatoriedade: Sequences podem ser usadas para gerar números aleatórios.

**Desvantagens:**
- Restrição: Sequences podem restringir o valor dos identificadores gerados.
- Desempenho: Sequences podem afetar o desempenho de consultas que acessam os dados gerados.

**Synonym**

Um synonym é um apelido para um objeto de banco de dados, como uma tabela ou uma view. Synonyms podem ser usados para facilitar o acesso e a gestão deles.

**Exemplos práticos**

Aqui estão cinco exemplos práticos de como synonyms podem ser usados:
- Acessar tabelas usadas direto em esquemas diferentes

Vamos supor que temos uma tabela chamada "produtos" em um esquema chamado "vendas". Queremos acessar essa tabela de outro esquema, chamado "financeiro". Podemos criar um synonym chamado "produtos_financeiro" para essa tabela no esquema "financeiro":

```
SQL
CREATE SYNONYM produtos_financeiro FOR vendas.produtos;
```

Após a criação desse synonym, podemos acessar a tabela "produtos" no esquema "vendas" usando o nome "produtos_financeiro" no esquema "financeiro":

```
SQL
SELECT * FROM produtos_financeiro;
```

- Mudar aplicações para novos objetos de banco sem mexer no código-fonte

Podemos usar synonyms para mudar aplicações para novos objetos de banco de dados sem mexer no código-fonte. Por exemplo, podemos criar um synonym para uma tabela que está sendo atualizada. Se a tabela for atualizada, podemos simplesmente atualizar o synonym sem precisar alterar o código-fonte da aplicação.
- Fornecer uma interface simplificada para objetos de banco de dados

Podemos usar synonyms para fornecer uma interface simplificada para objetos de banco de dados. Por exemplo, podemos criar um synonym para uma tabela que tem um nome longo ou complicado.
- Agrupar objetos de banco de dados

Podemos usar synonyms para agrupar objetos de banco de dados. Por exemplo, podemos criar um synonym para um conjunto de tabelas que são usadas juntas.
- Evitar conflitos de nomes

Podemos usar synonyms para evitar conflitos de nomes. Por exemplo, podemos criar um synonym para uma tabela que já existe em outro esquema.

**Vantagens e desvantagens dos synonyms**

Vantagens:

- Acessibilidade: Synonyms podem facilitar o acesso a objetos de banco de dados.
- Gestão: Synonyms podem facilitar a gestão de objetos de banco de dados.

Desvantagens:
- Confusão: Synonyms podem causar confusão se não forem usados com cuidado.

Jônison Silva, Mateus Miranda, Paulo Rogério Matos.