2 DB Nasıl biebirine bağlanıyor

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
andrea
Üye
Mesajlar: 50
Kayıt: 27 Nis 2004 03:02

2 DB Nasıl biebirine bağlanıyor

Mesaj gönderen andrea »

Merhabalar, bu benim ilk mesajım :) Delphi konusunda acemiyim, geliştirmeye çalışıyorum, yardımlarınızla da geliştireceğim :)

Neyse, Uygulamalarımda hep tek DB kullanıyorum (genelde DBASE). 2 DB nasıl oluyorda birbirine bağlanıyor ? Bunu anlatan bir kaynağı olan var mı?
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

öncelikle aramıza hoşgeldiniz :)

Sitede ve forumda veritabanı ile ilgili birçok kaynak var. İmzamdaki Kılavuz kısmında hepsini çok detaylı yazdım.

Veritabanı ile tablo kavramı birbirinden farklı. dBase'de oluşturduğunuz dbf ve yardımcı dosyalar bir tablodur (table) ve bir projenizdeki tüm tablolar veritabanını oluşturur (database).

2 tablo genelde master-detail olarak birleştirilir. Mesela bir müşteri kaydınız var bu master (ana) kayıt olur. Bu müşteriye sattığınız ürünler detail (detay) kayıt olur. Bir müşteriye bir kere de ürün satmış olabilirsiniz, 10 kere de, 100 kere de. Bu durumda master tabloda tek kayıta karşılık, detailde 100 kayıt olacaktır.

Yapmak istediğiniz işi daha net açıklarsanız, daha detaylı bilgiler verilebilir.

Kolay gelsin.
andrea
Üye
Mesajlar: 50
Kayıt: 27 Nis 2004 03:02

Mesaj gönderen andrea »

hoşbulduk,
etkinlikler çok hoş, tam aile olmuşsunuz gerçekten :)

Bahsettiğiniz gibi Master/Detail şeklinde bir tablo evliliği nasıl yapabilirim? Sorumu cevabınızla şekillendirmişsiniz aslında...
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

merhaba,

Teşekkürler :)

Bu biraz kullandığınız yapıya göre değişmekle birlikte :

1. eğer bir SQL veritabanı kullanılıyorsa (Oracle, Sybase, SQL Server, Firebird, Interbase vs.) SQL ile kolayca ilişki kurulabilir. Nasıl yapılacağı sitedeki Makaleler -> Veriabanı -> SQL'e Giriş'te anlatılıyor. Örnekler var.

2. Eğer paradox, dbase gibi dosya tabanlı bir veritabanı ve Table kullanıyorsanız, detail table'ında şunları yapmalısınız. :

* MasterSource kısmından master tablonun datasource'unu seçin.
* Masterfields kısmına tıklatın ve Detail fields ve Master fields kısmından bağlayacağınız alanları seçip Add butonuna basın.

Bu işlem içinde birkaç gereklilik var :

* Bu iki tabloyu birbirine bağlayacak bir veya birkaç alan olmak zorunda. Mesela verdiğim örnekte müşteri no olabilir.
* Her 2 tabloda da bu alan(lar) indeksli olmak zorunda.

Kolay gelsin.
andrea
Üye
Mesajlar: 50
Kayıt: 27 Nis 2004 03:02

Mesaj gönderen andrea »

bu daha çok balık olmuş gibi, yanılıyor muyum?
Tablo dediğimiz *.dbf değil mi?
Master... Ana veri kayıtlarının bulunduğu dosya, atıyorum müşteri "id" - leri, diğeri ise kayıtların, peki bu ilişkilendirme nasıl oluyor? Query-sql'le filan mı? Ben tablo-1 denmi kayıtları görüntülüyorum ?

Bu arada teoride yetmiyo, 2 dakka bi deneme yapiim :)
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

evet .dbf'ler birer tablo. Tablo dediğim zaman bazende Delphi'deki Table bileşenini kastediyorum.

Bu konular için en güzeli kitaptan faydalanmak veya Fahrettin abinin seminerlerine katılmak :)

mesela müşteri no ile bağlantı yapacaksan :

ana(master) tablo : MUSTERI
alanları : MUSTERI_NO, MUSTERI_ADI, .....

detay(detail) tablo : SATISLAR
alanları : MUSTERI_NO, SATIS_NO, ....

gibi olacak. Mesela müşterinin numarası 19 ise, detail tabloda da o müşteriye yaptığın satışların MUSTERI_NO alanında 19 olacak. Böylece birbiriyle bağlayacaksın.

Kolay gelsin.
andrea
Üye
Mesajlar: 50
Kayıt: 27 Nis 2004 03:02

Mesaj gönderen andrea »

bunu anladım, iki taraftada ortak bi kolon olacak, Peki ben masterdan bir müşteri silince ne olacak ? Diğer tarafta sorun çıkmayacak mı?
Ben 2. tabloya veriyi DBTEXT ile taşıdım.DBTEXT'i visible=flase yaptım. Oradaki id'ye göre Detailde listeleme yaptırdım, masterda data silince manuel olarak o id'nin karşılığı olan dataları detailde sil mi demeliyim?

Sanırım query ve sql'siz zor olcek :)
andrea
Üye
Mesajlar: 50
Kayıt: 27 Nis 2004 03:02

Mesaj gönderen andrea »

seminer nezaman ? nerede? katılmak isterim açıkcası. Fiyat filan nasıl?
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

tablolar arasında master-detail baglantısı kurduysanız otomatik olarak silmesi lazım
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

andrea yazdı:seminer nezaman ? nerede? katılmak isterim açıkcası. Fiyat filan nasıl?
seminerlerimiz bedava. Programlama forumundaki sabit 3 başlığı incele, gerekli tüm bilgiler var orda.

Kolay gelsin.
andrea
Üye
Mesajlar: 50
Kayıt: 27 Nis 2004 03:02

Mesaj gönderen andrea »

ok hemen inceliyorum , thanx.

Table üzerindeki mastersource ve masterfield'i işaretlenmişse otomatik siler değil mi?
andrea
Üye
Mesajlar: 50
Kayıt: 27 Nis 2004 03:02

Mesaj gönderen andrea »

operasyon... succefully

Peki, 3 tablo olsa nasıl olur. Mesela Bir table'da Müşteri listesi, bir tableda ürün listesi, 3. table'da müşterinin aldığı ürün ve miktarlar olsa?
Ozaman 1. master-detail'daki detail'i mi master yapıyoruz ?

--çok mu soruyorum?
andrea
Üye
Mesajlar: 50
Kayıt: 27 Nis 2004 03:02

Mesaj gönderen andrea »

tam açıklayıcı bir soru olmamış sanırım, üzgünüm...

3 tane table var (1),(2),(3)

(1) ve (2) arasında master-detail ilişkisi var. (1) master (2) detail
3. tablo da işin içine girerse yukarda bahsettiğim gibi, ozaman
1 ilişkideki detail olan (2) nolu tablo, detail kalmaya devam ederken (3)'ün master'ı mı oluyor?
çoklu master-deatil ilişkisinin mantığı özetle nedir?
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

sanırım dediginiz gibi de olabiliyor (denemedim)
yani 1-2 master-detail ve 2-3 master - detail baglanabiliyor olmalı
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Evet aynen dediğiniz şekli ile olabilir... standar master detay ilişkiye 2 derece, bahsettiğiniz 3 tablolu master detaya da 3 dereceli master detay dersek ben 4 ve hatta bir ara 5 dereceli master detay ilişki kullanmıştım.

Ornegin master tablo musteri olsun. 2. detay tablo o muşterinin sipariş numaraları ve siparis tarihlerini tutan sipariş tablosu olsun. 3. tabloda her siparişteki bir çok ürünü tutan yani sipariş kalemlerini tutan tablo olsun. Bunlari seri olarak master detay baglayabilirsiniz. Muşteri bilgilerinin altında siparişleri bir gird ile gosterirken o gridin altina bir grid daha koyup onda da her siparişin detay kalemlerini gosterebilirsini....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Cevapla