Datenbankansichten

Datenbankdesign

Lis Sulmont

Curriculum Manager

Datenbankansichten

In einer Datenbank ist eine Ansicht das Ergebnis einer gespeicherten Abfrage der Daten, die die Datenbankbenutzer genauso abfragen können wie in einem persistenten Datenbank-Sammlungsobjekt (Wikipedia).

Virtuelle Tabelle, die nicht zum physischen Schema gehört

  • Die Abfrage, nicht die Daten, wird im Speicher abgelegt.
  • Die Daten werden aus den Tabellen zusammengetragen.
  • Kann wie eine normale Datenbank-Tabelle abgefragt werden
  • Du musst häufige Abfragen nicht nochmal eingeben oder Schemata ändern.
1 https://en.wikipedia.org/wiki/View_(SQL)
Datenbankdesign

Erstellen einer Ansicht (Syntax)

CREATE VIEW view_name AS
SELECT col1, col2 
FROM table_name 
WHERE condition;
Datenbankdesign

Erstellen einer Ansicht (Beispiel)

Buchgröße des Snowflake-Schemas

$$

Ziel: Titel und Autoren des Genres „ science fiction “ zurückgeben

Datenbankdesign

Erstellen einer Ansicht (Beispiel)

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';
Datenbankdesign

Abfrage einer Ansicht (Beispiel)

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 |
| ...                           | ...               | ...             |
Datenbankdesign

Hinter den Kulissen (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');
Datenbankdesign

Ansichten anzeigen

(in PostgreSQL)

$$

SELECT * FROM INFORMATION_SCHEMA.views;

Inklusive Systemansichten

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

Ausschluss von Systemansichten

Datenbankdesign

Vorteile von Ansichten

  • Nimmt keinen Stauraum weg
  • Eine Art von Zugangskontrolle
    • Versteck sensible Spalten und leg fest, was der Benutzer sehen darf
  • Die Komplexität von Abfragen
    • Nützlich für stark normalisierte Schemata
Datenbankdesign

Schema der Pitchfork-Rezensionsdatenbank

1 https://www.kaggle.com/nolanbconaway/pitchfork-data
Datenbankdesign

Lass uns üben!

Datenbankdesign

Preparing Video For Download...