Veritabani tasariminda 3 iliski turu


İlişkisel veri tabanı tasarımında 3 çeşit ilişki vardır. İlişki türlerine kısaca değinmek gerekirse aşağıdaki gibidir. Bu ilişki türlerini bilerek Türkçeye çevirmedim. Çoğu yerde İngilizceleri ile karşılaşıyor oluyoruz çünkü. 
  •  One-to-One
  • One-to-Many (or Many-to-One)
  • Many-to-Many

One-to-One

Tablo A'daki bir satır, Tablo B'de yalnızca bir eşleşen satıra sahip olabilir ve bunun tersi de geçerlidir.
Tablo B'de depolanan veriler tablo A'da kolayca depolanabildiğinden, bu ortak bir ilişki türü değildir. Ancak, bu ilişki türünü kullanmanın bazı geçerli nedenleri vardır. Bire bir ilişki güvenlik amacıyla, büyük bir tabloyu bölmek ve başka çeşitli özel amaçlar için kullanılabilir.


Yukarıdaki örnekte, aynı şekilde bir HourlyRate alanını doğrudan Çalışan tablosuna koyabiliriz ve Ödeme tablosuyla uğraşmazdık. Ancak, saatlik ücret yalnızca belirli veri tabanı kullanıcılarının görmesi gereken hassas veriler olabilir. Bu nedenle, saatlik ücreti ayrı bir tabloya yerleştirerek, Ödeme tablosunun çevresinde ekstra güvenlik sağlayabiliriz, böylece yalnızca belirli kullanıcıların bu tablodaki verilere erişmesini sağlayabiliriz.

One-to-Many

Bu en yaygın ilişki türüdür. Bu tür bir ilişkide, Tablo A'daki bir satır Tablo B'deki birçok eşleşen satıra sahip olabilir, ancak Tablo B'deki bir satır Tablo A'daki yalnızca bir eşleşen satıra sahip olabilir
Bire-çok ilişkiler, hangi şekilde baktığınıza bağlı olarak Bire-bir ilişki olarak da görüntülenebilir.


Yukarıdaki örnekte, Müşteri tablosu “birçok” ve Şehir tablosu “bir” dir. Her müşteriye yalnızca bir şehir atanabilir. Bir şehir birçok müşteriye atanabilir.

Many-to-Many

Çoktan çoğa ilişkide, tablo A'daki bir satır tablo B'deki birçok eşleşen satıra sahip olabilir ve bunun tersi de geçerlidir.

Çoktan çoğa bir ilişki, bir ara tabloyla birbirine bağlanmış ikiden çokya ilişki olarak düşünülebilir.


Aracı tabloya genellikle “bağlantı tablosu” (“çapraz referans tablosu”) da denir. Bu tablo diğer iki tabloyu birbirine bağlamak için kullanılır. Bunu, diğer iki tablonun her birinin birincil anahtarına başvuran iki alana sahip olarak yapar.

Aşağıdakiler çoktan çoğa bir ilişkiye örnektir:

İlişkiler sekmesinde çoktan çoğa ilişkinin ekran görüntüsü.
Bu, bir ilişki Microsoft Access oluşturduğunuzda görüntülenen İlişkiler sekmesidir. Bu durumda, çoktan çoğa bir ilişki henüz yaratıldı. Siparişler tablosu, Müşteriler tablosuna Ürünler tablosuyla çapraz referans veren bir bağlantı tablosudur.

Böylece, Müşteriler masası ile Ürünler masası arasında çoktan çoğa bir ilişki oluşturmak için, Siparişler adında yeni bir masa yarattık.

Siparişler tablosunda, Müşteri Kimliği ve diğer adı Ürün Kimliği olan bir alan var. Bu alanların içerdiği değerler başvurulan tablodaki ilgili alandaki değere karşılık gelmelidir. Bu yüzden Orders.CustomerId'deki verilen herhangi bir değer de Customer.CustomerId alanında bulunmalıdır. Öyle olmadıysa, gerçekte var olmayan müşteriler için emir alabilirdik. Var olmayan ürünler için de emir alabilirdik. İyi bir referans bütünlüğü değil.

Çoğu veri tabanı sistemi, veri tabanının referans bütünlüğünü zorlayıp uygulamamasını belirlemenizi sağlar. Bu nedenle, bir kullanıcı (veya bir işlem) birincil anahtar alanında bulunmayan bir yabancı anahtar değeri eklemeye çalıştığında, bir hata ortaya çıkar.

Örneğimizde Orders.CustomerId alanı Müşteriler için yabancı bir anahtardır (CustomerId (bu tablonun birincil anahtarı). Ve Orders.ProductId alanı Products.ProductId alanına (bu tablonun birincil anahtarı olan) yabancı bir anahtardı

 
 

İlginizi Çekebilir

Sonraki
« Önceki
Previous Article
Next Post »
Yorumlar
Yorumlar