Vistas de bases de datos

Diseño de bases de datos

Lis Sulmont

Curriculum Manager

Vistas de bases de datos

En una base de datos, una vista es el conjunto de resultados de una consulta almacenada sobre los datos, que los usuarios pueden consultar igual que lo harían en un objeto de colección de base de datos persistente (Wikipedia).

Tabla virtual que no forma parte del esquema físico

  • En la memoria se almacena la consulta, no los datos.
  • Los datos se agregan a partir de los datos de las tablas.
  • Se puede consultar como una tabla de base de datos normal.
  • No es necesario volver a escribir consultas comunes ni modificar esquemas.
1 https://en.wikipedia.org/wiki/View_(SQL)
Diseño de bases de datos

Creación de una vista (sintaxis)

CREATE VIEW view_name AS
SELECT col1, col2 
FROM table_name 
WHERE condition;
Diseño de bases de datos

Creación de una vista (ejemplo)

Dimensión del libro del esquema en copo de nieve

$$

**Objetivo:** Obtener títulos y autores del género science fiction.

Diseño de bases de datos

Creación de una vista (ejemplo)

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';
Diseño de bases de datos

Consultar una vista (ejemplo)

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 |
| ...                           | ...               | ...             |
Diseño de bases de datos

Desde dentro

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');
Diseño de bases de datos

Visualización de vistas

(en PostgreSQL)

$$

SELECT * FROM INFORMATION_SCHEMA.views;

Incluye vistas del sistema.

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

Excluye vistas del sistema.

Diseño de bases de datos

Ventajas de las vistas

  • No ocupa espacio de almacenamiento.
  • Una forma de control de acceso.
    • Oculta columnas confidenciales y restringe lo que pueden ver los usuarios.
  • Disimula la complejidad de las consultas.
    • Útil para esquemas altamente normalizados.
Diseño de bases de datos

$$ Esquema de la base de datos de reseñas de Pitchfork

1 https://www.kaggle.com/nolanbconaway/pitchfork-data
Diseño de bases de datos

¡Vamos a practicar!

Diseño de bases de datos

Preparing Video For Download...