Vizualizări de baze de date

Proiectarea bazelor de date

Lis Sulmont

Curriculum Manager

Vizualizări de baze de date

Într-o bază de date, o vizualizare este setul de rezultate al unei interogări stocate asupra datelor, pe care utilizatorii o pot interoga ca pe un obiect persistent al bazei de date (Wikipedia)

Tabel virtual care nu face parte din schema fizică

  • Interogarea, nu datele, este stocată în memorie
  • Datele sunt agregate din tabele
  • Poate fi interogată ca un tabel obișnuit
  • Nu necesită rescrierea interogărilor frecvente sau modificarea schemelor
1 https://en.wikipedia.org/wiki/View_(SQL)
Proiectarea bazelor de date

Crearea unei vizualizări (sintaxă)

CREATE VIEW view_name AS
SELECT col1, col2 
FROM table_name 
WHERE condition;
Proiectarea bazelor de date

Crearea unei vizualizări (exemplu)

Dimensiunea cărților din schema snowflake

$$

Obiectiv: Returnarea titlurilor și autorilor din genul science fiction

Proiectarea bazelor de date

Crearea unei vizualizări (exemplu)

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';
Proiectarea bazelor de date

Interogarea unei vizualizări (exemplu)

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 |
| ...                           | ...               | ...             |
Proiectarea bazelor de date

În spatele scenei

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');
Proiectarea bazelor de date

Vizualizarea vizualizărilor

(în PostgreSQL)

$$

SELECT * FROM INFORMATION_SCHEMA.views;

Includes system views

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

Excludes system views

Proiectarea bazelor de date

Avantajele vizualizărilor

  • Nu ocupă spațiu de stocare
  • O formă de control al accesului
    • Ascunde coloane sensibile și restricționează ce pot vedea utilizatorii
  • Maschează complexitatea interogărilor
    • Util pentru scheme înalt normalizate
Proiectarea bazelor de date

$$ Schema bazei de date Pitchfork Reviews

1 https://www.kaggle.com/nolanbconaway/pitchfork-data
Proiectarea bazelor de date

Să exersăm!

Proiectarea bazelor de date

Preparing Video For Download...