Datenbanksichten

Datenbankdesign

Lis Sulmont

Curriculum Manager

Datenbanksichten

Eine Sicht in einer Datenbank ist das Ergebnis einer gespeicherten Abfrage von Daten, die von den Benutzern der Datenbank genauso abgefragt werden kann wie ein persistent gespeichertes Datenbankobjekt (Wikipedia).

Virtuelle Tabelle, die nicht zum physischen Schema gehört

  • Abfrage wird im Speicher abgelegt, nicht Daten
  • Daten werden aus den Tabellen aggregiert
  • Kann wie eine normale Datenbank-Tabelle abgefragt werden
  • Kein wiederholtes Eingeben von häufigen Abfragen oder Ändern von Schemata
1 https://en.wikipedia.org/wiki/View_(SQL)
Datenbankdesign

Erstellen einer Sicht (Syntax)

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

Erstellen einer Sicht (Beispiel)

Book dimension of the snowflake schema

$$

Ziel: Titel und Autorinnen bzw. Autoren des Genres science fiction zurückgeben

Datenbankdesign

Erstellen einer Sicht (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 Sicht (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

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

Sichten anzeigen

(in PostgreSQL)

$$

SELECT * FROM INFORMATION_SCHEMA.views;

Inklusive Systemsichten

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

Exklusive Systemsichten

Datenbankdesign

Vorteile von Sichten

  • Benötigen keinen Speicherplatz
  • Eine Form von Zugangskontrolle
    • Verbergen sensible Spalten und schränken ein, was Nutzende sehen
  • Verbergen Komplexität von Abfragen
    • Nützlich für stark normalisierte Schemata
Datenbankdesign

$$ Schema of Pitchfork Reviews Database

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

Lass uns üben!

Datenbankdesign

Preparing Video For Download...