SQL Server 2008 İncilini okuyorum ve görüşler bölümünü ele alıyorum. Ancak yazar , görüşlerin amacını gerçekten açıklamıyor . Görünümler için iyi kullanım nedir? Bunları web sitemde kullanmalı mıyım ve faydaları nelerdir?
SQL Server 2008 İncilini okuyorum ve görüşler bölümünü ele alıyorum. Ancak yazar , görüşlerin amacını gerçekten açıklamıyor . Görünümler için iyi kullanım nedir? Bunları web sitemde kullanmalı mıyım ve faydaları nelerdir?
Yanıtlar:
Önceki yanıtların hiçbirinin bahsetmediği başka bir kullanım, tablo yapısı değişikliklerinin daha kolay dağıtılmasıdır.
Diyelim ki, T_OLD
aktif kullanıcılar için veri içeren bir tabloyu ( ) kullanımdan kaldırmak ve bunun yerine benzer verilere sahip (adlandırılmış T_NEW
) ancak hem aktif hem de pasif kullanıcılar için verileri olan ve fazladan bir sütun içeren yeni bir tablo kullanmak istiyorsunuz active
.
Sistem (ler) inizde bunu yapan gazilyon sorgu varsa, kullanıma sunma SELECT whatever FROM T_OLD WHERE whatever
için iki seçeneğiniz vardır:
1) Cold Turkey - DB'yi değiştirin ve aynı zamanda söz konusu sorguyu içeren çok sayıda kodu değiştirin, test edin ve serbest bırakın. Yapması (hatta koordine etmesi) ÇOK zor, çok riskli. Kötü.
2) kademeli - oluşturarak DB değiştirmek T_NEW
, tablo bırakarak T_OLD
tablo ve bunun yerine bir oluşturma GÖRÜNÜMÜ adı T_OLD
taklit eden T_OLD
tablo,% 100 (örneğin, görünüşüdür sorgu SELECT all_fields_except_active FROM T_NEW WHERE active=1
).
Yani o anda seçer HERHANGİ kod bırakmadan korunmuş olacaktır T_OLD
ve göç yasasında değişiklik yapmak T_OLD
için T_NEW
boş.
Bu basit bir örnek, daha çok işin içinde olan diğerleri var.
PS Öte yandan, doğrudan sorgular yerine muhtemelen bir saklı yordam API'sine sahip olmanız gerekirdi T_OLD
, ancak bu her zaman böyle değildir.
(Bir Google aramasında ortaya çıkan ilk eğiticiden kopyalandı (bağlantı artık öldü), ancak kendim manuel olarak yazacağım tüm faydalara sahip.)
Görüntülemelerin aşağıdaki faydaları vardır:
- Güvenlik - Temel tablolara doğrudan erişilemezken görünümler kullanıcılar için erişilebilir hale getirilebilir. Bu, DBA'nın kullanıcılara yalnızca ihtiyaç duydukları verileri verirken aynı tablodaki diğer verileri korumasına olanak tanır.
- Basitlik - Görünümler, karmaşık sorguları gizlemek ve yeniden kullanmak için kullanılabilir.
- Sütun Adının Basitleştirilmesi veya Netleştirilmesi - Görünümler, sütun adlarını daha akılda kalıcı ve / veya anlamlı kılmak için takma adlar sağlamak için kullanılabilir.
- Basamak Taşı - Görünümler, "çok seviyeli" bir sorgu için bir basamak oluşturabilir. Örneğin, her satış görevlisinin yaptığı satışların sayısını sayan bir sorgu görünümü oluşturabilirsiniz. Daha sonra, satış elemanlarını yaptıkları satış sayısına göre gruplandırmak için bu görünümü sorgulayabilirsiniz.
Wikipedia'dan bazı nedenler :
Görünümler, tablolara göre avantajlar sağlayabilir:
GÖRÜNÜMLER, SEÇME / KOD'un yeniden kullanılabilir bölümleri olarak kullanılabilir, bunlar birleştirilecek diğer seçimler / sorgulara dahil edilebilir ve her seferinde tüm SELECT'i yeniden oluşturmak zorunda kalmadan çeşitli farklı filtreler kullanabilir.
Bu aynı zamanda mantığı tek bir konuma yerleştirir, böylece onu kod tabanının tamamında değiştirmek zorunda kalmazsınız.
Bir bak bakalım
Depolanan Prosedürler, Fonksiyonlar, Görünümler, Tetikleyiciler, Satır İçi SQL Arasındaki Seçim
Bir görünümün ana güzelliği, çoğu durumda bir masa gibi kullanılabilmesidir, ancak bir tablodan farklı olarak, çok karmaşık hesaplamaları ve yaygın olarak kullanılan birleştirmeleri kapsayabilir. Ayrıca, saklı yordamlar dışında, veritabanındaki hemen hemen her nesneyi kullanabilir. Görünümler, her zaman aynı tablo kümesine katılmanız gerektiğinde, özet hesaplama alanları vb. Almak için Sipariş Ayrıntıları içeren bir Sipariş dediğinizde en kullanışlıdır.
Bir görünüm bir soyutlama katmanıdır ve veritabanı şemasını kapsüllemek ve sizi dahili uygulama ayrıntılarını değiştirmenin sonuçlarından korumak dahil olmak üzere herhangi bir iyi soyutlama katmanının yaptığı şeyi yapar.
Bu bir arayüz.
Bir varlığı bazı kriterlere göre sınırlamak için görünümlerin kullanılmasının çok yaygın bir kullanımı.
Tablo: KULLANICILAR tüm kullanıcıları içerir
Görünüm: ACTIVE_USERS, askıya alınan, yasaklanan, etkinleştirilmeyi bekleyen ve gelecekte aktif gereksinimlerin bir parçası olarak tanımlayabileceğiniz herhangi bir kriteri karşılamayanlar hariç tüm kullanıcıları içerir. Bu, ACTIVE_USERS istenmeyen satırları her zaman gizleyebildiğinden, kullanmamayı seçerseniz USERS tablonuzdan herhangi bir satırı silmenizi gereksiz kılar.
Bu şekilde, tabloyu kullanıcı yönetimi sayfalarınızda kullanabilirsiniz, ancak uygulamanın geri kalanı, işlemleri yürütebilecek ve verilere erişebilecek / değiştirebilecek tek kullanıcılar olabileceğinden ACTIVE_USERS kullanabilir.
Görünümler, birkaç farklı tablodaki verileri birleştirmenize ve biçimlendirmenize (alanları birleştirmenize, daha anlamlı alan adları vermenize vb.) İzin vererek son kullanıcılar için daha kolay olmasını sağlayabilir. Veritabanı modelinin bir soyutlamasıdır. Ayrıca, tablonun kendisine doğrudan erişim sağlamadan kullanıcılara tablodaki verilere erişim sağlamak için de kullanılabilirler.
Doğrudan tablo yerine görünümü kullanmanın birçok nedenini burada bulabilirsiniz
Gönderen imexploring.com
Yaygın nedenlerin / kullanımların küçük bir listesi:
verilerin biçimini veya 'görünümünü' değiştirmek için bunları kullanın (yani bir adı ve soyadını birleştirebilirsiniz)
veriler üzerinde hesaplamalar veya diğer aramalar yapmak
verileri denormalize edin (birkaç tablodan verileri tek bir noktaya çıkarın)
Görüşler kötüdür! Mümkünse bunlardan kaçının ve yalnızca DVK'da belirtilen nedenle kullanın - geçici veri taşıma.
100 tablo içeren bir veritabanında her tablonun amacını hatırlamanın zor olduğunu anlamalısınız. Şimdi, buraya 300 görünüm daha eklerseniz, tam bir karmaşa olacaktır. 'Görünüm severler' iç içe görünümleri kullanma eğilimindedir ve daha sonra depolanan prosedürlerde iç içe görünümleri kullanır. Ben şahsen, 4 kez derinlemesine iç içe geçmiş Görünümlerin olduğu bir veritabanıyla çalışıyorum! Bu nedenle, bir saklı yordamın en basit mantığını anlamak için önce tüm görünümlerin üzerinden geçmem gerekir.