With encription view nesnelerini şifrelemek

Örnek: Seafood kategorisine ait ürünleri listeleyen view oluşturun.

create view Kategoriler
with encryption
as
select ProductName as [Urun Adı],UnitsInStock as [Stok Sayısı],
UnitPrice as [indirimli Fiyat] from Products
where CategoryID=8

Burada views klasörünün altında Kategoriler adında bir view oluşturuldu. Diğerlerinden farklı olarak bu view şifrelendi. Aşağıdaki şekilde görüldüğü üzere design kısmına erişim yasaklandı.

Ayrıca öyle bir view oluşturdum ki veritabanında bulunan isimleri de doğrudan bir başka kullanıcı göremiyor. As kelimesiyle takma isimler(Urun Adı, Stok Sayısı gibi) kullanıldı.

Eğer bir defa encryption ettiyseniz onu bir defa dencryption edemezsiniz. Geri döndüremezsiniz. Eğer bunu kullanırsanız bu kodlarınızı bir yere yazınız. Yoksa erişim nasıl oluşturduğunuzu unutabilirsiniz.

Burada dikkat edilmesi gereken nokta encryption kelimesi create den sonra as den önce kullanılır ve çok dikkat edilmesi gerekir.

View üzerinden insert işlemi

Eğer tek tablodan view oluşturmuşsak insert update ve delete işlemleri yapılabilir.

insert into Kategoriler([Urun Adı],[Stok Sayısı],[indirimli Fiyat])
values ('Balık',50,32)

Ne ilginçtir ki burada where koşulu kullanılamaz. Aşağıdaki şekilde Products tablosuna eklenmiş fakat CategoryID where koşuna 8 girmeme rağmen NULL diye eklenmiştir.

Eğer bağlantılı bir tablodan en az iki tablodan oluşan bir view ise insert update delete işlemlerine izin vermez.

View’larda Order By Kullanımı

Order by kullanılıyorsa viewlar içerisinde TOP kullanılmak zorundasınız. Bu sorgunuzu eğer encyrption yaptıysanız sorgunuzu dinamik haline getirmelisiniz. Top kullanırken sayı girmek yerine sorgu ile listenin count’unu döndürmek daha akıllıca olacaktır. Yeni bir ürün girildiği zaman view’lar böylece sorun çıkarmayacaktır. Aşağıdaki sorgu ile öncelikle view oluşturuldu sonra da select sorgusu ile veriler çekildi.

create view UrunFiyatListele
with encryption
as
select top(select count(*) from Products)
ProductName,UnitPrice
From Products order by UnitPrice asc
go
 
select * from UrunFiyatListele

Not: Alter komutuyla daha önceden tabloları değiştirebileceğimizi öğrenmiştik. Aynı durum için encryption kullanılsa bile view’ları değiştirebilirsiniz.

Yazan Sümeyra Akbıyık
hakkımdaki her şeyi bu blogda bulabilirsin. Haydi sende bir göz gezdirmeye ne dersin?

Yorum bırak