İçindekiler

    View Oluşturmanın Yararları

    Veri güvenliği;

    Veri tabanı içinde bulunan tablolardaki bazı sütunlarda bulunan bilgilerin, herkes tarafından görülmesi istenmeyebilir.

    Örneğin, personelin maaşlarının herkes tarafından listelenebilir olması mahsurlu olabilir. Bu durumda, Personel adlı temel (base) tablodan, persview adlı bir view oluşturulabilir.

             CREATE VIEW persview

              AS SELECT sicil,sos_g_no,ad,soyad,dog_tar,adres,cinsiyet,bol_no,yon_s_g_n

              FROM Personel; 

     
    persview adlı view, herkesin kullanımına açık, Personel adlı temel (base) tablo ise, yetkili kişiler dışındakilere, erişilemez  hale getirilirse, maaşların herkes tarafından erişilebilir bilgi olması önlenmiş olur.

          Bir view’den bilgi listelenmesi temel tablodan bilgi listelenmesinden farklı değildir.

          SELECT *

          FROM persview; 

     
    persview’den maaşlar hariç, tüm personel bilgileri listelenecektir.
     

    Bir temel tablodan bir view oluşturulurken, temel tablodaki aynı sütun (alan) isimlerini kullanmak zorunda değildir. Örneğin, Parça adlı ve par_no, par_ad, pr_no, fiyat ve ağırlık adlı sütun (alan) isimlerini içeren tablo kullanılarak oluşturulan parview içinde, par_no yerine parc_no, fiyat yerine fiy ve ağırlık yerine ağır isimleri kullanılmıştır:

         CREATE VIEW

          Parview(parc_no,fiy,ağır)

          AS SELECT par_no,fiyat,ağırlık

          FROM Parça; 

     
    Sorgulamanın daha basit hale gelmesi

    Karmaşık sorgulamalarda, bazı SELECT komutlarının sonuçları diğer SELECT komutlarınca kullanıldığında, sorgulamanın düzenlenmesinde yanlışlıklar yapma olasılığı artar.

    Karmaşık sorgulamalar, VIEW özelliği kullanılarak daha basit hale getirilebilir. Burada temel fikir şudur: Madem ki bir view, bir sorgulama sonucu elde edilen bilgiyi (tabloyu) isimlendirerek elde edilen bir virtüel tablodur; o halde karmaşık SELECT komutu içinde, sonucu kullanılacak başka bir SELECT komutu kullanmak yerine, bu sonucu bir view olarak isimlendirerek, view adını kullanmak. Bazı durumlarda ise, işletmenin veri tabanı uygulamasında çok sık olarak sorulan karmaşık soruları bir view yapısı içinde saklayarak, daha sonra aynı tip sorgulamalar için bu view yapısını kullanarak daha basit ifadeler kullanmakta olasıdır.

    Örnek: Satış bölümünde çalışan personelin herhangi birinden daha düşük maaş alan ve mühendislik bölümünde çalışan kişileri listelemek.

               SELECT *

                FROM Personel

                WHERE maas<ANY(SELECT maas

                                 FROM Personel

                                  WHERE bol_no=2) AND

                bol_no=1; 

     
          (Satış bölümü kodu 2 ve mühendislik bölümü kodu ise 1 kabul ediliyor.)

    Şimdi bu örneğin tablosu bir view olarak saklanırsa:

         CREATE VIEW S1view

          AS SELECT *

          FROM Personel

          WHERE maas<ANY(SELECT maas

                            FROM Personel

                             WHERE bol_no=2) AND

          bol_no=1; 

     
    bundan sonra aynı tip sorgulama için sadece

        SELECT *

        FROM S1view;

      yazmak yeterli olacaktır.

    Sadece view kullanılarak gerçekleşebilen sorgulamalar

    Bir tablodan elde edilecek  bilgiler için, iki kademeli işlem gerektiren sorgulamalarda, ilk adımda bir view oluşturup ikinci adımda esas sorgulamayı bu view yardımı ile gerçekleştirmek, çoğu kez kaçınılmaz bir durumdur.

    Aşağıdaki örnek SQL ifadeleri bu konuda bir fikir verecektir:

    Örnek: Her bölümde, o bölümdeki ortalama maaştan daha yüksek maaş alanları listeleyiniz.

    Bu örnek için önce her bölümdeki ortalama maaşların bulunması gereklidir.

         CREATE VIEW BOL_OR_VIEW(bol_no,ort,maas)

          AS SELECT bol_no,AVG(maas)

          FROM Personel

          GROUP BY bol_no;

     
    Daha sonra, yaratılan BOL_OR_VIEW yardımı ile (bu view, bölüm no’ları ve bölüm ortalama maaşlarını saklamaktadır) sorulan sorunun cevabı elde edilebilir:

      

     SELECT *

          FROM Personel

          WHERE bol_no=BOL_OR_VIEW.bol_no

          . AND.maas>ort_maas; 

      (Bu sorunun cevabını, şu ana kadar anlatılan diğer bilgilerle bulmaya çalışınız.)

    Veri bütünlüğünün sağlanması


    View oluşturma esnasında CHECK sözcüğünün kullanılması ile, o view’i oluştururken sağlanması gereken koşulların, daha sonra view içine veri ekleme ya da değişiklik işlemlerinde de ihmal edilmesi engellenmiş olur.

          Örneğin aşağıdaki gibi bir VIEW oluşturulsun:

          CREATE VIEW UST_PER_VIEW

          AS SELECT FROM Personel

          WHERE maas>25000000,

          WITH CHECK OPTION; 

     

    Burada,maaşı 25000000’un üstünde olan personelden oluşan bir UST_PEVIEW adlı view oluşturulmuştur. Daha sonra bu view içine;

         INSERT INTO UST_PER_VIEW

          VALUES(27521,&#8217;27865427&#8217;,&#8217;Ayşe&#8217;

         &#8216;Okan&#8217;,{01/05/62},&#8217;Cumh. Cad. 46-Taksim&#8217;,

         .F.,13000000,1,&#8217;27651112&#8217;);

     

    komutu ile maaşı 13000000 olan bir personel eklenmek istendiği zaman şu hata mesajı alınacaktır.

       

     Error: not enough non-null values

     
    Eğer CHECK opsiyonu kullanılmasaydı hata mesajı alınmadan bu veri view içine yüklenecekti. Bir tablo ya da view üzerinde veri ekleme, güncelleme ve silme işlemleri bir sonraki bölümde incelenecektir.