Konular

EBooklar

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.

Yorumunuzu Ekleyin


Yorumlar

  1. G.M
    G.M
    Eyvallah cok saolasın..
    16 Nisan 2011 01:13:19, Cumartesi Like
  • Veritabanı Nedir?
  • Veritabanı Nedir? ~ 91,325

    Veritabanı basit olarak bilgi depolayan bir yazılımdır. Bir çok yazılım bilgi depolayabilir ama aradaki fark, veritabanın bu bilgiyi verimli ve hizli bir şekilde yönetip degiştirebilmesidir. Veritabanı, bilgi sisteminin kalbidir ve etkili kullanmakla değe...


  • Sql Komutları
  • Sql Komutları ~ 88,379

    Sql komutlarından DISTINCT, IN, NOT IN, IN(SELECT...), ANY, ALL, EXISTS, NOT EXISTS, UNION, EXCEPT, BETWEEN kullanımı











  • Join İşlemleri
  • Join İşlemleri ~ 28,072

    İlişkisel veritabanının en temelinde birden fazla tablo üstünde birlikte işlem yapabilmek yatar. Bu sayede verilerin tekrarlaması önlenmiş olur ve sonuçta veri yönetimi kolaylaşır.


  • View Oluşturma ~ 26,626

    Sql komutlarından view oluşturma ve faydaları, myadminde gösterimi









  • Sql Komutları ~ 19,153

    Dıstınct, ın, not ın, ınselect..., any, all, exısts, not exısts, unıon, except, between










  • Joinler
  • Joinler ~ 16,036

    Joinler, inner join, left join, right join