Veritabanı görünümleri

Veritabanı Tasarımı

Lis Sulmont

Curriculum Manager

Veritabanı görünümleri

Bir veritabanında, bir görünüm, kullanıcıların kalıcı bir veritabanı koleksiyon nesnesinde olduğu gibi sorgulayabildiği, veriler üzerinde saklanan bir sorgunun sonuç kümesidir (Vikipedi)

Fiziksel şemanın parçası olmayan sanal tablo

  • Bellekte sorgu saklanır, veri değil
  • Veriler tablolardan birleştirilir
  • Normal bir tablo gibi sorgulanabilir
  • Sık sorguları yeniden yazmaya veya şemaları değiştirmeye gerek yok
1 https://en.wikipedia.org/wiki/View_(SQL)
Veritabanı Tasarımı

Görünüm oluşturma (sözdizimi)

CREATE VIEW view_name AS
SELECT col1, col2 
FROM table_name 
WHERE condition;
Veritabanı Tasarımı

Görünüm oluşturma (örnek)

Snowflake şemasının kitap boyutu

$$

Amaç: science fiction türünün başlıklarını ve yazarlarını döndürmek

Veritabanı Tasarımı

Görünüm oluşturma (örnek)

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';
Veritabanı Tasarımı

Bir görünümü sorgulama (örnek)

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 |
| ...                           | ...               | ...             |
Veritabanı Tasarımı

Arka planda neler olur

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');
Veritabanı Tasarımı

Görünümleri görüntüleme

(PostgreSQL'de)

$$

SELECT * FROM INFORMATION_SCHEMA.views;

Sistem görünümlerini içerir

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

Sistem görünümlerini hariç tutar

Veritabanı Tasarımı

Görünümlerin faydaları

  • Depolama kaplamaz
  • Bir tür erişim denetimi
    • Hassas sütunları gizleyin ve kullanıcının görebileceğini sınırlayın
  • Sorgu karmaşıklığını maskeler
    • Yüksek derecede normalleştirilmiş şemalar için yararlı
Veritabanı Tasarımı

$$ Pitchfork İncelemeleri Veritabanı şeması

1 https://www.kaggle.com/nolanbconaway/pitchfork-data
Veritabanı Tasarımı

Haydi pratik yapalım!

Veritabanı Tasarımı

Preparing Video For Download...