view Hk.
hacis19.09.2003 - 14:05:39
view ların nasıl çalıştığı hk. bilgi verebilecek var mı?
ben Queryden bir view yarattım. bu view dan da başka bir view yarattım ve sonra da viewdan yine bir view yarattım. kısaca view dan view yaratarak 3 tane view sahibi oldum(hayırlı olsun) ve son iki view'u sorguluyorum. Soruım şu;
bu viewlar kendilerini update ediyorlar mı? yani asıl tableda yapılacak bir değişiklik bu viewlara yansır mı?(Bu viewlar table da olmayan kolonlardan oluşuyor yani hesaplanarak oluşturulmuş kolonlar) yoksa programı her çalıştırıldığımda yaratıp sonra silmeli miyim? Saygılar..
 
mussimsek19.09.2003 - 15:08:05
Merhaba,

view'lar bir veya birden fazla tablodan verileri çekmek için kullanılır. Bu tablo veya tablolara kayıt eklendikçe, bu view'lar güncellenir. Aynı zamanda view'da da değişiklik yapabilirsiniz. Ne işe yarar:

1. Birden fazla tablodan kolayca veri çekmek için. Mesela Rapor oluşturmak veya acemi programcıların işini kolaylaştırmak için.

2. Bazı bilgileri gizlemek için. Mesela personel tablonuz var. Tüm alanlar görünsün ancak maaş kısmı görünmesin istiyorsunuz. Bu tip durumlarda faydalı olur.

İlk etapta aklıma gelen faydaları bunlar.

View'dan view yapmak gereksiz bir işlem geldi bana.

Kolay gelsin.
 
fahrettin20.09.2003 - 07:16:57
Aslında işlevsel olarak view'ı oluşturan sql kodunu Delphi tarafindan bir Query'nin içinden çalıştırmakla bunu bir view haline veritabanında tutup oradan select etmek arasında bir fark yoktur.

Sadece view'in kodu veritabanına önceden yazılıp gömüldüğü için teorik olarak birazcık daha hızlı çalışır. En önemlisi kolaylık sağlar. Admin'in dediği gibi bir takım alanların gizlenerek üzerinde çalışma yapılabilmesi için kullanılabilir. Mesela raporlarınızdan view yapmaya uygun olanlarını bu şekilde tanımladığınız taktirde her hangi bir ortamdan
select * from VIEW_RAPOR1

diyyerek rapor alma kolaylığına erişebilirsiniz.
 
hacis20.09.2003 - 08:28:19
Merhaba,
İlginize teşekkür ederim, dediğiniz gibi acemi bir programcıyım. bu yüzden de bazı sorguları almakta güçlük çekiyorum ve view'u da bu yüzden tercih ettim. SQL analyzer dan create ettim ama dephinin içinden create edemiyorum derleme sırasında hata veriyor. yazdığım kod şöyle;
ADOQuery1.SQL.Add ('create view tablo');
ADOQuery1.SQL.Add ('Select * from tablo');
eğer birinci satırı kaldırırsam sorgu çalışıyor
acaba delphinin içinden create edemez miyim?
 
mussimsek20.09.2003 - 09:26:10
Merhaba,

oluşturabilirsin tabi. Ancak bu iki cümle tek sorguda çalışmayacak cümleler. Ya 2 tane AdoQuery kullan, ya da view'ı oluşturduktan sonra

AdoQuery1.SQL.Clear;

ile sorgu cümlesini temizleyip, Select * ile başlayan sorguyu ekle.

NOT : Eğer bu view oluşturma işini her seferinde yapıyorsanız, yanlış bir işle yapıyorsunuz. View'ı bir kere oluşturup kullanırısınız, işi bitince de silersiniz. Fahrettin abininde dediği gibi eğer her seferinde oluşturuyorsanız, direk Query kullanın.

Kolay gelsin.
 
Kuri_YJ24.09.2003 - 16:00:18
Create View komutu yazdiğınız gibi çalışmaz her Ver tabanında yaklaşık benzer şekilde tanımlanır, Örneğin MS-SQL'de aşağıdaki gibi Create edebilirsiniz, FireBird-Interbase'de farklı şekilde

CREATE VIEW wiew_adi
AS
SELECT field1, field2, field3 FROM tablo

yani hangi veri tabanında Create ediyorsanız onun syntax'ına göre yazmanız lazım. Daha sonra Ado'dan Select * from Vıew diyerek çekebilirsiniz.

Kolay gelsin.
 
miskin30.08.2005 - 12:06:37
View'ler hakkindaki olumsuz görüslerinize (acemiler icin, az Performans kazanimi vb) katilmiyorum.
View'ler select sorgulamasindan cok, Tablolara yakin olarak düsünülebilir.
View virtuell tablolardir. Bu bakimdan verimlilik kazandirmasinin yaninda.
Select sorgulamalarinda: view VT de kayitli oldugundan herseferinde yeniden Join icin kafa patlatmaya gerek yok.
Her nekadar view'ler VT nin isini kolaylastiriyorsada, bir o kadarda biyolojik bellek'in isini kolaylastiriyor.
 
onaydin30.08.2005 - 13:58:17
Aynı select i view ile cekince pek bir performans farkı olacağını sanmıyorum.
Fakat şöyle güzellikleri var,
1. select * from seklinde vir kullanma ihtimali olmasına karsın
select alan1, alan2 yi kullanabilsin demek.
2. where kategori = ilgili katagori diyerek bir tablodan birçok kaydı cekmek yerine satır sayısını sınırlandırmak ve büyük veri sonuçlarıyla uğraşmamak.
---
Mysql 5 ile birlikte view oluşturduğunuzda, oluşturduğunuz view e göre o table lara veri girişini sınırlandırabiliyor, 'integrity checking' yapabiliyormuş.

-View açısından- performans dediğimiz şeyi tahminim oracle daki 'materialized view' yapıyor. Bu durumda bir sorgunun sonuc seti loglanıyor veya 'snapshot' u alınıyor.
Peki bu loglamayı ne zaman yapıyor diye sorarsanız, istediginiz vakit aralığını verebiliyorsunuz veya refresh oncommit diyerek her insert te kullanabiliyormussunuz.

Esasında kaçımız böyle bir performansa ihtiyaç duyuyoruz ki :)
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com