Views de banco de dados

Projeto de banco de dados

Lis Sulmont

Curriculum Manager

Views de banco de dados

Em um banco de dados, uma visualização é o conjunto de resultados de uma consulta armazenada nos dados, que os usuários do banco de dados podem consultar da mesma forma que fariam em um objeto de coleção de banco de dados persistente (Wikipedia).

Tabela virtual que não faz parte do esquema físico

  • A consulta, e não os dados, é armazenada na memória.
  • Os dados são agregados a partir dos dados nas tabelas.
  • Pode ser consultado como uma tabela de banco de dados comum
  • Não precisa digitar de novo consultas comuns ou mudar esquemas.
1 https://en.wikipedia.org/wiki/View_(SQL)
Projeto de banco de dados

Criando uma visualização (sintaxe)

CREATE VIEW view_name AS
SELECT col1, col2 
FROM table_name 
WHERE condition;
Projeto de banco de dados

Criando uma visualização (exemplo)

Dimensão do livro do esquema Snowflake

$$

Objetivo: Devolva os títulos e autores do gênero science fiction

Projeto de banco de dados

Criando uma visualização (exemplo)

CREATE VIEW scifi_books AS
SELECT title,  author, genre
FROM dim_book_sf
JOIN dim_genre_sf ON dim_genre_sf.genre_id = dim_book_sf.genre_id
JOIN dim_author_sf ON dim_author_sf.author_id = dim_book_sf.author_id
WHERE dim_genre_sf.genre = 'science fiction';
Projeto de banco de dados

Consultando uma visualização (exemplo)

SELECT * FROM scifi_books
| title                         | author            | genre           |
|-------------------------------|-------------------|-----------------|
| The Naked Sun                 | Isaac Asimov      | science fiction |
| The Robots of Dawn            | Isaac Asimov      | science fiction |
| The Time Machine              | H.G. Wells        | science fiction |
| The Invisible Man             | H.G. Wells        | science fiction |
| The War of the Worlds         | H.G. Wells        | science fiction |
| Wild Seed (Patternmaster, #1) | Octavia E. Butler | science fiction |
| ...                           | ...               | ...             |
Projeto de banco de dados

O que acontece por trás (2)

SELECT * FROM scifi_books

=

SELECT * FROM 
(SELECT title,  author, genre
FROM dim_book_sf
JOIN dim_genre_sf ON dim_genre_sf.genre_id = dim_book_sf.genre_id
JOIN dim_author_sf ON dim_author_sf.author_id = dim_book_sf.author_id
WHERE dim_genre_sf.genre = 'science fiction');
Projeto de banco de dados

Exibição de views

(no PostgreSQL)

$$

SELECT * FROM INFORMATION_SCHEMA.views;

Inclui visualizações do sistema

SELECT * FROM information_schema.views
WHERE table_schema NOT IN ('pg_catalog', 'information_schema');

Exclui visualizações do sistema

Projeto de banco de dados

Benefícios das visualizações

  • Não ocupa espaço de armazenamento
  • Uma forma de controle de acesso
    • Oculte colunas confidenciais e limite o que o usuário pode ver
  • Máscaras complexidade das consultas
    • Útil para esquemas altamente normalizados
Projeto de banco de dados

Esquema do banco de dados de resenhas do Pitchfork

1 https://www.kaggle.com/nolanbconaway/pitchfork-data
Projeto de banco de dados

Vamos praticar!

Projeto de banco de dados

Preparing Video For Download...