Görünümleri yönetme

Veritabanı Tasarımı

Lis Sulmont

Curriculum Manager

Daha karmaşık görünümler oluşturma

  • Toplamalar: SUM(), AVG(), COUNT(), MIN(), MAX(), GROUP BY vb.
  • Birleştirmeler: INNER JOIN, LEFT JOIN. RIGHT JOIN, FULL JOIN
  • Koşullar: WHERE, HAVING, UNIQUE, NOT NULL, AND, OR,>,< vb.
Veritabanı Tasarımı

Bir görünüme erişim verme ve geri alma

GRANT privilege(s) veya REVOKE privilege(s)

ON object

TO role veya FROM role

  • Ayrıcalıklar: SELECT, INSERT, UPDATE, DELETE vb.
  • Nesneler: tablo, görünüm, şema vb.
  • Roller: bir veritabanı kullanıcısı veya kullanıcı grubu
Veritabanı Tasarımı

Erişim verme ve geri alma örneği

$$

GRANT UPDATE ON ratings TO PUBLIC;  

$$

REVOKE INSERT ON films FROM db_user;
Veritabanı Tasarımı

Bir görünümü güncelleme

UPDATE films SET kind = 'Dramatic' WHERE kind = 'Drama';

Tüm görünümler güncellenebilir değildir

  • Görünüm tek bir tablodan oluşur
  • Pencere veya toplama işlevi kullanılmaz
1 https://www.postgresql.org/docs/9.5/sql-update.html
Veritabanı Tasarımı

Bir görünüme ekleme

INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');

Tüm görünümler eklenebilir değildir

1 https://www.postgresql.org/docs/9.5/sql-insert.html
Veritabanı Tasarımı

Bir görünüme ekleme

INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');

Tüm görünümler eklenebilir değildir

Özet: veriyi görünümler üzerinden değiştirmekten kaçının

1 https://www.postgresql.org/docs/9.5/sql-insert.html
Veritabanı Tasarımı

Bir görünümü düşürme

DROP VIEW view_name [ CASCADE | RESTRICT ];
  • RESTRICT (varsayılan): görünüme bağımlı nesneler varsa hata döndürür
  • CASCADE: görünümü ve ona bağımlı tüm nesneleri düşürür
Veritabanı Tasarımı

Bir görünümü yeniden tanımlama

CREATE OR REPLACE VIEW view_name AS new_query
  • view_name adlı bir görünüm varsa, yerine yenisi geçer
  • new_query, eski sorguyla aynı sütun adlarını, sırasını ve veri tiplerini üretmelidir
  • Sütun çıktısı farklı olabilir
  • Sona yeni sütunlar eklenebilir

Bu koşullar sağlanamıyorsa, mevcut görünümü düşürüp yenisini oluşturun

1 https://www.postgresql.org/docs/9.2/sql-createview.html
Veritabanı Tasarımı

Bir görünümü değiştirme

ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER VIEW [ IF EXISTS ] name OWNER TO new_owner
ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )
ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )
1 https://www.postgresql.org/docs/9.2/sql-alterview.html
Veritabanı Tasarımı

Haydi pratik yapalım!

Veritabanı Tasarımı

Preparing Video For Download...