şu ilişkisel tablo varya
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
şu ilişkisel tablo varya
Mustafa hocam sagolasın bana epey yardımların dokundu gerçi forumdaki herkesin. forma yeni kaydoldugumda delphide başlangıc seviyesinde sayılırdım şimdi epey yol aldım. ama şu veritabanında ilişkisel tablo mantıgını bi türlü kafam almadı. ama onu mutlaka yapmam lazım. daha önce önce dbase ve query kullanıyordum. şimdi ado çalışmaya başladım. bunda da adoquery kullanıyorum ama ilişkisel yok. hangisinde olursa olsun bir yardım etsseniz hayır duası alırsınız.( ayrıca adodataset te hiçbisey yok bende..) saygılar.
Merhaba,
hocam ilişkisel kavramı veritabanı ile ilgili. ADOQuery ile bir alakası yok.
Temel prensip, verileri mümkün olduğu kadar fazla tekrar etmeden tabloları oluşturmak. Bu da genelde zamanla, tecrübe ile oluşacak bir olay. Proje yaptıkça bu yeteneğin gelişecektir.
Ufak bir örnek vereyim mesela : Bir öğrenci programı yazıyorsun, öğrenci ve aldığı notlar olsun diyelim. Bu durumda ÖĞRENCİ, DERS VE NOT tablosu diye üçe ayırırsın.
ÖĞRENCİ_NO, ÖĞRENCI_ADI, TELEFON ...
DERS_NO, DERS_ADI, HOCASI ....
ÖĞRENCİ_NO, DERS_NO, ALDIĞI_NOT
gördüğün gibi NOT tablosunda Öğrencisinin ismini ve ders ismini yazmadık. Bunları nolardan bulabiliriz. yazmış olsa idik gereksiz yere tablo şişecekti.
- Ayrıca tabloları birbirine NO alanları ile bağladık. Bunların mümkün olduğu kadar unique (tekil) olması iyi olacaktır. Unique demek o tablo içinde her kayıt için farklı bir değer olması demek. Yani Öğrenci tablosunda aynı noya sahip iki öğrenci olmasın demek.
Benim aklıma ilk etapta gelenler bunlar. Usta abilerimiz tecrübelerinin ve önerilerini yazacaklardır.
Kolay gelsin.
hocam ilişkisel kavramı veritabanı ile ilgili. ADOQuery ile bir alakası yok.
Temel prensip, verileri mümkün olduğu kadar fazla tekrar etmeden tabloları oluşturmak. Bu da genelde zamanla, tecrübe ile oluşacak bir olay. Proje yaptıkça bu yeteneğin gelişecektir.
Ufak bir örnek vereyim mesela : Bir öğrenci programı yazıyorsun, öğrenci ve aldığı notlar olsun diyelim. Bu durumda ÖĞRENCİ, DERS VE NOT tablosu diye üçe ayırırsın.
ÖĞRENCİ_NO, ÖĞRENCI_ADI, TELEFON ...
DERS_NO, DERS_ADI, HOCASI ....
ÖĞRENCİ_NO, DERS_NO, ALDIĞI_NOT
gördüğün gibi NOT tablosunda Öğrencisinin ismini ve ders ismini yazmadık. Bunları nolardan bulabiliriz. yazmış olsa idik gereksiz yere tablo şişecekti.
- Ayrıca tabloları birbirine NO alanları ile bağladık. Bunların mümkün olduğu kadar unique (tekil) olması iyi olacaktır. Unique demek o tablo içinde her kayıt için farklı bir değer olması demek. Yani Öğrenci tablosunda aynı noya sahip iki öğrenci olmasın demek.
Benim aklıma ilk etapta gelenler bunlar. Usta abilerimiz tecrübelerinin ve önerilerini yazacaklardır.
Kolay gelsin.
Evet daha sonra da ornegin 1 nolu ogrencinin butun notlari :
Select D.DERS_ADI, N.ALDIGI_NOT
from DERS as D, NOT as N
where D.DERS_NO=N.DERS_NO and N.OGRENCI_NO=1
2 No 'lu dersten ogrencilerin aldigi notlar:
Select O.AD, N.ALDIGI_NOT
from OGRENCI as O, NOT as N
where O.OGRENCI_NO=N.OGRENCI_NO and N.DERS_NO=2
order by O.AD
ornekler artabilri... Mesela butun derslerdeki butun ogrencileri notlari da her 3 tablo arasinda iliskiler kurularak listelenebilir. Mustafa Bey'in de soyledigi gibi tablolari tasarlarken uygun bir yapi kurmak onemli. Kendinizi uymaya zorlayacaginiz bir iki temel kurala dikkat etmek bir baslangic olabilir.
1. Bir veri veritabaninda sadece ve satece tek bir yerde tanimli olmali. Tekrar etmemeli. ornegin NOT tablosuna ogrenci adini koymamali. vb..
2. Belki 1. kurala uygun bir tasarim yaptiniz ama bazen de seytan soyle durter. "Eger bu sekilde olursa buradan bazi sorgulari almak zor olur. En iyisi sen su tabloya su alani da koy sonraki isin kolay olsun." Bu durumda kulak asmamak lazim. Eger siz sonradan alacaginiz bir raporu satir satir kendiniz olusturabiliyorsaniz. Yani sunu suradan bunu buradan vs seklinde bir mantik ile bu raporun bir insan tarafindan elle uretilebilecegine kanaat getiriyorsaniz bunu yapacak sql cumlesini yazamasaniz bile yazabilen biri mutlaka vardir. O kisiyi de bu grupta eminim kolayca bulursunuz..
mesaji fazla da uzatmamak lazim.
Kolay gelsin....
Select D.DERS_ADI, N.ALDIGI_NOT
from DERS as D, NOT as N
where D.DERS_NO=N.DERS_NO and N.OGRENCI_NO=1
2 No 'lu dersten ogrencilerin aldigi notlar:
Select O.AD, N.ALDIGI_NOT
from OGRENCI as O, NOT as N
where O.OGRENCI_NO=N.OGRENCI_NO and N.DERS_NO=2
order by O.AD
ornekler artabilri... Mesela butun derslerdeki butun ogrencileri notlari da her 3 tablo arasinda iliskiler kurularak listelenebilir. Mustafa Bey'in de soyledigi gibi tablolari tasarlarken uygun bir yapi kurmak onemli. Kendinizi uymaya zorlayacaginiz bir iki temel kurala dikkat etmek bir baslangic olabilir.
1. Bir veri veritabaninda sadece ve satece tek bir yerde tanimli olmali. Tekrar etmemeli. ornegin NOT tablosuna ogrenci adini koymamali. vb..
2. Belki 1. kurala uygun bir tasarim yaptiniz ama bazen de seytan soyle durter. "Eger bu sekilde olursa buradan bazi sorgulari almak zor olur. En iyisi sen su tabloya su alani da koy sonraki isin kolay olsun." Bu durumda kulak asmamak lazim. Eger siz sonradan alacaginiz bir raporu satir satir kendiniz olusturabiliyorsaniz. Yani sunu suradan bunu buradan vs seklinde bir mantik ile bu raporun bir insan tarafindan elle uretilebilecegine kanaat getiriyorsaniz bunu yapacak sql cumlesini yazamasaniz bile yazabilen biri mutlaka vardir. O kisiyi de bu grupta eminim kolayca bulursunuz..
mesaji fazla da uzatmamak lazim.
Kolay gelsin....