Konuyu görüntüle
IUCODERS FORUM > Programlama > Veritabanları > Tek alan - çok tablo ilişkisi nasıl ifade edilir?
Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
27.04.2008-23:04 #43490
Bir tabloda tutulan birden fazla sayıdaki kayıtlar, başka bir tablodaki tek bir kayıt ile eşleştiğinde ilişkiyi çok basit bir şekilde ifade edebiliyoruz. Peki elimizdeki bu kayıtlar çok sayıdaki tablodan her hangi birindeki bir kayıt ile eşleşiyorsa bunu nasıl ifade edebiliriz?

Benim aklıma gelen bir yöntem, bu tabloda iki alan oluşturmak. Bu alanlardan biri hangi tablo ile eşleştiğini tutar, diğeri ise eşleşilen tablodaki anahtar alan ile eşleşir. Büyük ihtimal böyle tasarlayacağım ama bunun bilinen ifade yöntemleri ile nasıl ifade edebileceğimi çıkaramadım. Daha önce böyle bir örnekile karşılaşmış olan var mı? Ya da bu konuda bir fikri olan?





Let`s make this world a better place to live !

Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
27.04.2008-23:38 #43499
şu senaryo için konuşursan
araba ve garaj diye iki tablo olsun
bir araba birden fazla garaja sahip olabilir. her garajda birden fazla araba olabilir.
bu iki tabloyu üçüncü bir tablo ile birleştirebilirsin.
garaj_araba
araba_id
garaj_id

gibi






N/A
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
27.04.2008-23:43 #43500
yada şoyle bir senaryo için
örneğin
duyuru diye bir tablo olsun ders duyuruları,uyeduyururları diye ayrı tablolar olsun dinamik olarak kayıt eklendiğini varsayalım
burda duyuru tablosuna master_table ile master_id koyarak hangi tablodan ve hangi kayıt numarasından kaydın geldiğini öğrenebilirsin.
yada duyuru_iliski diye bi tablo yapıp oraya duyuru_id ,master_tablo,master_id koyarsın boylece bir duyuruyu birden fazla kategori ile ilişkilendirirsin. master tablo silinmesi yada master id silinmesi durumunda da duyuru tablosuna dokunmamış olursun.





N/A
Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
28.04.2008-00:24 #43503
Yanıtların için teşekkür ederim. Senaryomu soyut olarak şu şekilde anlatayım.

Elimde 4-5 farklı class (sayısı zamanla artabilir) var her biri içinde aynı özelliklere sahip bir nesne dizisi tanımlı. Her bir class'ın örneklerinin tutulduğu kendilerine ait birer tablosu var. Aynı şekilde o class'ların içinde tanımlı olan bu bahsettiğim nesne dizisi de verilerini kendine ait bir tablodan çekiyor. Yani bu ortak bir yapıya ait nesne kendi tablosundan verileri alırken hangi sınıfa ait bir nesnenin üyesi olduğunu ve ait olduğunu nesnenin id'sini biliyor ve kendi tablosundan bu iki kritere göre veriyi çekiyor.

Büyük ihtimal böyle bir yol izleyeceğim. Fakat ben bu durumu ifade edebileceğim bir ilişki şeması ya da benzeri bir ifade yöntemi bulamadım. Sanki ayrı bir tablo oluşturup, o alt sınıfı kullanan modüllerin bir listesini tutsam, ifade açısından daha kolay gibi duruyor.

Örneğin;
modules (module_id, table_name)

ortak_yapi (module_id, item_id', contents, ..........)

module_abc (item_id', ..........)
module_xyz (item_id', ..........)
module_prs (item_id', ..........)

Burada alttaki 3 tablo tamamen farklı özellikteki class'lara ait. Sisteme modül ekledikçe bu tabloların sayısı artacak. Her modüldeki tek bir kayıt, bu ortak_yapi diye bahsettiğim sınıftan çok sayıda örnek ile eşleşebilecek. Buna gerçek hayattan örnek gelmiyor aklıma maalesef. Fakat bu şekilde kodlamayı planlıyorum. Tek derdim bu ilişkiyi bir standart ifade yöntemi ile ifade edebilmek.







Let`s make this world a better place to live !

Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
28.04.2008-21:21 #43558
Yok mu bunu ilişki şemasında nasıl ifade edebileceğim konusunda yorumu olan? ortak_yapı tablosundaki item_id alanı diğer tabloların her hangi birindeki item_id ile eşleşiyor. Bu anahtar alanlar farklı tablolara ait. Önceki mesajımdaki ilişkisel ifadenin geçerliliği var mıdır?





Let`s make this world a better place to live !

Yazar
rcpdmrbs


avatar

Kayıt: 19.02.2008
28.04.2008-21:24 #43559
isa bağlantısından bahsetmiyorsun dimi şafak hugs







havan batsin.
Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
28.04.2008-21:33 #43560
rcpdmrbs yazdi
 
isa bağlantısından bahsetmiyorsun dimi şafak hugs


Eğer ISA oluyorsa nasıl çizildiğini bilmiyorum. ISA ile işin içinden çıkılabilse bile bunun ilişki şemasında nasıl gösterilebileceğini bulamadım. Ya da birden fazla alanın anahtar olarak kullanılmak zorunluluğu olan tablonun diğer tablolar ile ilişkisinin nasıl ifade edilebileceğini bilmiyor olabilirim. Belki de oturup veritabanı tasarımı üzerine çalışmam da gerekebilir. Ama bilen varsa beni bu zahmetten kurtararak büyük sevaba girer :)





Let`s make this world a better place to live !

Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
28.04.2008-22:03 #43568
ortak bir tabloda gosterim için ortak anahtarları tutabilirsin tabi.
dediğin şekilde de olabilir.





N/A
Yazar
aliprinter


avatar
İstanbul
Kayıt: 12.02.2006
28.04.2008-22:46 #43570
Anladığım şey böyle:


Sarı anahtar birincil anahtar olduğunu, beyaz anahtar yabancı anahtar olduğunu, kalın yazılmış alan adları otomatik sayı olduğunu gösteriyor. (Kendi standardımı oluşturdum smile)

Yeni bir modül eklendiğinde modules tablosuna modül adını eklemen yeterli olacak, yeni eklenen modül id'sine göre module_items tablosuna veri girebilirsin bu durumda.
Ortak yapıda da item_id alandan zaten ilişkili modul_id'sini bulabilirsin.







Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
28.04.2008-23:22 #43578
aliprinter yazdi
 
.....

Teşekkürler. Ama her modül kendi nesnelerini kendisine ait (yapısı kendisine özel) bir tabloda tutuyor. Yani her modülün item_id'leri sadece o modül içinde unique. Sisteme modül eklendikçe o modüle ait veri tablosu da sisteme ekleniyor ve bu tablolar hakkında bildiğimiz tek şey tablodaki her kaydın (o tablo kapsamında) unique bir numarası olduğu. Bunun dışındaki alanlar tablodan tabloya farklılık gösteriyor. Yani farklı yapılardaki nesneler o belirttiğim ortak yapıdan 0 ya da çok sayıda örneği kendileri için oluşturabiliyorlar. Kendi çalışma konum dışında somut örnekler düşünüyorum ama gelmiyor aklıma:)





Let`s make this world a better place to live !

Yazar
aliprinter


avatar
İstanbul
Kayıt: 12.02.2006
28.04.2008-23:46 #43582
Anladım, yanlış anlamışım. Şimdi anladığım şekliyle böyle bir veritabanı için bir tasarım standartı bilmiyorum. Ancak önceki mesajında belirttiğin tablo örnekleri gibi veritabanı tabloları ve alanlarını hazırlayıp, aralarındaki ilişkiyi kod içerisinden kolayca implemente edebilirsin gibime geliyor. thinking





Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
29.04.2008-14:46 #43625
Zaten sorun implemente etmekte değil, sadece veritabanı tasarımı ile ilgili dökümanda bu ilişkiyi ifade etmekte.





Let`s make this world a better place to live !

Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb