Kurs
Veritabanı yöneticileri ve kullanıcıları iki zorlukla karşılaşır: karmaşık SQL sorguları yazmak ve veritabanı erişimini güvenceye almak. Bazen çoklu join’ler, alt sorgular ve tek bir sorguda GROUP BY kullanımı nedeniyle SQL sorguları daha karmaşık hâle gelir.
Bu tür sorguları basitleştirmek için özgün tablonun üzerine bir tür vekil (proxy) kullanabilirsiniz. Ayrıca, güvenlik açısından veritabanı yöneticisi doğrudan veritabanı erişimini kısıtlamak isteyebilir. Örneğin, bir tabloda çeşitli sütunlar varsa ancak kullanıcının yalnızca üç sütuna ihtiyacı varsa, DBA üç sütundan oluşan sanal bir tablo oluşturur. Her iki amaç için de görünüm kullanabilirsiniz. Görünümler bir vekil veya sanal tablo gibi davranabilir. Görünümler, SQL sorgularının karmaşıklığını azaltır ve alttaki tablolara güvenli erişim sağlar.
Görünüm Nedir?
Görünümler, SQL’de tabloların özel bir sürümüdür. Çeşitli karmaşık işlemler için sanal bir tablo ortamı sunarlar. Görünümlerde verileri birden çok tablodan seçebilir veya belirli ölçütlere göre belirli verileri seçebilirsiniz. Gerçek veriyi tutmaz; yalnızca veri sözlüğünde görünüm tanımını tutar.

Görünüm, veri sözlüğünde saklanan ve kullanıcıların tıpkı tablolarda yaptıkları gibi sorgulayabildiği bir sorgudur. Fiziksel belleği kullanmaz, yalnızca sorgu veri sözlüğünde saklanır. Kullanıcı herhangi bir sorgu çalıştırdığında dinamik olarak hesaplanır. Görünümde herhangi bir noktada yapılan değişiklikler, asıl temel tabloda yansıtılır.
Görünümün başlıca iki amacı vardır:
- Karmaşık SQL sorgularını basitleştirmek.
- Kullanıcıların hassas verilere erişimini kısıtlamak.

Görünüm Türleri
- Basit Görünüm: Yalnızca tek bir tabloya dayanan,
GROUP BYifadesi ve herhangi bir fonksiyon içermeyen görünüm. -
Karmaşık Görünüm: Birden çok tabloya dayanan,
GROUP BYifadesi ve fonksiyonlar içeren görünüm. -
Satır İçi (Inline) Görünüm:
FROMifadesindeki bir alt sorguya dayanan; bu alt sorgu geçici bir tablo oluşturur ve karmaşık sorguyu basitleştirir. -
Materyalize Edilmiş Görünüm: Hem tanımı hem de veriyi saklayan görünüm. Veriyi fiziksel olarak saklayarak kopyalarını oluşturur.

Basit Görünüm

Karmaşık Görünüm


Satır İçi (Inline) Görünüm
Satır içi görünüm, başka bir SELECT deyiminin FROM ifadesinde yer alan bir SELECT deyimidir ve SELECT deyimi tarafından başvurulabilecek geçici bir tablo oluşturur. Satır içi görünümler, join ve alt sorgu işlemleri olmadan karmaşık SQL sorguları yazmak için kullanılır. Buna geçici tablo denir çünkü saklanan alt sorgunun döndürdüğü verinin kopyası veritabanında tutulmaz. Oracle ve Postgres topluluğunda bu geçici tabloya satır içi görünüm denir. Alt seçim (subselect) olarak da anılır.

Materyalize Edilmiş Görünüm
Materyalize edilmiş görünüm, getirilen veriyi fiziksel olarak çoğaltır. Bu çoğaltılmış veri, görünümü yeniden çalıştırmadan tekrar kullanılabilir. Bu tür görünümlere "ANLIK GÖRÜNTÜLER (SNAPSHOTS)" de denir. Materyalize edilmiş görünüm, tüm veriyi yeniden üretme süresini azaltır. Uzak kullanıcıların veriyi yerelde çoğaltmasına ve sorgu performansını iyileştirmesine yardımcı olur. Buradaki zorlu kısım, materyalize edilmiş görünümlerin dayandığı tablolardaki değişiklikleri eşzamanlı tutmaktır.


Görünüm ve Materyalize Edilmiş Görünüm Karşılaştırması

SQL’de Görünüm Oluşturma ve Silme
Görünüm, CREATE VIEW ve REPLACE VIEW kullanılarak oluşturulabilir ve değiştirilebilir.

Görünüm, DROP VIEW komutu kullanılarak silinebilir.

Görünümlerin Artıları ve Eksileri
Görünümler, belirli işlemleri gerçekleştirmek için gerçek verinin bir alt kümesi olarak kullanılabilir. Çeşitli kullanıcılara soyutlama sunmamıza veya tablodan veri alan kullanıcılar için karmaşıklığı gizlememize yardımcı olur. Örneğin, bir kullanıcıya tüm tablo yerine belirli sütunlardaki verilere erişim izni verilebilir. Karmaşık sorguları daha basit hâle getirmemize yardımcı olabilir. Birden çok birleştirilmiş tablodan veri erişimini de basitleştirir. Group by işlemleriyle birleştirilmiş (aggregate) tablolar olarak kullanılabilir. Görünümler güvenlik amaçları için kullanılabilir veya güvenlik açısından ekstra değer katabilir. Veri sözlüğünde yalnızca tanımı bulunduğu, gerçek verinin kopyasını tutmadığı için yer kaplamaz.
Pek çok avantaja rağmen, görünümlerin taban tablo yapısına bağımlılık, hesaplama süresi ve kısıtlamalar gibi bazı dezavantajları da vardır. Görünümler tablo yapısına bağımlıdır. Tablo yapısını değiştirirseniz buna bağlı görünüm tanımını da değiştirmeniz gerekir.
Sonuç
Tebrikler, bu eğitimin sonuna ulaştınız!
Bu eğitimde Görünümler hakkında pek çok ayrıntıyı ele aldınız. Görünümlerin ne olduğunu, görünüm türlerini, Basit Görünüm, Karmaşık Görünüm, Satır İçi Görünüm, Materyalize Edilmiş Görünüm’ü, görünümleri oluşturma ve silme söz dizimini ve Görünümlerin artılarını ve eksilerini öğrendiniz.
Şimdi Görünümler kavramını kendi veri kümelerinizi analiz etmek için kullanın. Bu eğitimi okuduğunuz için teşekkürler!
SQL hakkında daha fazla bilgi edinmek isterseniz, Introduction to Relational Databases in SQL kursumuzu alın.
