• Veritabanlarında GÖRÜNÜM görünümleri nedir? Ve neden ihtiyaç duyuluyor? Görünümler Oluşturma ve Kullanma

    SQL-verim(SQL görünümü), diğer tablolardan veya görünümlerden oluşan sanal bir tablodur. Bir görünümün kendi verileri yoktur, ancak içerdiği tablolardan veya görünümlerden gelen verileri birleştirir. Görünümler, SELECT deyimleri kullanılarak oluşturulur ve birçok kullanımları vardır:

      Onların yardımıyla, tek tek sütunları veya satırları erişimden gizleyebilirsiniz. Bu, kullanıcıların verilere görünümler aracılığıyla erişmesine izin veren, ancak onlara doğrudan temel tablolara erişme izni vermeyen bir güvenlik mekanizmasıdır.

      Veritabanındaki bilgilerin her kullanıcı tarafından algılanmasını basitleştirmek ve özelleştirmek için hesaplanan sütunları görüntülemenize ve karmaşık SQL ifadelerini gizlemenize olanak tanırlar.

      Görünümler ayrıca, uygulama tarafından işlenen veriler ile veri arasında bir soyutlama katmanı sağlar. gerçek veri tablolarda yer almaktadır. Aşağıdaki bölümlerde, bu kullanımların her birinin örnekleri incelenmekte ve görünümler için diğer bazı kullanımlar tartışılmaktadır.

      1. SQL dizinleri

    dizin(İngilizce dizin) - veri alma performansını iyileştirmek için oluşturulmuş bir veritabanı nesnesi. Bir veritabanındaki tablolar sahip olabilir çok sayıda rastgele sırada depolanan satırlar ve tabloyu satır satır sırayla tarayarak belirli bir kritere göre arama yapmak uzun zaman alabilir. Dizin, tablonun bir veya daha fazla sütununun değerlerinden ve tablonun karşılık gelen satırlarına işaretçilerden oluşur ve böylece arama kriterlerini karşılayan satırları aramanıza olanak tanır. Dizinleri kullanarak çalışmayı hızlandırmak, öncelikle dizinin arama için optimize edilmiş bir yapıya - örneğin dengeli bir ağaç - sahip olması nedeniyle elde edilir.

      1. tetikleyiciler

    Tetikleyiciler, birden çok uygulama tarafından kullanılsa bile bir veritabanının bütünlüğünü sağlayabileceğiniz yöntemlerdir.

    Tetiklemek - koruduğu verileri değiştirmeye çalışıldığında otomatik olarak yürütülen özel bir saklı yordam türüdür. Tetikleyiciler, verilerde yetkisiz veya yanlış değişiklikleri önleyerek veri bütünlüğünü sağlar.

    Diyelim ki veritabanında bir alan aracılığıyla ilişkili tablolar var. durmak. İsim. Örneğin, şehir içi ulaşım durakları ve güzergahları tablosu olabilir. Bir durak girişini her silmeye çalıştığınızda, bu duraktan geçen rotaların varlığını kontrol eden ve yalnızca yoksa bu girişi silmenize izin veren bir tetikleyici tanımlamak mantıklıdır.

    Tetikleyiciler hiçbir parametre almaz ve değer döndürmez. Dolaylı olarak yürütülürler, yani tetikleyici yalnızca verileri değiştirmek için bir girişim yapıldığında tetiklenir.

      1. saklı yordamlar

    Saklı yordam - SQL Server sistem veritabanında saklanan derlenmiş Transact-SQL deyimlerinin bir dizisidir. Saklı yordamlar önceden derlenmiştir, dolayısıyla normal sorgulardan daha verimlidirler. Saklı yordamlar doğrudan sunucu üzerinde çalışır ve istemci-sunucu modeline tam olarak uyar.

    İki tür saklı yordam vardır: sistem ve kullanıcı tanımlı.

    Sistem saklı yordamlar sistem tablolarından bilgi almak ve çeşitli hizmet işlemlerini gerçekleştirmek için tasarlanmıştır ve özellikle bir veritabanını yönetirken kullanışlıdır. Adları sp_ (saklı yordam) ile başlar.

    Özel Saklı Yordamlar doğrudan geliştiriciler veya veritabanı yöneticileri tarafından oluşturulur.

    Saklı yordamların kullanışlılığı, öncelikle yüksek (normal T-SQL sorgularıyla karşılaştırıldığında) yürütme hızlarıyla belirlenir. Ayrıca sık yapılan operasyonları düzenleme aracıdırlar. Bir saklı yordamı ilk kez çalıştırdığınızda, birkaç adım vardır.

      Prosedür, ifadelerin sözcük çözümleyicisi tarafından ayrı bileşenlere bölünür.

      Veritabanı nesnelerine atıfta bulunan bileşenler (tablolar, dizinler, görünümler, vb.), varlıkları için bir ön kontrol ile bu nesnelerle ilişkilendirilir. Bu süreç denir bir kerebağlantı çözümü.

      Prosedürün kaynak metni syscomments sistem tablosunda, adı ise sysobjects tablosunda saklanır.

      Bir ön sorgu yürütme planı oluşturulur. Bu ön plana denir normalleştirilmiş plan veya sorgu ağacı ve sysprocedures sistem tablosunda saklanır.

      Saklı yordam ilk kez yürütüldüğünde, sorgu ağacı okunur ve son olarak optimize edilir. Önceden oluşturulan prosedür planı yürütülür.

    Bu şema, tekrarlanan çağrıların ayrıştırma, referansları çözme ve sorgu ağacını derleme ile zaman kaybetmemesini mümkün kılar. Ve sonraki aramalarda yalnızca beşinci adım gerçekleştirilir. Ayrıca, saklı yordamın ilk çalıştırmadan sonraki planı, yüksek hızlı bir yordam önbelleğinde bulunur. Bu, prosedür çağrısı sırasında okuma hızının çok yüksek olacağı anlamına gelir.

    Saklı yordamları kullanmanın bir dizi ek faydası vardır.

    1. Saklı yordamlar, kuralları ayrı bir yapıya ayırmanıza olanak tanır. Gelecekte, bu kurallar sağlam bir veri arabirimi oluşturan birçok uygulama tarafından kullanılmaktadır. Bu yaklaşımın avantajı, tüm uygulamaları için değil, veritabanı nesnelerinin yalnızca belirli bir kısmı için kuralları değiştirmenin mümkün olmasıdır.

    2. Saklı yordamların kullanılması, sorguların performansını önemli ölçüde artırır, ancak en büyük artış, sorgu planı sistem önbelleğinde kalıcı olarak depolandığında, tekrarlayan işlemler gerçekleştirilirken elde edilir.

    3. Saklı yordamlar, çalıştırıldıklarında bağımsız değişkenler alabilir ve değerler (sonuç kümeleri biçiminde) döndürür.

    4. Saklı yordamlar, SQL Server başladığında ayarlanan bir programa (otomatik yürütme modunda) göre çalışabilir.

    5. Saklı yordamlar, herhangi bir zamanda verileri almak veya değiştirmek için kullanılır.

    6. Tetikleyicilerin aksine saklı yordamlar açıkça çağrılır. Yani, bir prosedüre doğrudan bir uygulamadan, betikten, paketten veya görevden erişildiğinde.

    Saklı yordamlar, güçlü bir veri işleme aracıdır. Sistem saklı yordamlar çok oynar önemli rol veritabanı yönetimi ve bakımı. Özel saklı yordamlar, hemen hemen her sorunu çözmek için kullanılır. Ek olarak, kullanıcının prosedürün eriştiği nesnelere erişim hakkı olmasa bile, bir kullanıcıya saklı bir prosedürü yürütme hakkı verilebilir.

    1) Temsil kavramı
    Görünümler, kendi tablolarını içermeyen, ancak içerikleri bir sorgu yürütülerek diğer tablolardan veya görünümlerden alınan veritabanı nesneleridir.

    2) Görünümler oluşturun
    GÖRÜNÜM OLUŞTUR
    [()]
    GİBİ
    SEÇENEĞİ KONTROL ET]

    notlar:
    SQL Server'da, bir görünümün metni, görünüm adından sonra ŞİFRELEME İLE seçeneği kullanılarak şifrelenebilir.

    3) Görünümleri kaldırma
    GÖRÜNÜMÜ DÜŞÜR CASDADE|RESTRICT

    Not:
    KISITLAMAK– görünümde ve kısıtlamalarda silinmekte olan görünüme hiçbir referans olmamalıdır, aksi takdirde silme reddedilir.
    KAZA- bu görünüme atıfta bulunan tüm nesnelerin kaldırılması anlamına gelir.

    4) Anahtar kelimeler
    A) yinelemeli
    Kendisinden değer alan bir görünüm oluşturulur.
    B) KONTROL SEÇENEĞİ İLE
    Değiştirilmekte veya eklenmekte olan veriler görünüme yansıtılmıyorsa, görünümlere dayalı olarak tablo güncellemelerini engeller.
    Yasak, yalnızca WHERE yan tümcesinde belirtilen koşulları karşılamayan değerler için geçerlidir.
    C) YEREL
    Temel tablolarda değişiklik yapan kontroller yalnızca geçerli görünümde yansıtılır.
    D) KASKADELİ
    Değişikliklerin bu görünümde tanımlanan tüm görünümlere yansıtılıp yansıtılmayacağını kontrol eder.

    5) Sınırlamalar ve özellikler
    1. Sütun adları genellikle bazı sütunlar hesaplandığında ve bu nedenle adlandırılmadığında ve ayrıca iki veya daha fazla sütun sorgudaki karşılık gelen tablolarda aynı ada sahip olduğunda belirtilir. Her zaman InterBase'de.
    2. Bazı VTYS'lerde sıralama sağlayan ORDER BY yantümcesini kullanmak imkansızdır.
    3. Görünümler, her iki nesneyi de sorgulayarak hem temel tablolara hem de diğer görünümlere bağlanabilir.

    6) Görünümleri güncelleme kriterleri
    1. Tek bir tabloya dayalı olmalıdır. tercihen içermelidir birincil anahtar tablolar.
    2. Toplama fonksiyonlarının uygulanması sonucunda elde edilen sütunları içermemelidir.
    3. Tanımında DISTINCT özelliği içeremez.
    4. Tanımında GROUP BY veya HAVING kullanamaz.
    5. Alt sorgu içermemelidir.
    6. Başka bir görünümde tanımlıysa, o zaman da güncellenebilir olmalıdır.
    7. Çıktı alanları listesine sabitler, dizeler veya ifadeler dahil edilemez. Alanların yeniden düzenlenmesine ve yeniden adlandırılmasına izin verilmez.
    8. Bir INSERT deyimi için, temel tablo görünümlerinden NULL DEĞİL kısıtlamaları olan tüm alanları içermelidir, ancak varsayılan değer olarak farklı bir değer belirtilebilir.

    7) Örnekler

    1. GÖRÜNÜM OLUŞTURUN LondonStaff
    SEÇİM OLARAK * SalesPeople'DAN NEREDE Şehir='Londra'

    2. GÖRÜNÜM OLUŞTURUN SalesOwn
    SalesPeople'DAN SNum, SName, City SEÇİN

    3. GÖRÜNÜM OLUŞTUR
    AS SEÇİMİ ONum, Amt, A.SNum, SName, CName
    A Siparişlerinden, Müşteri B'den, Satış Personeli C'den
    NEREDE A.CNum=B.CNum VE A.SNUM=C.SNum

    Güncellemeleri devre dışı bırakma örnekleri:

    1. GÖRÜNÜM OLUŞTUR Yüksek Derecelendirme AS SEÇ CNum, Derecelendirme

    2. Görünümün görmediği bir satır ekleyin:
    HighRating DEĞERLERİNE EKLEYİN(2018, 200)
    3. Görünür olmayan satırların eklenmesini yasaklıyoruz:
    GÖRÜNÜM OLUŞTUR Yüksek Derecelendirme OLARAK SEÇ CNum, Derecelendirme
    NEREDEN Müşteri Puanı=300
    KONTROL SEÇENEĞİ İLE
    4. Tekrar eklemenizi sağlayan yeni bir tane oluşturun:
    GÖRÜNÜMÜ OLUŞTUR MyRating OLARAK SEÇİN * HighRating'DEN

    Temsil kavramı verilir. Veri güvenliği konularında temsillerin rolü belirlenir. Görünümleri yönetme sürecini açıklar: görünümleri oluşturma, değiştirme, uygulama, silme.

    Tanımı görüntüle

    Görünümler veya görünümler (GÖRÜNÜM), geçici, türetilmiş (aksi durumda - sanal) tablolardır ve bilgilerin temel tablolarda olduğu gibi kalıcı olarak depolanmadığı, ancak erişildiğinde dinamik olarak oluşturulduğu veritabanı nesneleridir. Sıradan tablolar temeldir, yani. veri içeren ve kalıcı olarak bilgi depolama cihazında bulunan. Bir görünüm kendi başına var olamaz, ancak yalnızca bir veya daha fazla tablo açısından tanımlanır. Görünümlerin kullanılması, veritabanı geliştiricisinin her kullanıcıya veya kullanıcı grubuna, kullanım kolaylığı ve güvenlik sorununu çözen verilerle çalışmanın en uygun yolunu sağlamasına olanak tanır. Görünümlerin içerikleri diğer tablolardan sorgu çalıştırılarak seçilir ve tablolardaki değerler değiştiğinde görünümdeki veriler de otomatik olarak değişir. Görünüm aslında herhangi bir komuta her katıldığınızda yürütülen sorgunun aynısıdır. Zamanın her noktasında bu sorguyu yürütmenin sonucu, görünümün içeriği olur. Kullanıcı, gerçek, gerçek hayattaki bir tabloyla çalıştığı izlenimini edinir.

    DBMS'nin iki olasılığı vardır görüşlerin uygulanması. Tanımı basitse sistem, görünümün her kaydını gerektiği gibi oluşturur ve temel tablolardan kaynak verileri kademeli olarak okur. Bir DBMS'nin karmaşık bir tanımı durumunda, önce görünüm materyalizasyonu gibi bir işlem gerçekleştirilmelidir, örn. görünümü oluşturan bilgileri geçici bir tabloda saklayın. Ardından sistem, kullanıcı komutunu yürütmeye ve sonuçlarını oluşturmaya başlar ve ardından geçici tablo silinir.

    Görünüm, veritabanında saklanan, normal bir tablo gibi görünen ve gerektirmeyen önceden tanımlanmış bir sorgudur. disk kapasitesi. Görünümü saklamak için yalnızca Veri deposu. Diğer veritabanı nesnelerinden farklı olarak, bir görünüm, görünümün tanımını depolamak için gereken bellek dışında herhangi bir disk alanı kaplamaz.

    Dil standardında temsillerin oluşturulması ve değiştirilmesi ve MS SQL Server'da uygulanması aynıdır ve aşağıdaki komutla temsil edilir:

    <определение_просмотра>::= ( CREATE| ALTER) VIEW view_name [(column_name [,...n])] AS SELECT_deyimi

    Ana parametrelerin amacını göz önünde bulundurun.

    Varsayılan olarak, görünümdeki sütun adları, kaynak tablolardaki sütun adlarıyla eşleşir. Hesaplanmış sütunlar için veya aynı ada sahip sütunları olan birden çok tabloyu birleştirirken açık bir sütun adı gerekir. Sütun adları, görünümdeki sıralarına göre virgülle ayrılmış olarak listelenir.

    İLE ŞİFRELEME seçeneği, sunucuya SQL sorgusunu şifrelemesini ve yetkisiz kişilerce görüntülenemeyeceğini veya kullanılamayacağını garanti eder. Bir görünüm tanımlarken kaynak tablo ve sütun adlarını ve veri birleştirme algoritmasını gizlemek istiyorsanız, bu argümanı kullanmalısınız.

    İLE KONTROL SEÇENEĞİ seçeneği, sunucuya görünüm aracılığıyla yapılan değişiklikleri SELECT deyiminde belirtilen ölçütlere göre kontrol etmesini söyler. Bu, satırın görünümden kaybolmasına neden olacak değişikliklere izin verilmediği anlamına gelir. Bu, bir görünümde yatay bir filtre seti olduğunda ve verilerin değiştirilmesi satırın ayarlanan filtrelerle eşleşmemesine neden olduğunda gerçekleşir. WITH CHECK OPTION bağımsız değişkeninin kullanılması, yapılan değişikliklerin görünüme yansıtılmasını sağlar. Kullanıcı, satırın görünümden çıkarılmasına neden olacak değişiklikler yapmaya çalışırsa, İLE KONTROL SEÇENEĞİ belirtilirse, sunucu bir hata mesajı verir ve tüm değişiklikler reddedilir.

    Örnek 10.1. Moskova'dan müşterilerin temsilinde gösterin.

    Görünüm oluşturma:

    Bir görünümden veri alma:

    Görünüm1'den * SEÇİN

    Görünüme, sanki normal bir tabloymuş gibi SELECT deyimi kullanılarak erişilir.

    Bir görünüm, tıpkı diğer tablolar gibi bir komutta kullanılabilir. Bir görünüme sorgu oluşturabilir, değiştirebilir (belirli gereksinimleri karşılıyorsa) ve onu diğer tablolara bağlayabilirsiniz. Bir görünümün içeriği sabit değildir ve bir komutta her başvurulduğunda güncellenir. Görünümler, veri yönetimi olanaklarını büyük ölçüde genişletir. Özellikle, bu, verilerin bir kısmını gizlerken bir tablodaki bilgilere erişime izin vermenin harika bir yoludur.

    Örneğin görünüm, kullanıcının İstemci tablosundaki verilere erişimini kısıtlayarak, değerlerin yalnızca bir kısmının görülmesine izin verir.

    Komutu çalıştıralım:

    view1 DEĞERLERİNE EKLEYİN (12, "Petrov", "Samara")

    Bu, görünümde geçerli bir komuttur ve satır, view1 tarafından Müşteri tablosuna eklenecektir. Ancak bilgiler eklendiğinde, şehrin adı Moskova'dan farklı olduğu için satır görünümden kaybolacaktır. Bazen bu yaklaşım bir sorun olabilir çünkü veriler zaten tablodadır, ancak kullanıcı bunları görmez ve silemez veya değiştiremez. Bu tür anlardan kaçınmak için, görünüm tanımındaki İLE KONTROL SEÇENEĞİNİ kullanın. İfade, görünüm tanımına yerleştirilir ve tüm değiştirme komutları doğrulamaya tabi olacaktır.

    Böyle bir temsil için, yukarıdaki değer girişi sistem tarafından reddedilecektir.

    Bu nedenle, bir görünüm DML değiştirme komutlarıyla değiştirilebilir, ancak gerçek değişiklik görünümün kendisini değil, alttaki tabloyu etkiler.

    Görünüm şu komutla silinir:

    DROP VIEW görünüm adı [,...n]

    Görünümlerdeki verileri güncelleme

    SQL'deki tüm görünümler değiştirilemez. Değiştirilebilir Görünüm aşağıdaki kriterlere göre belirlenir:

    • sadece bir temel tabloya dayalı;
    • bu tablonun birincil anahtarını içerir;
    • tanımında DISTINCT içermez;
    • tanımında GROUP BY veya HAVING kullanmaz;
    • mümkünse tanımında alt sorgular kullanmaz;
    • seçilen çıktı alanları arasında sabitler veya değer ifadeleri kullanmaz;
    • NOT NULL özniteliğine sahip her tablo sütunu taramaya dahil edilmelidir;
    • gözat SELECT deyimi toplama (toplam) işlevleri, tablo birleştirmeleri, saklı yordamlar veya kullanıcı tanımlı işlevleri kullanmaz;
    • tek bir sorguya dayalıdır, bu nedenle UNION'a izin verilmez.

    Görünüm bu koşulları sağlıyorsa, INSERT , UPDATE , DELETE deyimleri ona uygulanabilir. ve arasındaki farklar temsiller salt okunur rastgele değildir. Kullanım amaçları farklıdır. İLE değiştirilebilir görünümler temelde temel tablolarla tamamen aynı şekilde ele alınır. Aslında, kullanıcılar talep ettikleri nesnenin bir temel tablo mu yoksa bir görünüm mü olduğunu bile anlayamaz, yani. öncelikle gizli veya alakasız bilgileri gizlemek için bir koruma aracıdır. bu kullanıcı tablonun parçaları. modunda görüntülemeler<только для чтения>verileri daha rasyonel bir şekilde almanıza ve biçimlendirmenize izin verir. Alınan bilgileri depolayarak yürütülebilen ve tekrarlanabilen karmaşık sorgulardan oluşan bir cephanelik oluştururlar. Bu sorguların sonuçları daha sonra diğer sorgularda kullanılabilir, karmaşık tahminlerden kaçınılır ve hatalı eylem olasılığı azaltılır.

    Client.LastName, Client.Company, Trade.Number'ı Client INNER JOIN'DEN SEÇİN OLARAK GÖRÜNÜM GÖRÜNÜMÜ OLUŞTURUN Trade ON Client.ClientId=Trade.ClientID Örnek 10.3. Farklı tablolardan alınan verilerle değiştirilemez bir görünüm.

    GÖRÜNÜM OLUŞTUR görünüm3(Tür, Toplam Kalan) TİPE GÖRE Emtia Grubundan Tip, Toplam(Kalan) SEÇİN Örnek 10.4. Gruplandırma ve özet fonksiyonları ile değiştirilemez görünüm.

    Tipik olarak görünümler, doğrudan temel alınan tablonun alan adlarından türetilen adları kullanır. Ancak, özet işlevler veya hesaplanan sütunlar gibi durumlarda, bazen sütunlara yeni adlar vermek gerekir.

    GÖRÜNÜM OLUŞTUR view4(Kod, İsim, Tip, Fiyat, Vergi) OLARAK İtemKodu, İsim, Tip, Fiyat, Fiyat*0,05 ÖLÇÜDEN SEÇİN Örnek 10.5. Hesaplamalarla değiştirilebilir gösterim.

    Temsillerin avantajları ve dezavantajları

    Görünüm motoru, görünümleri tanımlayarak veritabanının gerçek yapısını bazı kullanıcılardan gizlemenizi sağlayan güçlü bir DBMS aracıdır. Herhangi uygulamayı görüntüle temsil edilen ilişkinin durumunun, temsilin tanımlandığı verilerin durumuyla tam olarak eşleşmesini sağlamalıdır. Tipik olarak, bir görünüm her kullanıldığında değerlendirilir. Bir görünüm oluşturulduğunda, bununla ilgili bilgiler veritabanı dizinine kendi adı altında yazılır. Verilerdeki herhangi bir değişiklik, görünümde yeterince gösterilecektir - bu, çok benzer bir veritabanı sorgusundan farkıdır. Aynı zamanda, talep<мгновенную фотографию>veri ve değiştirirken son istek veritabanına tekrarlanmalıdır. Veritabanında temsillerin varlığı, verilerin mantıksal bağımsızlığını sağlamak için gereklidir. Sistem verilerin fiziksel bağımsızlığını sağlıyorsa, veritabanının fiziksel yapısındaki değişiklikler kullanıcı programlarının çalışmasını etkilemez. Mantıksal bağımsızlık, mantıksal veri yapısını değiştirirken kullanıcı programlarının da etkilenmemesi anlamına gelir, bu da sistemin veritabanının büyümesi ve yeniden yapılandırılmasıyla ilgili sorunları çözebilmesi gerektiği anlamına gelir. Açıkçası, veritabanında depolanan veri miktarındaki artışla birlikte, yeni nitelikler veya ilişkiler ekleyerek onu genişletmek gerekli hale gelir - buna veritabanının büyümesi denir. Verilerin yeniden yapılandırılması, örneğin ilişkilerdeki öznitelikleri yeniden düzenleyerek aynı bilgileri tutmayı ancak konumunu değiştirmeyi içerir. Diyelim ki bir oranın bir nedenden dolayı ikiye bölünmesi gerekiyor. Ortaya çıkan ilişkilerin görünümde birleştirilmesi, orijinal ilişkiyi yeniden oluşturarak kullanıcıda herhangi bir yeniden yapılandırmanın gerçekleşmediği izlenimini bırakır. Yeniden yapılandırma sorununu çözmenin yanı sıra, aynı verileri farklı kullanıcılar tarafından ve farklı şekillerde görüntülemek için bir görünüm kullanılabilir. Görünümler sayesinde kullanıcı, kullanım kolaylığı için veri miktarını sınırlama olanağına sahiptir. Son olarak, görüntüleme mekanizması, kullanıcıların ilgisini çekmeyen genel verileri gizlemenize olanak tanır.

    DBMS ayrı bir bilgisayarda çalışıyorsa kişisel bilgisayar görünümlerin kullanımı genellikle yalnızca veritabanı sorgularının yapısını basitleştirmeyi amaçlar. Bununla birlikte, çok kullanıcılı bir ağ DBMS durumunda, görünümler, veritabanının yapısının belirlenmesinde ve bilgi korumasının düzenlenmesinde kilit bir rol oynar. Ana düşünün görünümleri kullanmanın faydaları böyle bir ortamda.

    Veri Bağımsızlığı

    Görünümlerle, kaynak tabloların formatı değişse bile (örneğin, sütun ekleme veya kaldırma, ilişkileri değiştirme, tabloları bölme, yeniden yapılandırma veya yeniden adlandırma) sabit kalacak bir veritabanı yapısının tutarlı, değişmeyen bir resmini oluşturabilirsiniz. onlara). Bir görünümde kullanılmayan sütunlar tabloya eklenir veya tablodan çıkarılırsa, görünüm tanımının değiştirilmesine gerek yoktur. Orijinal tablonun yapısı yeniden sıralanırsa veya tablo bölünürse, eski sanal tabloyla çalışmanıza izin veren bir görünüm oluşturabilirsiniz. Orijinal tablonun bölünmesi durumunda, eski biçim, yeni oluşturulan tabloların bağlantısı temelinde oluşturulmuş bir görünüm kullanılarak sanal olarak yeniden oluşturulabilir - tabii ki bu mümkün olursa. Yeni oluşturulan tüm tablolara eski tablonun birincil anahtarı yerleştirilerek son koşul sağlanabilir.

    alaka

    Tanım sorgusunda belirtilen herhangi bir veritabanı tablosundaki verilerde yapılan değişiklikler, görünümün içeriğine anında yansıtılır.

    Veri güvenliğini artırma

    Veri erişim hakları, yalnızca kullanıcının ihtiyaç duyduğu veri alt kümesini içeren sınırlı sayıda görünüm aracılığıyla verilebilir. Bu yaklaşım, belirli kullanıcı kategorilerinin veritabanındaki bilgilere erişimi üzerindeki kontrolü önemli ölçüde sıkılaştırmayı mümkün kılar.

    Maliyet azaltma

    Görünümler, birden çok tablodaki verileri tek bir sanal tabloda birleştirerek sorgu yapınızı basitleştirmenize olanak tanır. Sonuç olarak, çok tablolu sorgular, tek bir görünüme karşı basit sorgulara indirgenir.

    Ek olanaklar

    Görünümler oluşturmak, kullanıcılara verilerin yalnızca gerçekten ihtiyaç duydukları kısmıyla çalışabilme gibi ek kolaylıklar sağlayabilir. Sonuç olarak, her son kullanıcının ihtiyaç duyacağı veri modelinin maksimum düzeyde basitleştirilmesini sağlayabilirsiniz.

    Özelleştirme imkanı

    Görünümler, tek bir veritabanı görüntüsünü özelleştirmenin uygun bir yoludur. Sonuç olarak, aynı tablolar tamamen farklı bir biçimde kullanıcılara sunulabilir.

    Veri Bütünlüğünün Sağlanması

    CREATE VIEW deyiminde WITH CHECK OPTION yan tümcesi belirtilirse, DBMS, tanım sorgusunda WHERE yan tümcesini karşılamayan satırların hiçbirinin veritabanının kaynak tablolarına girilmemesini sağlayacaktır. Bu mekanizma, görünümdeki verilerin bütünlüğünü garanti eder.

    Özelleştirilmiş görünümler oluşturarak bazı kullanıcıların verilere erişimini kısıtlama uygulaması, kesinlikle onlara vermeye göre önemli avantajlara sahiptir. doğrudan erişim veritabanı tablolarına.

    Bununla birlikte, SQL ortamındaki görünümlerin kullanımının sakıncaları da vardır.

    Sınırlı yükseltme seçenekleri

    Bazı durumlarda görünümler, içerdikleri verilerde değişiklik yapmanıza izin vermez.

    Yapısal Kısıtlamalar

    Bir görünümün yapısı, oluşturulduğu anda belirlenir. Tanım sorgusu SELECT * FROM_ biçimindeyse, *, görünümün oluşturulduğu sırada kaynak tabloda bulunan tüm sütunları ifade eder. Orijinal veritabanı tablosuna daha sonra yeni sütunlar eklenirse, görünüm kaldırılıp yeniden oluşturulana kadar bu görünümde görünmezler.

    Performans düşüşü

    Görünümleri kullanmak, bazı performans cezalarıyla birlikte gelir. Bazı durumlarda, bu faktörün etkisi oldukça önemsizken, diğerlerinde önemli sorunların kaynağı olabilir. Örneğin, karmaşık bir çoklu tablo sorgusu ile tanımlanan bir görünümün çözülmesi, görünüme her erişilmesi gerektiğinde bir tablo birleştirme gerektirdiğinden, önemli miktarda işlem süresi alabilir. Görünüm çözünürlüğünün performansı, ek bilgi işlem kaynaklarının kullanımıyla ilişkilidir.

    Daha önceki yazılarda DDL ve DML deyimleri temel tablolarla ilişkili olarak ele alınmıştı. Temel tablo verileri diskte saklanır. Temel tabloların aksine, varsayılan görünümler fiziksel olarak mevcut değildir; içerikleri diske kaydedilmez. Bu, daha sonra tartışılacak olan dizinlenmiş görünümler için geçerli değildir. Görüntüleme meta veri bilgileri kullanılarak her zaman bir veya daha fazla temel tablodan (veya diğer görünümlerden) oluşturulan veritabanı nesneleridir. Bu bilgi (görünümün adı ve temel alınan tablolardan satırların nasıl alındığı dahil), görünüm için fiziksel olarak depolanan tek şeydir. Bu nedenle görünümlere sanal tablolar da denir.

    Görünüm Oluştur

    Görünüm, ifade tarafından oluşturulur GÖRÜNÜM OLUŞTUR, sözdizimi aşağıdaki gibidir:

    CREATE VIEW view_name [(column_list)] AS select_deyimi Sözdizimi kuralları

    CREATE VIEW ifadesi, paketteki tek ifade olmalıdır. (Bu, bu komutun gruptaki diğer komutlardan bir GO komutuyla ayrılması gerektiği anlamına gelir.)

    view_name parametresi, tanımlanacak görünümün adını belirtir ve column_list parametresi, görünümün sütun adları olarak kullanılacak adların listesini belirtir. Bu isteğe bağlı parametre atlanırsa, görünümün oluşturulduğu tabloların sütun adları kullanılır. select_statement parametresi, tablolardan (veya diğer görünümlerden) satırları ve sütunları alan bir SELECT ifadesini belirtir. ŞİFRELEME seçeneğiyle SELECT deyiminin şifrelemesini belirtir, böylece veritabanı sisteminin güvenlik seviyesini artırır.

    SCHEMABINDING teklifi Görünümü, oluşturulduğu tablonun şemasına bağlar. Bu yan tümce belirtildiğinde, SELECT deyimindeki veritabanı nesnelerinin adları iki parçalı olmalıdır, yani. şemanın sahip olduğu ve db_object'in bir tablo, görünüm veya kullanıcı tanımlı işlev olabileceği schema.db_object biçiminde.

    Bu şekilde oluşturulan bir görünüm tarafından başvurulan görünümlerin veya tabloların yapısını değiştirmeye yönelik herhangi bir girişim başarısız olacaktır. Bu tür tabloların veya görünümlerin değiştirilebilmesi (ALTER deyimi ile) veya bırakılabilmesi (DROP deyimi ile) için, görünümün bırakılması veya SCHEMABINDING yan tümcesinin ondan çıkarılması gerekir.

    Bir görünüm oluştururken belirttiğinizde VIEW_METADATA parametresi, görünümde INSERT veya UPDATE INSTEAD OF tetikleyicileri varsa, tüm sütunları güncellenebilir (zaman damgası veri türüne sahip sütunlar hariç).

    Bir görünümdeki SELECT deyimi, ORDER BY deyimi veya INTO parametresi içeremez. Ayrıca geçici tablolar sorgulanamaz.

    Görünümler farklı amaçlar için kullanılabilir:

      Tabloların belirli sütunlarının ve/veya satırlarının kullanımını kısıtlamak için. Böylece, bir veya daha fazla tablonun belirli bir bölümüne erişimi kontrol etmek için görünümler kullanılabilir.

      Karmaşık sorguların ayrıntılarını gizlemek için. Veritabanı uygulamanız karmaşık birleştirme işlemleri içeren sorgular gerektiriyorsa, uygun görünümlerin oluşturulması bu sorguları basitleştirebilir.

      Girilen veya güncellenen değerleri belirli bir aralıkta sınırlamak için.

    Aşağıdaki örnek, bir görünümün nasıl oluşturulacağını gösterir:

    Bu örnekteki sorgu, Works_on tablosundan Job="Consultant" koşulunu karşılayan satırları seçer. view_Consultant, bu sorgu tarafından döndürülen satırlar ve sütunlarla tanımlanır. Aşağıdaki şekil, kırmızıyla vurgulanan view_Consultant görünümünde seçilen satırlarla Works_on tablosunu göstermektedir:

    Bu örnekteki sorgu, bir satır seçimini belirtir, örn. alttaki Works_on tablosunun yatay bir alt kümesini oluşturur. İçinde yer alan sütun ve satırlar üzerinde kısıtlamalar içeren bir görünüm oluşturmak da mümkündür. Böyle bir görünümün oluşturulması aşağıdaki örnekte gösterilmiştir:

    SampleDb'yi KULLANIN; GİT GÖRÜNÜM OLUŞTUR view_WithoutBudget OLARAK SEÇİN Numara, ProjeAdı Projeden;

    Bu örnekteki sorgu, Bütçe sütunu dışında, Proje tablosunun tüm sütunlarını view_WithoutBudget görünümüne dahil edilmek üzere seçer.

    Daha önce belirtildiği gibi, CREATE VIEW ifadesinin genel biçimi, görünüm sütunlarının adlarını gerektirmez. Ancak öte yandan, aşağıdaki iki durumda açık sütun adları gereklidir:

      görünüm sütunu bir ifadeden veya toplama işlevinden oluşturulmuşsa;

      iki veya daha fazla görünüm sütunu, temel alınan tabloda aynı ada sahipse.

    Aşağıdaki örnek, sütun adlarını açıkça belirten bir görünümün nasıl oluşturulacağını gösterir:

    SampleDb'yi KULLANIN; GİT GÖRÜNÜM OLUŞTUR view_Count(projectNumber, countProject) ProjeNumarasına Göre Works_on GRUPTAN ProjeNumarası, COUNT(*) SEÇİN;

    Burada, view_Count görünüm sütun adları, SELECT ifadesinin içermesi nedeniyle açıkça belirtilmelidir. toplama işlevi count(*), tüm görünüm sütunlarının adlandırılmasını gerektirir.

    Aşağıdaki örnekte gösterildiği gibi sütun başlıkları kullanıyorsanız, CREATE VIEW deyiminde sütunları açıkça listelemeniz gerekmez:

    SampleDb'yi KULLANIN; GİT GÖRÜNÜM OLUŞTUR view_Count1 OLARAK ProjeNumarasını SEÇ, COUNT(*) sayProjeyi Works_on GRUPTAN ProjeNumarasına Göre;

    Örnekte gösterildiği gibi, başka bir görünümden bir görünüm oluşturulabilir:

    Aşağıdaki örnekteki view_project_p2, view_Consultant'tan oluşturulmuştur. view_project_p2 görünümünü kullanan tüm sorgular, temeldeki Works_on tablosuna göre eşdeğer sorgulara dönüştürülür.

    Görünümler, Management Studio kullanılarak da oluşturulabilir. Bunu yapmak için, Object Explorer'da bir görünüm oluşturmak istediğiniz veritabanını seçin, içindeki Görünümler düğümüne sağ tıklayın ve açılan bağlam menüsü Yeni Görünüm'ü seçin. Aşağıdakileri yapabileceğiniz görünüm düzenleyici açılır:

      bir görünüm oluşturmak için temel tabloları ve bu tablolardaki satırları seçin;

      görünümü adlandırın ve karşılık gelen sorgunun WHERE yan tümcesindeki koşulları tanımlayın.

    Görünümleri Düzenleme ve Silme

    Transact-SQL'de bir görünümün tanımını değiştirmek için deyimi kullanın DEĞİŞİK GÖRÜNÜM. Bu ifadenin sözdizimi, bir görünüm oluşturmak için kullanılan CREATE VIEW ifadesiyle aynıdır.

    ALTER VIEW deyimini kullanmak, bir görünümde mevcut izinlerin yeniden atanmasını önler. Ayrıca, bu ifade ile bir görünümün değiştirilmesi, o görünüme bağlı olan veritabanı nesnelerini etkilemez. Bir görünümü önce bırakarak (DROP VIEW deyimi) ve ardından gerekli özelliklerle (CREATE VIEW deyimi) yeni bir görünüm oluşturarak değiştirirseniz, bu görünüme atıfta bulunan tüm veritabanı nesneleri, en azından zamanında çalışmayacaktır. görünümün silinmesi ile yeniden oluşturulması arasındaki süre.

    ALTER VIEW ifadesinin kullanımı aşağıdaki örnekte gösterilmiştir:

    Bu örnekte, ALTER VIEW ifadesi genişler. deyimi SEÇ WHERE yan tümcesinde yeni bir koşulla view_WithoutBudget içinde.

    DÜŞÜK GÖRÜNÜM Bildirimi içinde belirtilen görünümün tanımını sistem tablolarından kaldırır. Bu talimatın uygulaması aşağıdaki örnekte gösterilmiştir:

    SampleDb'yi KULLANIN; GÖRÜNÜMÜ GÖRÜNÜMÜ GÖRÜNÜM_SAYISINA GİT;

    DROP VIEW deyimiyle bir görünüm bırakıldığında, aşağıdaki örnekte gösterildiği gibi, silinen görünüme dayalı diğer tüm görünümler de bırakılır:

    SampleDb'yi KULLANIN; GÖRÜNÜME GİT view_Consultant;

    Burada, DROP VIEW ifadesi, view_Consultant'ı temel alan view_project_p2'yi dolaylı olarak bırakırken, view_Consultant'ı açıkça bırakır. Şimdi view_project_p2 üzerinde sorgulama yapmaya çalışmak bir hata mesajı döndürecektir.

    Bir görünümün temel tablosunu sildiğinizde, buna dayalı diğer görünümler otomatik olarak silinmez. Bu, bırakılan bir tablo için tüm görünümlerin DROP VIEW deyimi kullanılarak açıkça bırakılması gerektiği anlamına gelir. Öte yandan, silinen tablonun görünümleri, silinen tabloyla aynı mantıksal yapıya sahip yeni bir tablo üzerinde yeniden kullanılabilir.

    Verim sanal bir tablodur. Gerçekte bir görünüm, şuna benzeyen bir bellek yapısında saklanan bir SELECT deyiminin sonucudur. SQL tablo, örneğin kehanet. Bir görünümle çalışanlar için, verilerini değiştirmek, tablo verilerini değiştirmekten farklı değildir. Bazı durumlarda, kullanıcı verileri bir tabloymuş gibi bir görünüme girebilir. Bir görünümle çalışırken şunları unutmayın:

    • Görünümler, bir veri koruma katmanı ekler (örneğin, bir tabloda, görünümde SELECT gerçekleştiren kullanıcı tarafından yalnızca maaş bilgilerinin görülebildiği bir görünüm oluşturabilirsiniz)
    • Görünümler, birleştirerek veri karmaşıklığını gizleyebilir gerekli bilgi birden fazla tablodan
    • Görünümler, bazen anlaşılması zor olan gerçek sütun adlarını gizleyebilir ve daha basit adlar gösterebilir.

    Görünüm kullanılarak oluşturulur. Görünümler oluşturulduktan sonra, onları oluşturan kullanıcının şemasının bir parçası haline gelir. Sistem ayrıcalığına sahip olduğunda onları başka bir kullanıcıya yeniden atayabilirsiniz. HERHANGİ BİR GÖRÜNÜM OLUŞTURUN.

    GÖRÜNÜM OLUŞTUR Oracle Komut Sözdizimi

    Görünüm Oluştur Komutunun Sözdizimi

    Temel anahtar kelimeler ve parametreler GÖRÜNÜM OLUŞTUR Oracle :
    VEYA DEĞİŞTİRİN, ZORLAYIN, KUVVETLENDİRMEYİN, Şema, görüş, Diğer ad, AS alt sorgusu, İLE KONTROL SEÇENEĞİ, Kısıtlama

    VEYA DEĞİŞTİR- zaten varsa görünümü yeniden oluşturur. Bir görünümün tanımını silmek, yeniden oluşturmak ve o görünümde verilen herhangi bir nesne ayrıcalığını yeniden atamak zorunda kalmadan değiştirmek için bu seçeneği kullanabilirsiniz;

    GÜÇ- bu görünümün temel tablolarının var olup olmadığına ve görünümü içeren şemanın sahibinin bu tablolar üzerinde ayrıcalıklara sahip olup olmadığına bakılmaksızın bir görünüm oluşturur. Bu sunumla ilgili herhangi bir teklifin verilebilmesi için bu koşulların her ikisinin de karşılanması gerekir. SEÇME, SOKMAK, GÜNCELLEME veya SİLMEK. Varsayılan ayar GÜÇ YOK, ZORLAMA YOK;

    GÜÇ YOK, ZORLAMA YOK- yalnızca bu görünümün temel tabloları varsa ve görünümü içeren şemanın sahibi bu tablolarda ayrıcalıklara sahipse bir görünüm oluşturur;

    Şema- görünümün oluşturulduğu şema. ŞEMA atlanırsa, o zaman KAHİN kullanıcının şemasında bir görünüm oluşturur;

    görüşanahtar kelime görüş oluşturulacak görünümün adıdır;

    takma ad- Görünüm sorgusu tarafından seçilen ifadelerin adlarını belirtir. Takma adların sayısı, alt sorgu tarafından seçilen ifadelerin sayısıyla eşleşmelidir. Takma adlar, şema nesnelerini adlandırma kurallarına uymalıdır. Takma adlar bir görünüm içinde benzersiz olmalıdır. Takma adlar atlanırsa, o zaman KAHİN bunları görünüm sorgusundaki sütunların adlarına veya diğer adlarına göre tanımlar. Bu nedenle, görünüm sorgusu sütun adlarına ek olarak ifadeler içeriyorsa takma adlar kullanmanız gerekir;

    AS alt sorgusu- Görünümün dayandığı tabloların sütunlarını ve satırlarını tanımlar. Gönderim isteği herhangi bir cümle olabilir SEÇME, kelime öbekleri içermeyen TARAFINDAN SİPARİŞ veya GÜNCELLEME İÇİN. Seçim listesi en fazla 254 ifade içerebilir;

    KONTROL SEÇENEĞİ İLE- bu sorgu aracılığıyla yapılacak eklemeler ve güncellemelerin yalnızca aynı görünümde bir sorgu tarafından seçilebilen satırlarla sonuçlanması gerektiğini belirtir. Seçenek SEÇENEĞİ KONTROL ET o görünüm veya görünümün dayandığı herhangi bir görünüm için sorguda bir alt sorgu varsa bunu garanti edemez. Başka bir deyişle, parametreyi belirtirken KONTROL SEÇENEĞİ İLE kullanıcı, basit bir görünümle (bir tablonun verilerinden oluşturulmuş) bilgileri okuyamadığı bir tablonun bilgilerini giremez, silemez ve güncelleyemez. Birden çok kullanan güncellenebilir bir görünüm ilgili tablolar, bu parametre ile oluşturulamaz;

    Kısıtlama- kısıtlamaya verilen isim SEÇENEĞİ KONTROL ET. Bu tanımlayıcı atlanırsa, o zaman KAHİN bu kısıtlamaya otomatik olarak şöyle bir ad atar:

    SYS_Cn , burada n, kısıtlama adını veritabanı içinde benzersiz yapan bir tamsayıdır.

    Temel tablo yerine görünüm kullanmanın avantajı, temel tablolar değiştiğinde otomatik olarak güncellenmesidir. Görünümün içeriği sabitlenmez, ancak bir komutta görünüme her başvurduğunuzda yeniden değerlendirilir.

    Eğer güncelleme komutları DML (SOKMAK, GÜNCELLEME, SİLMEK) bir görünüme uygulanabilirse, görünümün güncellenebilir olduğu söylenir; aksi halde salt okunurdur. Bir görünüm, oluşturulurken aşağıdaki ölçütler dikkate alınmışsa güncellenebilir:

    • görünüm, tablonun birincil anahtarını içermelidir
    • toplama işlevlerinin uygulanması sonucunda elde edilen alanları içermemelidir
    • tanımında DISTINCT, GROUP BY, HAVING içermemelidir
    • başka bir görünümde tanımlanabilir, ancak bu görünüm güncellenebilir olmalıdır
    • seçilebilir çıktı alanları listesinde sabitler, dizeler veya ifadeler (örneğin, comm*100) içeremez

    örnek 1
    GÖRÜNÜM OLUŞTUR Oracle.
    Bir tablonun verilerinden oluşturulan basit bir görünüm:

    london_view SEÇİM OLARAK * İTİBAREN satış elemanları NEREDEşehir = 'Londra';

    Örnek 2
    GÖRÜNÜM OLUŞTUR Oracle.
    Görünüm oluştururken yeni alan adları ayarlayabilirsiniz:

    rating_view(derecelendirme,sayı) GİBİ SEÇME değerlendirme, SAYMAK(*) İTİBAREN Müşteriler GRUPLANDIRMAYA GÖRE değerlendirme;

    Örnek 3
    GÖRÜNÜM OLUŞTUR Oracle.
    Görünümler, herhangi bir sayıda temel tablodan bilgi alabilir:

    İsim siparişleri GİBİ SEÇME onum, amt, a.snum, sname, cname İTİBAREN Siparişler a, Müşteriler b, Satış Temsilcileri C NEREDE a.cnum = b.cnum VE a.snum = c.snum;

    Örnek 4
    GÖRÜNÜM OLUŞTUR Oracle.
    Görünüm oluştururken, ilgili alt sorgular da dahil olmak üzere alt sorguları kullanabilirsiniz:

    satış_görünümü GİBİ SEÇME b.odate, a.snum, a.sname, İTİBAREN Satış görevlileri a, Siparişler b NEREDE a.snum = b.snum VE b.amt = ( MAKS SEÇ(çok) İTİBAREN Siparişler c NEREDE c.odate = b.odate);

    Örnek 5
    GÖRÜNÜM OLUŞTUR Oracle.

    empl_v04 SEÇİM OLARAK e.eid, e.sname, e.fname, e.otch, p.pname, d.dname İTİBAREN gönderiler s, departmanlar d, çalışanlar e NEREDE e.did = d.did VE e.pid = p.pid;