Neden veritabanında bir Görünüm oluşturuyorsunuz?


267

Bazıları ne zaman ve neden veritabanlarında bir Görünüm oluşturmaları gerektiğine karar veriyor? Neden sadece normal bir saklı yordam çalıştırmıyor veya seçmiyorsunuz?


Benzer bir soruya cevabımı kontrol et , umarım yardımcı olur!
Loukan ElKadi

Yanıtlar:


464

Bir görünüm çeşitli faydalar sağlar.

1. Görünümler karmaşıklığı gizleyebilir

Birden fazla tabloya katılmayı gerektiren veya karmaşık mantık veya hesaplamalar içeren bir sorgunuz varsa, tüm bu mantığı bir görünüme kodlayabilir ve ardından tıpkı bir tablo gibi görünümden seçim yapabilirsiniz.

2. Görünümler bir güvenlik mekanizması olarak kullanılabilir

Bir görünüm, bir tablodan (veya tablolardan) belirli sütunları ve / veya satırları ve altta yatan tablolar yerine görünümde ayarlanan izinleri seçebilir. Bu, yalnızca bir kullanıcının görmesi gereken verileri ortaya çıkarmaya izin verir.

3. Görünümler, eski kodu desteklemeyi basitleştirebilir

Çok sayıda kodu kıracak bir tabloyu yeniden etkinleştirmeniz gerekiyorsa, tabloyu aynı adla değiştirebilirsiniz. Gerçek şema değişirken, görünüm orijinal tabloyla tamamen aynı şemayı sağlar. Bu, tabloya başvuran eski kodun kırılmasını önler ve boş zamanlarınızda eski kodu değiştirmenize olanak tanır.

Bunlar, görünümlerin nasıl yararlı olabileceğine dair birçok örnekten sadece birkaçıdır.


84
madde 3 henüz kimsenin işaret etmediği bir nedendir
MedicineMan

2
Bence nokta 3 her şeyden daha fazla durma boşluğu. Sonunda eski kodu güncellemeye başladığınızda, yalnızca görünümün arkasındaki kodu değil, aynı zamanda görünümün üzerine inşa edilmiş tüm kodu da değiştirmeniz gerekecektir. My 2cents
super9

3
3 Gerçekten görüşlerin en güçlü özelliğidir. Mantıksal veri bağımsızlığına yardımcı olan şey, temel mantıksal veritabanından bağımsız olarak DB'ye bir arayüz sağlayabileceğiniz gerçeğinin çok güçlü bir kavram olmasıdır.
Falaina

1
@ Bu teknik borç er ya da geç geri ödenmek zorunda değil mi? 10 yıl içinde, 10 yıl önce yazmış olan mühendis için önemli olmayabilir, ancak şirket için önemlidir.
super9

Ana DB'nizi ve buna bağlı her şeyi değiştirmek kötü bir seçimdir çünkü '10 yıl içinde ihtiyacınız olabilir'. Teknik borç her ne pahasına olursa olsun önlenemez, ancak daha sonra düzeltmenin beklenen maliyeti, şimdi düzeltmenin kesin maliyetinden daha fazla ise.
Bay Boy

88

Diğer şeylerin yanı sıra güvenlik için de kullanılabilir. "Müşteri" tablonuz varsa, tüm satış çalışanlarınıza ad, adres, posta kodu vb. Alanlara erişim izni vermek isteyebilirsiniz, ancak credit_card_number değil. Yalnızca erişmeleri gereken sütunları içeren bir görünüm oluşturabilir ve ardından görünümde erişmelerine izin verebilirsiniz.


ilginç. Güvenlik iyi bir cevaptır. Aklınızda başka ne var?
MedicineMan

13
Bu soruya verilen diğer cevapların "diğer şeyleri" tarif edeceğini varsaydım. :-)
Graeme Perrow

Select name, address, zipcode from customerbunun yerine amaca hizmet etmez creating a viewmi?
PPB

@PranavBilurkar Evet, kullanıcıların çalıştırdığı sorguları tamamen kontrol ediyorsanız. Kullanıcılar kendi sorgularını (bazı etkileşimli SQL programları aracılığıyla veya kendi komut dosyalarını yazarak) çalıştırma yeteneğine sahipse, select * from customerher şeye erişmelerini sağlayan çalışabilirler . Tabloya değil, görünüme erişim izni verirseniz, görünümde olmayan alanlara erişemezler.
Graeme Perrow

38

Görünüm, bir sorgunun kapsüllenmesidir. Görünümlere dönüştürülen sorgular karmaşık olma eğilimindedir ve bu nedenle bunları yeniden kullanım için bir görünüm olarak kaydetmek avantajlı olabilir.


Karmaşık bir sorgunuz olduğunda görünüm oluşturmak ister misiniz? Bir sorgu ne kadar karmaşık, eşik nedir? Bir görüş haline getirmekten ne kazanıyorsunuz?
MedicineMan

4
Gerçekten kişisel bir seçim ne kadar karmaşıksa, belirlenmiş bir eşik yoktur. Örneğin birden çok uygulamada veya uygulamanızın farklı noktalarında mantığı çoğaltmak istemiyorsanız, genellikle bir görünüm kullanırsınız. Bir görünüm haline getirerek bu mantığı gizleyebilirsiniz ve kolayca paylaşabilirsiniz.
Chris Cameron-Mills

1
aynısını bir seçimi olan bir saklı yordamla yapamaz mısınız? yanlış saklı yordamlar karmaşık sorgu mantığı depolamak için bir yol olarak düşündüm? saklı yordamlar yerine görünümlerde karmaşık sorgular yapılmalıdır? Burada saklı bir prosedürün avantajı nedir?
MedicineMan

2
@MedicineMan - Saklı yordam bir sonuç kümesi döndürürken, görünüm diğer sorgularda tablo olarak kullanmanıza izin veren sanal bir tabloyu temsil eder.
Andrew Hare

1
Sonuç kümesi ile sanal tablo arasındaki bu noktanın anlamadığım önemli bir nokta olduğunu düşünüyorum.
MedicineMan

28

Genellikle raporlama amacıyla sık sık kullanılan verileri normalleştirmek ve / veya toplamak için görünümler oluştururum.

DÜZENLE

Ayrıntılı olarak, bazı varlıkların kişi, şirket, rol, sahip türü, sipariş, sipariş detayı, adres ve telefon olduğu bir veritabanım olsaydı, kişi tablosunun hem çalışanları hem de kişileri ve adresi sakladığı ve telefon masaları hem kişiler hem de şirketler için telefon numaralarını depoladı ve geliştirme ekibine, çalışanlara göre satışlar veya müşteriye göre satışlar veya bölgeye göre satışlar, aylık satışlar gibi raporlar oluşturma (veya raporlama verilerini geliştiriciler tarafından erişilebilir hale getirme) görevi verildi. , devlet tarafından müşteriler, vb Ben gerçek dünya varlıklarının daha entegre bir görünüm (hiçbir cinas amaçlanan) kullanılabilir böylece veritabanı varlıkları arasındaki ilişkileri de-normalize bir dizi görünüm oluşturmak istiyorum. Avantajlardan bazıları şunları içerebilir:

  1. Yazma sorgularında fazlalığı azaltmak
  2. İlişkili kuruluşlar için bir standart oluşturulması
  3. Karmaşık hesaplamalar ve birleşimler için performansı değerlendirme ve en üst düzeye çıkarma fırsatları sağlama (örneğin, MSSQL'deki Schemabound görünümlerinde dizin oluşturma)
  4. Verileri ekip üyeleri ve geliştiriciler için daha erişilebilir ve sezgisel hale getirme.

1
bu konuyu biraz açıklayabilir misin? Cevabınız biraz oylanıyor, ancak herkesin göründüğü değeri alamıyorum
MedicineMan

11

Çeşitli nedenler: Karmaşık birleşimleriniz varsa, bazen herhangi bir erişimin her zaman birleştirmelere doğru olması ve geliştiricilerin ihtiyaç duydukları tüm tabloları hatırlaması gerekmemesi için bir görüşe sahip olmak en iyisidir. Genellikle bu, tüm finansal raporların aynı veri kümesine dayanmasının son derece önemli olduğu bir finansal uygulama için olabilir.

Gördüğü kayıtları sınırlamak istediğiniz kullanıcılarınız varsa, bir görünümü kullanabilir, yalnızca temel tablolara değil yalnızca görünüme erişmelerine izin verebilir ve ardından görünümü sorgulayabilirsiniz.

Kristal raporlar, saklanan procs için görünümleri kullanmayı tercih ediyor gibi görünüyor, bu nedenle çok fazla rapor yazımı yapan insanlar çok fazla görüntüleme kullanıyor

Görünümler veritabanlarını yeniden düzenlerken de çok kullanışlıdır. Değişikliği genellikle bir görünüm oluşturarak eski kodun görmemesi için gizleyebilirsiniz. Yeniden düzenleme için çok güçlü bir yol olduğu için nasıl çalıştığını görmek için veritabanlarını yeniden düzenleme hakkında okuyun.


7

Saklı yordam üzerinde bir görünümün en büyük avantajı, tıpkı bir tablo kullandığınız gibi bir görünüm kullanabilmenizdir. Yani, bir görünüm doğrudan FROMbir sorgunun yan tümcesinde ifade edilebilir . Ör SELECT * FROM dbo.name_of_view.

Hemen hemen her şekilde depolanmış prosedürler daha güçlüdür. Sen dahil parametrelerinde geçebilir outyapabileceğiniz, etkili aynı anda birden değerlere dönmesine izin parametreleri SELECT, INSERT, UPDATEve DELETEişlemleri vs. vs.

Bir Görünüm'ün FROMyan tümceden sorgulama yeteneğini istiyorsanız , ancak parametreleri de iletmek istiyorsanız, bunu da yapmanın bir yolu vardır. Buna tablo değerli işlev denir.

İşte konuyla ilgili oldukça faydalı bir makale:

http://databases.aspfaq.com/database/should-i-use-a-view-a-stored-procedure-or-a-user-defined-function.html

EDIT: Bu arada, bu tür bir soru ortaya çıkarır, bir görünüm tablo değerli bir işlevi üzerinde ne gibi bir avantajı var? Buna gerçekten iyi bir cevabım yok, ancak bir görünüm oluşturmak için T-SQL sözdiziminin tablo değerli bir işlevden daha basit olduğunu ve veritabanınızın kullanıcılarının görünümlere daha aşina olabileceğini unutmayın.


SELECT deyimlerine karşı saklı yordamlar sorununa yönelik birkaç yanıttan biri olduğu için +1. Tablo işlevleri sorununu gündeme getirme hakkınız var. Temel olarak, görünüm aynı motoru paylaştıkları için işlevlerden daha iyi performans gösterebilir. SQL'den trabsactional SQL'e (yani PL / SQL) geçiş yaparken ödenecek bir ek yük (en azından Oracle'da) vardır. Ancak diğer tüm şeyler - güvenlik, kapsülleme vb. - görünümler için prosedürler veya işlevler için aynı şekilde geçerlidir.
APC

Görünümün yapısına bağlı olarak, bazı görünümler dizine eklenebilir. Bu tablo değerli fonksiyonlar üzerinde büyük bir gelişme.
HLGEM

6

ORM'niz ve masalarınız arasında iyi bir "orta adam" olarak işlev görebilir.

Misal:

Üzerindeki yapıyı değiştirmemiz gereken bir Person tablonuz vardı, böylece SomeColumn sütunu başka bir tabloya taşınacaktı ve bir-çok ilişkisi olacaktı.

Bununla birlikte, sistemin kişi ile ilgili olarak, SomeColumn'u hala tek bir şey olarak kullandı, pek çok şey değil. Biz, bazı sütunları bir araya getirmek ve güzel çalıştı görünüm koymak için bir görünüm kullandık.

Bu, veri katmanının değiştiği, ancak iş gereksiniminin temelde değişmediği için işe yaradı, bu nedenle iş nesnelerinin değişmesine gerek yoktu. Eğer iş nesneleri değişmek zorunda kalırsa, bunun uygulanabilir bir çözüm olacağını düşünmüyorum, ama görüş kesinlikle iyi bir orta nokta olarak işlev görüyor.


1
ilginç. Sizin durumunuzda, neredeyse tablolara bir arayüz gibidir.
MedicineMan

5

Belirli Veri Görünümlerine Odaklanmak, kullanıcıların kendilerini ilgilendiren belirli verilere ve sorumlu oldukları belirli görevlere odaklanmalarına olanak tanır. Gereksiz veriler görünüm dışında bırakılabilir. Bu ayrıca verilerin güvenliğini artırır, çünkü kullanıcılar temelde tablodaki verileri değil, yalnızca görünümde tanımlanan verileri görebilirler. Görünümleri güvenlik amacıyla kullanma hakkında daha fazla bilgi için bkz. Görünümleri Güvenlik Mekanizması Olarak Kullanma.

Veri Manipülasyonunu Basitleştirmek için Görünümler, kullanıcıların verileri nasıl manipüle ettiğini basitleştirebilir. Sık kullanılan birleşimleri, projeksiyonları, UNION sorgularını ve SELECT sorgularını görünüm olarak tanımlayabilirsiniz, böylece kullanıcılar bu veriler üzerinde her ek işlem yapıldığında tüm koşulları ve nitelikleri belirtmek zorunda kalmazlar. Örneğin, raporlama amacıyla kullanılan ve bir grup tablodan veri almak için alt sorgular, dış birleşimler ve toplama gerçekleştiren karmaşık bir sorgu görünüm olarak oluşturulabilir. Rapor her oluşturulduğunda temel sorgunun yazılması veya gönderilmesi gerekmediğinden görünüm verilere erişimi kolaylaştırır; bunun yerine görünüm sorgulanır. Verileri değiştirme hakkında daha fazla bilgi için.

Ayrıca mantıksal olarak parametreli görünümler veya WHERE yan tümcesi arama koşullarında parametreleri olan görünümler olarak çalışan satır içi kullanıcı tanımlı işlevler de oluşturabilirsiniz. Daha fazla bilgi için bkz. Satır İçi Kullanıcı Tanımlı İşlevler.

Veri Görünümlerini Özelleştirmek için, aynı kullanıcıların aynı anda kullanıyor olsalar bile farklı kullanıcıların verileri farklı şekillerde görmesine olanak tanır. Bu, özellikle farklı ilgi alanlarına ve beceri düzeylerine sahip kullanıcılar aynı veritabanını paylaştığında avantajlıdır. Örneğin, yalnızca bir hesap yöneticisinin anlaşma yaptığı müşteriler için verileri alan bir görünüm oluşturulabilir. Görünüm, görünümü kullanan hesap yöneticisinin oturum açma kimliğine göre hangi verilerin alınacağını belirleyebilir.

Verileri Dışa ve İçe Aktarma Görünümler, verileri diğer uygulamalara aktarmak için kullanılabilir. Örneğin, satış verilerini Microsoft® Excel kullanarak analiz etmek için publar veritabanındaki mağaza ve satış tablolarını kullanmak isteyebilirsiniz. Bunu yapmak için mağazalara ve satış tablolarına dayalı bir görünüm oluşturabilirsiniz. Daha sonra görünüm tarafından tanımlanan verileri vermek için bcp yardımcı programını kullanabilirsiniz. Veriler, satırların INSERT ifadesi kullanılarak görünüme eklenebilmesi koşuluyla, bcp yardımcı programı veya BULK INSERT ifadesi kullanılarak veri dosyalarından belirli görünümlere aktarılabilir. Görünümlere veri kopyalama kısıtlamaları hakkında daha fazla bilgi için, bkz. INSERT. Bir görünüme ve bir görünümden veri kopyalamak için bcp yardımcı programını ve BULK INSERT deyimini kullanma hakkında daha fazla bilgi için, bkz: Görünüme Kopyalama veya Görünümden Kopyalama.

Bölümlenmiş Verileri Birleştirmek İçin Transact-SQL UNION kümesi işleci, ayrı tablolardan iki veya daha fazla sorgunun sonuçlarını tek bir sonuç kümesinde birleştirmek için bir görünüm içinde kullanılabilir. Bu, kullanıcıya bölümlenmiş görünüm adı verilen tek bir tablo olarak görünür. Örneğin, bir tablo Washington için satış verileri ve başka bir tablo Kaliforniya için satış verileri içeriyorsa, bu tabloların BİRLİĞİ'nden bir görünüm oluşturulabilir. Görünüm, her iki bölge için satış verilerini temsil eder. Bölümlenmiş görünümleri kullanmak için, her bir tabloya eklenebilecek veri aralığını belirlemek üzere bir kısıtlama belirleyerek birkaç özdeş tablo oluşturursunuz. Bu görünüm daha sonra bu temel tablolar kullanılarak oluşturulur. Görünüm sorgulandığında, SQL Server sorgudan hangi tabloların etkilendiğini otomatik olarak belirler ve yalnızca bu tablolara başvurur. Örneğin, bir sorgu yalnızca Washington eyaleti için satış verilerinin gerekli olduğunu belirtirse, SQL Server yalnızca Washington satış verilerini içeren tabloyu okur; başka tabloya erişilmez.

Bölümlenmiş görünümler, yalnızca aynı veritabanındaki tabloları değil, uzak sunucular gibi birden çok heterojen kaynaktan gelen verileri temel alabilir. Örneğin, her biri kuruluşunuzun farklı bir bölgesi için veri depolayan farklı uzak sunuculardaki verileri birleştirmek için, her veri kaynağından veri alan dağıtılmış sorgular oluşturabilir ve sonra bu dağıtılmış sorgulara dayalı bir görünüm oluşturabilirsiniz. Tüm sorgular, sorgu tarafından istenen verileri içeren uzak sunuculardaki tablolardan yalnızca verileri okur; görünümdeki dağıtılmış sorgular tarafından başvurulan diğer sunuculara erişilmez.

Verileri birden çok tabloya veya birden çok sunucuya böldüğünüzde, taranacak daha az veri olduğu için verilerin yalnızca bir kısmına erişen sorgular daha hızlı çalışabilir. Tablolar farklı sunucularda veya birden fazla işlemciye sahip bir bilgisayarda bulunuyorsa, sorguya dahil olan her tablo paralel olarak taranabilir ve böylece sorgu performansını artırabilir. Ayrıca, dizinleri yeniden oluşturma veya bir tabloyu yedekleme gibi bakım görevleri daha hızlı gerçekleştirilebilir. Bölümlenmiş bir görünüm kullanarak, veriler yine de tek bir tablo olarak görünür ve doğru alttaki tabloya elle başvurmak zorunda kalmadan bu şekilde sorgulanabilir.

Bu koşullardan biri karşılanırsa bölümlenmiş görünümler güncelleştirilebilir: INSTEAD OF tetikleyicisi görünümde INSERT, UPDATE ve DELETE deyimlerini desteklemek için mantıkla tanımlanır.

Hem görünüm hem de INSERT, UPDATE ve DELETE deyimleri, güncelleştirilebilir bölümlenmiş görünümler için tanımlanan kurallara uyar. Daha fazla bilgi için bkz. Bölümlenmiş Görünüm Oluşturma.

https://technet.microsoft.com/en-us/library/aa214282(v=sql.80).aspx#sql:join


5

İşte iki yaygın neden:

Güvenlik için kullanabilirsiniz. Ana tabloya izin vermeyin ve sütun veya satır erişimini sınırlayan görünümler oluşturun ve kullanıcılara görünümü görmeleri için izin verin.

Kolaylık sağlamak için kullanabilirsiniz. Görünümde her zaman birlikte kullandığınız bazı tabloları birleştirin. Bu, sorguları tutarlı ve kolay hale getirebilir.


3

Bunu yapmak için birden fazla neden var. Bazen tüm birleştirme yerine bir tablo adını sorgulayabildiğinden, ortak birleştirme sorgularını kolaylaştırır.

Diğer bir neden ise verileri farklı kullanıcılarla sınırlamaktır. Örneğin:

Tablo1: Sütunlar - USER_ID; USERNAME; SSN

Yönetici kullanıcıların gerçek tabloda özel hakları olabilir, ancak SSN'yi söylemek için erişim sahibi olmak istemediğiniz kullanıcılar,

SELECT OLARAK KULLANICI ADLARINI OLUŞTURUN user_id, kullanıcı adı FROM1'den;

Ardından tabloya değil, görünüme erişmeleri için kendilerine özel izinler verin.


2

Eski veritabanları hakkında raporlama yaparken görüşler bir nimet olabilir. Özellikle, şifreli 5 harfli adlar (bunlardan 2'si ortak bir önektir!) Yerine o zamanki mantıklı geldiğim kısaltmalarla dolu sütun adlarını kullanabilirsiniz.


2

Genelde hayatı kolaylaştırmak, birden fazla tablo üzerinde depolanan bazı varlıklardan genişletilmiş ayrıntılar almak (okunabilirliği artırmak için koddaki birleşimleri ortadan kaldırmak) ve bazen birden fazla veritabanında veri paylaşmak veya hatta ekleri okumayı kolaylaştırmak için görünümlere giderim.


2

Bir kullanıcının tabloda güncelleyebileceği sütunları sınırlamak için bir görünümle birlikte izinleri nasıl kullanacağınız aşağıda açıklanmıştır.

/* This creates the view, limiting user to only 2 columns from MyTestTable */
CREATE VIEW dbo.myTESTview 
WITH SCHEMABINDING AS
SELECT ID, Quantity FROM dbo.MyTestTable;

/* This uses the view to execute an update on the table MyTestTable */
UPDATE dbo.myTESTview
SET Quantity = 7
WHERE ID = 1

1

Tablo (lar) ın ve / veya görünümün (salt okunur şekilde) anlık görüntüsünü görmek istediğimde


1
'tablonun anlık görüntüsü' ile ne demek istiyorsun? Bunu ne zaman veya neden yapmak istersiniz?
MedicineMan

Birçok senaryo var; tabloyu etkilemeden ve altını çizmeden bir tabloda karmaşık bir sorgu / mağaza önceliğini çalıştırmak istediğinizi varsayalım. Bir görünüm oluşturursunuz (salt okunur bir gösterim)
vehomzzz

karmaşık bir sorgu deposu yordamı çalıştırmak istiyorsanız, görünüme salt okunur bir şekilde erişemiyor musunuz? Burada bahsettiğiniz şeyi 'elde etmek' için gerçekten veritabanı deneyimim yok. Ayrıntılı bir örnek verebilir misiniz?
MedicineMan

1

Yalnızca bir sorgu çalıştırırken saklı yordamlar üzerinde görünümlerini kullanmak istiyorum. Görünümler ayrıca güvenliği basitleştirebilir, birden çok tabloya ekleme / güncelleme işlemlerini kolaylaştırmak için kullanılabilir ve verilerin anlık görüntüsünü almak / gerçekleştirmek için kullanılabilir (uzun süren bir sorgu çalıştırın ve sonuçları önbelleğe alın).

Gerçek zamanlı olarak doğru tutulması gerekmeyen çalışma özlem sorguları için materyalize görünümler kullandım.


aksine bir sorgu çalıştırdığınızda? Neden? Bu nokta pek mantıklı değil
MedicineMan

bir görünüm kullandığınızda, yalnızca bir DML işlemi gerçekleştirdiğinizi bilirsiniz, bir SP çağırdığınızda verilerinizi almadan önce başka bir şey olmayabilir. Bir önbellek işlevini çağırmak, önbelleğe alınmış veri kümesini döndürebilir, ancak SP'ye veri istediğiniz her şeyi çağırmanız gerektiği anlamına gelmez. API IMO
MattH

1

Görünümler ayrıca çok karmaşık yapılandırmayı ve tabloları kolayca sorgulanabilen yönetilebilir parçalara ayırır. Veritabanımızda, tüm tablo yönetim sistemimiz büyük bir tablodan görünümlere ayrılmıştır.


1

Bu, sorunuza tam olarak cevap vermiyor ancak Materyalize Görüşlerden bahsetmeye değer olacağını düşündüm . Deneyimlerim çoğunlukla Oracle ile ilgili ancak sözde SQL Server oldukça benzer.

XML performans sorunlarını ele almak için mimarimizde benzer bir şey kullandık. Sistemlerimiz, bir satırda XML olarak depolanan birçok veri ile tasarlanmıştır ve uygulamaların içindeki belirli değerleri sorgulaması gerekebilir. Çok sayıda satırda çok sayıda XMLTip'i işlemek ve XPath'leri çalıştırmak performans üzerinde büyük bir etkiye sahiptir, bu nedenle temel tablo her değiştiğinde istenen XML düğümlerini ilişkisel bir tabloya çıkarmak için bir tür materyalize görünüm kullanırız. Bu, sorguyu istek üzerine çalıştıracak standart görünümlerin aksine, sorgunun zamanında fiziksel olarak anlık bir görüntüsünü sağlar.


1

Saklı bir yordamı daha çok verilerime karşı çağırabileceğim bir yöntem olarak görüyorum, bana göre ise görünüm sorguların veya saklı yordamların oluşturulabileceği temel verilerin sentetik bir sürümünü oluşturmak için bir mekanizma sağlıyor. Basitleştirme veya toplama mantıklı olduğunda bir görünüm oluşturacağım. Çok özel bir hizmet sunmak istediğimde saklı bir prosedür yazacağım.


küçük hizmetlerden örnekler verebilir misiniz?
MedicineMan

1

Görünümlerle ilgili ilginç bir şey, Microsoft Access tarafından tablo olarak görülmesidir: ODBC kullanarak bir SQL veritabanına Microsoft Access ön ucu eklediğinizde, kullanılabilir tablolar listesinde tabloları ve görünümleri görürsünüz. MS Access'te karmaşık raporlar hazırlıyorsanız, SQL sunucusunun birleştirme ve sorgulama yapmasına izin verebilir ve hayatınızı büyük ölçüde basitleştirebilirsiniz. MS Excel'de bir sorgu hazırlamak için Ditto.


1

Üretim veritabanlarımda yalnızca 10 veya daha fazla görüşüm var. Her zaman kullandığım sütunlar için birkaç tane kullanıyorum. Kullandığım bir set 7 tablodan geliyor, bazıları dış birleşimlerle ve sürekli olarak sadece bir görünümde bu görünümü çağırmak ve bir veya 2 birleşim yapmak zorunda olduğumu yeniden yazmak yerine. Bana göre bu sadece bir zaman tasarrufu.


bu sorunun kapsamı dışındaysa beni affedin, ancak birkaç kişi bundan bahsetti - bunu yapmak için bir tür performans cezası almıyor musunuz?
MedicineMan

Bir şey değil. SQL Server optimizer, görünüme eşdeğer SQL birleşimleri için görünümden * seçim planını gösterir
Brian Spencer

1

Bir ana tablo (Ürünler tablosu gibi) ve referans tabloları (ProductType veya ProductDescriptionByLanguage gibi) arasındaki tüm ilişkileri eşleyen xxx oluşturuyorum. Bu, bir ürünü ve tüm ayrıntılarını yabancı anahtarlarından açıklamasına çevirmeme izin verecek bir görünüm oluşturacak. Sonra kolayca ızgaralar, birleşik giriş kutuları, vb oluşturmak için nesneler oluşturmak için ORM kullanabilirsiniz.



0

Bence birincisi, Sorgunun karmaşıklığını gizlemek. Bu görünümler için çok uygundur. Veritabanı tablolarını normalleştirdiğimiz zaman nasıl artar. Tablo sayısı arttığında verileri almak çok zordur.İşlemenin en iyi yolu görünümleri takip etmektir.


Eğer google bu soru için çok net bir bilgi olurdu.
Chella

0

Bir tablodaki tüm satırlara / sütuna erişmeyi sınırlamak veya yeniden sınırlamak için görünüm oluştururuz. Sahip yalnızca belirli veya sınırlı satırların / sütunun paylaşılması gerektiğini isterse, bu sütunla bir görünüm oluşturur.


Bu, bir görünümü kullanmanızın / kullanmanızın tek nedenidir.
Alexander

0

Güvenlik için: Her kullanıcıya veritabanına yalnızca kullanıcının veya kullanıcı grubunun görmeye yetkili olduğu belirli verileri içeren küçük bir görünüm kümesi aracılığıyla erişme izni verir ve kullanıcının diğer verilere erişimini kısıtlar.

Sorgular ve yapı için basitlik : Bir görünüm birkaç tablodan veri çizebilir ve tek bir tablo sunabilir, bilgileri basitleştirebilir ve çok tablolu sorguları bir görünüm için tek tablolu sorgulara dönüştürebilir ve kullanıcılara veritabanı yapısının belirli bir görünümünü sunarak sunabilir. veritabanını belirli kullanıcılara veya kullanıcı gruplarına özgü bir sanal tablolar kümesi olarak.

Tutarlı veritabanı yapısı oluşturmak için : Görünümler, temel kaynak tabloları değiştirilse bile veritabanı yapısının tutarlı, değişmeyen bir görüntüsünü sunar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.