Master Detail yapılar üzerine....

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Master Detail yapılar üzerine....

Mesaj gönderen aslangeri »

s.a. Arkadaşlar.
Şu aralar forumda Master Detail kayıtlar üzerine sorularda artma dikkatimi çekti. Bu konu üzerinde forumda epey konu bulunsada genel kavramar üzerinde birkaç bişeyler yazmak istiyorum.

Master Detail Nedir?
Master Detail (Ana Detay) yapı iki tablo arasındaki 1--> N ilişkinin adıdır. Yani Master (ana) tablomuzdaki 1 kayıta karşılık Detail (detay) tablomuzda bir veya birden fazla kayıt olduğu durumlarda iki tablo arasındaki ilişki master detail olarak adlandırılır.
Örnek vermek gerekirse muhasebe programlarında kullanılan müşteri(cari) tablosu ve Fatura tabloları arasındaki ilişkiyi inceliyebilirz. Bir müşteriye birden fazla fatura kesebiliriz. Bu durumda cari tablomuz master fatura tablomuzda detay tablomuz oluyor. Ancak bu master detay durumu fatura ve cari kart tabloları arasındaki durumdur. Fatura ve fatura satırları arasındada bir master detail ilişki vardır. Ancak bir öcneki örnekte detay tablo konumunda olan fatura tablosu fatura detayları tablosu için master durumundadır. Yani bir fatura içinde birden fazla fatura satırı olabilir. Bu örnek üzerinden evam edersek malzemeler ve malzeme birimleri tablosu arasında da benzer bir ilişki vardır. Bir malzeme için bir birim söz konusudur. birimler tablosu master malzemeler tablosu detay tablo durumundadır. Örnekler çoğaltılabilir.
Günlük yaşantınızdanda örnekler olabilir. Mesela siz ve ayakkabılarınız birden fazla ayakkabınız var ama siz birtanesiniz.
Siz master ayakkabınız detay durumundadır. :wink: (Bu örnekten sonra gördüğünüz herşeyi master detail kalıba oturtturmaya çalışmayın :D )

Peki iki tablo arasındaki bu ilişki nasıl sağlanacak?

Her tablonun kendi içinde birincil indeksi (PK) vardır (olması iyi olur).
Yapmamız gereken şey detay tabloya master tablodaki karşılığı için extra bir alan eklemek. Yukardaki örneklerle devam edecek olursak cari ve fatura tabloları arasındaki master detail ilişki için fatura tablosuna cari kart tablosundaki hangi cariye ait olduğunu tutmak için extra bir alan ekliyeceğiz. Ve bu alandada carikartımızın pk alanındaki değeri tutacağız. Böylece faturanın hangi cariye kesilmiş olduğunu bulabilceğiz. Aynı değerde ikinci bir cari olamayacağı (zaten pk nın amacıda bu değilmi?) için. Aynı işlemi fatura ve fatura malzemeleri tablosu içinde düşünebilirsiniz. fatura malzemeleri tablosuna hangi faturaya ait olduğunu tutmak için ekstra bir alan ekliyeceğiz ve o alanda faturanın id sini (pk de yazan değerini) tutacağız. Böylece hangi satırın hangi faturaya ait olduğunu bulabileceğiz.

İyi güzelde bu FK ne?

Master tabloda bir kaydı seçtiğimiz zaman detay tabloda ona bağlı kayıtları çabuk getirmesi için detay tabloda master tablodaki karşılığını tutan kayıt için bir index oluşturuyoruz.
Foreign Key detay tabloda master tablonun id sinin tutulduğu alanın indexi. Normal indexler sadece sırama için kullanılıarken (unique indexler normal index değil) foreign keyi ise alandaki değerin başka bir tablodaki karşılığını tutar. kullanıcıyı tablolar arasındaki ilişki hakkında bilgilendirir.
Gelişmiş Veritabanı Yönetim Sistemleri foreign key tanımlanmış alanlara kullanıcıların hatalı değer girmesini engelleyecek, master tabloda yapılan değişiklikleri detay tabloya uygulayacak veya master tabloda değişiklik yapmasını engellecek şekilde tasarlanmışlar bu açıdan kullanıcılarına (yani bizlere) büyük kolaylıklar sağlamışlardır.

Master detail için fk tanımlamak şart değildir. Master detail tablolar arasındaki ilişkinin adıdır. FK ile bu ilişkiyi kullandığımız VTYS ye bildiriyoruz. Ancak VTYS bilsede bilmesede iki tablo arasında 1-> N ilişki varsa bu master detaildir.

Umarım açıklayıcı olmuştur. Kafanıza takılan noktaları sorabilirsiniz.
iyi çalışmalar dilerim.

Konu ile ilgili iki link
Index, Primary Key Ve Foreign Key (Firebird / Interbase )
Firebird Client/Server,Master/Detail,IBEvent Kullanıcı Hak. Örnek Program
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla