Veritabanı View’ler

Bu yazımızda belirli bir vtys özeline inmeden veritabanı view’lerinden, nasıl oluşturulup kullanıldıklarından ve üzerinde yapabileceğimiz DML işlemlerinden bahsedeceğiz.

View’ler fiziksel tablolar üzerinde çalıştırılan sorgular sonucu elde edilen verileri listelemeye yarayan mantıksal yapılardır. View’ler üzerinde veriler fiziksel olarak tutulmaz, bunun yerine sadece view’in tanımı tutulur. Bir view her çağrıldığında tanımda yer alan sorgu yeniden çalıştırılır, bu yüzden view içindeki veriler en güncel haldedir.

 

View’ler mantıksal olarak tablolar ile aynı yapıya sahiptirler, aynı şekilde satırlar ve kolonlar içerirler.

Fiziksel tablolar ile aynı yapıda olmasına rağmen neden view’lerin kullanımına gerek duyulduğunu düşünebilirsiniz. Temel birkaç sebebi şu şekilde sıralayabiliriz:

1-)Çok uzun ve karmaşık sorguları bir view içinde alarak sorguyu her çalıştıracağımızda basit bir select işlemi ile sorguyu tamamlayabiliriz.

2-)Birden fazla fiziksel veya mantıksal veritabanından tek bir veritabanından veri çekiyormuş gibi veri çekebiliriz.

3-)Gelen veriler üzerinde matematiksel işlemler veya formatlama işlemleri yaparak bunu kolon değeri gibi gösterebiliriz.

4-)Elimizdeki veritabanını mantıksal gruplara ayırıp (yıllar,modeller vb.) daha kolay raporlama ve daha yüksek performans alabiliriz.

5-)Uygulama geliştirici veya kullanıcılara sadece view’lere erişim hakkı verip tablolara erişim hakkı vermeyerek ekstra güvenlik sağlayabiliriz.

View Oluşturma
Bir view oluştururken aşağıdaki gibi bir sorgu kullanılır.

CREATE VIEW view_adi AS sorgu

örneğin

Create View vw_ticariotolar as Select * from otolar where turu=’ticari’

View güncelleme ve silme
Bir view’i güncellemek için

Alter VIEW view_adi AS sorgu

silmek için ise

Drop VIEW view_adi

örneğin

Alter View vw_ticariotolar as Select * from otolar where turu=’ticari’ and model=’2008′

Drop view vw_ticariotolar

View’lerde DML işlemleri
View’ler salt okunur olabileceği gibi, güncellenir de olabilirler. Bir View’in güncellenebilir olması için bazı şartları sağlaması gerekmektedir. Bunlar:

1-)Öncelikle view sadece bir tablo içermelidir.

2-)View’deki kolonlar max(),avg() vs. gibi kümeleme fonksiyonları kullanmamalılar.

3-)View’deki kolonlar Unique veya Distinct kullanmamalılar.

4-)Tanımda Union operatörü kullanılmamalı.

5-)Sorguda Group By veya hesaplanmış değerler olmamalıdır.

Bu şartları sağlayan bir view’de insert,update,delete işlemlerini yapabiliriz.

Örneğin

insert into vw_ticariotolar (turu,model) values (‘ticari’,’2007′)

Eğer yazdığımız view yukarıdaki şartları sağlamıyorsa güncellenebilir değildir, ve üzerinde dml işlemleri yapamayız. Ama kimi zaman salt okunur view’ler üzerinde de işlem yapmak isteyebiliriz. Bu durumda instead of trigger’ını kullanırız.

Instead Of Trigger
Adından da anlaşılacağı gibi bu trigger aracılığıyla bir işlem yerine kendi istediğimiz başka bir işlem ya da işlemler yaptırabiliriz.

Kullanımı aşağıdaki gibidir.

CREATE TRIGGER trigger_adi
   ON  view_adi
   INSTEAD OF islem
AS
BEGIN
      sorgu

END

islem yazan kısma hangi işlemin yerine trigger’ın tetikleneceğini belirtiriz. Update,Insert gibi..

Bir örnek vermek gerekirse

Create Trigger update_vw_ticariotolar On vw_ticariotolar

Instead of Update

As

Begin

      Update Otolar

      SET model = i.model,

      SET turu = i.turu

      From Inserted i  

      where otoid = i.otoid

END

Leave a Reply

Your email address will not be published. Required fields are marked *