Yanıtlar:
Oh, düşünmeniz gereken birçok farklılık var
Seçim için görünümler:
Ekleme / güncellemeler için görünümler:
Dezavantajlar
Görünümler şunları yapabilir:
Ve görünümlere uygun tablolar tasarlamamalısınız . Temel modeliniz, verilerin verimli bir şekilde depolanması ve geri alınmasıyla ilgilenmelidir. Görünümler, kısmen, bu karmaşıklığı soyutlamanıza izin vererek verimli, normalleştirilmiş bir modelden kaynaklanan karmaşıklıkları azaltan bir araçtır.
Ayrıca, "tablo üzerinden görünüm kullanmanın avantajları nelerdir?" Diye sormak çok iyi bir karşılaştırma değildir. Masasız gidemezsin, ama manzarasız da yapabilirsin. Her biri çok farklı bir nedenle var. Tablolar somut modeldir ve Görünümler soyutlanmış bir görünümdür.
Her seferinde karmaşık mantığın takip edilmesini sağlamanız gerektiğinde görünümler kabul edilebilir. Örneğin, tüm finansal raporlama için ihtiyaç duyulan ham verileri oluşturan bir görünüme sahibiz. Tüm raporların bu görünümü kullanmasını sağlayarak, bir rapor birleştirme kümesini kullanan bir rapor ve farklı sonuçlar veren bir rapor kullanmayı unutan bir rapor yerine, herkes aynı veri kümesiyle çalışıyor.
Kullanıcıları belirli bir veri alt kümesiyle sınırlandırmak istediğinizde görünümler kabul edilebilir. Örneğin, kayıtları silmezseniz ancak yalnızca geçerli olanı etkin ve eski sürümleri devre dışı olarak işaretlerseniz, bir görünümün yalnızca etkin kayıtları seçmek için kullanmasını istersiniz. Bu, insanların sorguya where cümlesini koymayı unutmasını ve kötü sonuçlar almasını engeller.
Görünümler, kullanıcıların yalnızca bir kayıt kümesine erişebilmelerini sağlamak için kullanılabilir - örneğin, belirli bir istemci için tabloların görünümü ve tablolarda hiçbir güvenlik hakkı olmaması, söz konusu istemcinin kullanıcılarının yalnızca verileri görebileceği anlamına gelebilir. o müşteri için.
Veritabanlarını yeniden düzenlerken görünümler çok faydalıdır.
Görünümleri çağırmak için görünümler kullandığınızda görünümler kabul edilemez, bu da korkunç performansa neden olabilir (en azından SQL Server'da). Neredeyse milyon dolarlık bir müşterimizi kaybettik çünkü birisi veritabanını bu şekilde soyutlamayı seçti ve performans korkunçtu ve sık sık zaman aşımları oldu. Performans sorunu tamamen bizim hatamız olduğundan, düzeltmenin bedelini müşteriye değil de ödemek zorunda kaldık. Görünümler görünümleri çağırdığında, temeldeki görünümü tamamen oluşturmaları gerekir. Bunu, görünümün bir görünümü çağıran bir görünüm olarak adlandırdığı ve kullanıcının nihayetinde ihtiyaç duyduğu üçünü görmek için milyonlarca kayıt oluşturulduğu yerde gördüm. Bu görünümlerden birinin kayıtların basit bir sayımını (*) yapmanın 8 dakika sürdüğünü hatırlıyorum. Görünümleri çağıran görünümler son derece kötü bir fikirdir.
Genellikle yalnızca aynı tablodaki alanları güncelleyebildiğiniz için görünümler genellikle kayıtları güncellemek için kötü bir fikirdir (yine bu SQL Server'dır, diğer veritabanları değişebilir). Bu durumda, hangi alanların kullanılabilir olduğunu bilmeniz için yine de tabloları doğrudan güncellemek daha mantıklıdır.
Birkaç tablodan seçim yapmanız gerektiğinde veya sadece bir tablonun alt kümesini almak için görünümler kullanışlıdır.
Tablolarınızı, veritabanınız iyi bir şekilde normalize edilecek şekilde (minimum tekrarlama) tasarlamalısınız . Bu, sorgulamayı biraz zorlaştırabilir.
Görünümler , tablolardaki verileri depolandıklarından farklı şekilde görüntülemenize olanak tanıyan biraz ayrılıktır .
Tablonuzu görünümleri dikkate almadan tasarlamalısınız.
Birleşimleri ve koşulları kaydetmenin yanı sıra, Görünümlerin bir performans avantajı vardır: SQL Server, yürütme planını hesaplayıp görünümde kaydedebilir ve bu nedenle onu "anında" SQL ifadelerinden daha hızlı hale getirebilir.
View, alan düzeyinde kullanıcı erişimiyle ilgili çalışmanızı da kolaylaştırabilir.
Her şeyden önce, adından da anlaşılacağı gibi bir görüş değişmezdir. çünkü bir görünüm, DB'de depolanan bir sorgudan oluşturulan sanal tablodan başka bir şey değildir. Bu nedenle, bazı görünüm özelliklerine sahipsiniz:
Bu nedenle, görünümlerin tablolardan daha uygun olduğu çok sayıda kullanım durumu vardır, yalnızca bir web sitesinde yalnızca aktif kullanıcıları görüntülemeyi düşünün. bir görünüm daha iyi olur, çünkü aslında DB'nizde bulunan verilerin yalnızca bir alt kümesinde çalışırsınız (etkin ve etkin olmayan kullanıcılar)
umarım bu yardımcı olmuştur ..
Wikipedia'ya göre ,
Görünümler , temel tabloların dış dünyaya gösterilme derecesini sınırlayabilir : belirli bir kullanıcının, temel tablonun geri kalanına erişimi reddedilirken görünümü sorgulama izni olabilir.
Görünümler, birden çok tabloyu tek bir sanal tablo halinde birleştirebilir ve basitleştirebilir .
Görünümler , veritabanı motorunun verileri topladığı (toplam, ortalama vb.) Ve hesaplanan sonuçları verilerin bir parçası olarak sunduğu birleştirilmiş tablolar olarak işlev görebilir .
Görünümler, verilerin karmaşıklığını gizleyebilir . Örneğin, bir görünüm Sales2000 veya Sales2001 olarak görünebilir ve gerçek temel tabloyu şeffaf bir şekilde bölümlere ayırabilir.
Görünümlerin depolanması çok az yer kaplar ; veritabanı, sunduğu tüm verilerin bir kopyasını değil, yalnızca bir görünümün tanımını içerir.
Görünümler, kullanılan SQL motoruna bağlı olarak ekstra güvenlik sağlayabilir .