4.1 Giriş

Veritabanı tablolarını normal tablolara dönüştürerek artık aralarındaki ilişkileri analiz edebilirsiniz. İlişkili iki tablo arasında etkileşime giren öğelerin sayısına kardinalite denir. Cardinality, verilerinizi tablolara ne kadar verimli bir şekilde ayırdığınızı kontrol etmenize yardımcı olur.

Teorik olarak, tüm varlıklar birbirleriyle ilişki sürdürebilir, ancak pratikte varlıklar arasında üç tür ilişki vardır:

  • Bire bir
  • birden çoğa
  • çoktan çoğa

4.2 Bire bir iletişim

B varlığının her örneği için A varlığının yalnızca bir örneği varsa, bunların bire bir ilişkisi olduğu söylenir (genellikle "1:1" olarak gösterilir). ER diyagramlarında, böyle bir ilişki her iki ucunda küçük bir çubuk bulunan bir çizgi ile gösterilir:

1:1 ilişki, genellikle, onları ayrı tutmak için iyi bir nedeniniz olmadığı sürece, iki tablonun verilerinin en iyi şekilde bir tablo halinde birleştirildiğini gösterir.

Ancak, bazı durumlarda 1:1 ilişkileri olan tabloların kullanılması mantıklıdır. Tablolarınızda açıklamalar gibi isteğe bağlı veriler içeren alanlar varsa ve çoğu durumda bunlar boşsa, tüm açıklamaları ayrı bir tabloya taşımak mantıklıdır, bu da sık sık yaşanan boşluklardan kurtulmanızı ve veritabanınızın verimliliğini artırmanızı sağlar. .

Ardından, verileri düzgün bir şekilde eşlemek için her tabloya en az bir özdeş sütun eklemeniz gerekir (bunun için bir birincil anahtar seçmek en iyisidir).

4.3 Birden çoğa ilişki

Bu tür bir ilişki, bir tablodaki bir kayıt başka bir tablodaki birden çok varlıkla ilişkilendirildiğinde ortaya çıkar. Örneğin, aynı müşteri birden fazla sipariş verebilir veya bir kütüphane ziyaretçisi bir ziyarette birden fazla kitap ödünç alabilir. Birden çoğa ilişkiler (veya kısaca 1:M), aşağıdaki örnekte gösterildiği gibi kaz ayağı notasyonu kullanılarak bir diyagramda ifade edilir:

Bir veritabanını planlarken 1:M ilişkisi uygulamak için, "bir" tablosundaki birincil anahtarı "çok" tablosuna bir öznitelik olarak eklemeniz yeterlidir. Birincil anahtar başka bir tabloda ise buna "yabancı anahtar" denir. "Bir" tablo ana tablo, "çok" tablo ise alt tablo olarak kabul edilir.

4.4 Çoktan çoğa ilişki

Bir tablodaki birden çok varlık, diğerindeki birden çok varlığa bağlanabildiğinde, çoktan çoğa (veya M:M) bir ilişkiye sahip oldukları kabul edilir. Örneğin, öğrenciler ve sınıflar arasında böyle bir ilişki vardır, çünkü her öğrenci birkaç farklı sınıfa girebilir ve buna bağlı olarak her sınıfa birçok öğrenci gelebilir.

ER diyagramında bu tür bir ilişki şu şekilde gösterilir:

Ne yazık ki, veritabanında böyle bir ilişkiyi doğrudan uygulamak imkansızdır. Bu nedenle, iki bire çok ilişkiye bölünmesi gerekecektir.

Bunu yapmak için iki tablo arasında yeni bir varlık oluşturmanız gerekecek. Satışlar ve ürünler arasında bir B:M ilişkisi kurulursa, yeni varlık her satışın içeriğini temsil edeceği için "satılan ürünler" olarak adlandırılabilir.

"Satılan mallar" ile "satışlar" tablosu ve "mallar" tablosu 1:M tipine göre bağlantılı olacaktır. Farklı modellerde, bu tür ara varlıklar farklı şekilde adlandırılır - "bağlantı tabloları", "ilişkisel varlıklar" veya "düğüm tabloları".

Her bağlantı tablosu girişi, bitişik tabloların iki farklı varlığını birbirine bağlar (ve ayrıca ek bilgiler içerebilir). Örneğin, öğrenciler ve sınıflar arasındaki bir bağlantı tablosu şöyle görünebilir:

4.5 Zorunlu mu değil mi?

Bağlantı analizine yönelik başka bir yaklaşım, bağlı varlıklardan hangisinin başka bir varlığın varlığı için ön koşul olduğunu belirlemektir. Opsiyonel bağlantı tarafı bagajda bir daire ile işaretlenmiştir.

Örneğin bir devletin BM'de kendi temsilcisinin olması için dünya haritası üzerinde bulunması gerekir ancak bunun aksini söyleyen ifade yanlış olacaktır:

İki varlık birbirine bağımlı olabilir (yani biri olmadan diğeri var olamaz).

Özyinelemeli bağlantılar

Bazen bir tablo kendisine atıfta bulunabilir. Örneğin, bir çalışan tablosu, bizi aynı tablodaki başka bir çalışana yönlendiren bir "yönetici" özniteliğine sahip olabilir. Bu özyinelemeli ilişkidir.

Ekstra bağlantılar

Bağlantılar, bir kereden fazla ifade edilirse gereksiz olarak kabul edilir. Kural olarak, önemli bilgiler kaybolmadan bunlardan biri silinebilir. Örneğin, "öğrenciler" varlığı "öğretmenler" varlığına yalnızca doğrudan değil, aynı zamanda dolaylı olarak "sınıflar" aracılığıyla bağlıysa, "öğrenciler" ve "öğretmenler" varlıkları arasındaki ilişkiyi kaldırmak mantıklıdır. Bu karar, öğrencilerin yalnızca sınıflar aracılığıyla öğretmenlere atanmasının mümkün olduğu gerçeğiyle gerekçelendirilmektedir.

4.6 Verilerin referans bütünlüğü

Birincil ve yabancı anahtarları değiştirirken, verinin referans bütünlüğü gibi bir yönü gözlemlemek gerekir . Ana fikri, aynı verileri tutarlı bir şekilde depolayan bir veritabanında iki tablo tutmaktır.

Veri bütünlüğü, aralarında doğru bağlantı bulunan tablolar arasında uygun şekilde oluşturulmuş ilişkileri temsil eder. Hangi durumlarda veri bütünlüğü ihlal edilebilir:

  • Silme anomalisi . Ana tablodan bir satır silindiğinde gerçekleşir. Bu durumda, bağımlı tablodaki yabancı anahtar, ana tablodan silinen satıra başvurmaya devam eder.
  • İnsersiyon anomalisi . Bağımlı bir tabloya bir satır eklendiğinde gerçekleşir. Bu durumda, bağımlı tablodaki yabancı anahtar, ana tablodaki herhangi bir satırın birincil anahtarıyla eşleşmez.
  • Anormalliği güncelle . Böyle bir anormallikle, bir tablonun birkaç satırı aynı nesneye ait verileri içerebilir. Bir satırdaki verileri değiştirirseniz, bunlar başka bir satırdaki verilerle çakışabilir.

Silme anomalisi

Silme anormalliğini çözmek için yabancı anahtar iki kısıtlamadan birine ayarlanmalıdır:

Bağımlı tablodaki bir satırın mutlaka ana tablodan bir satırı gerektirmesi durumunda, yabancı anahtar basamaklı silmeye ayarlanır. Yani, ana tablodan bir satır silindiğinde, ilişkili satır(lar) bağımlı tablodan silinir.

Bağımlı tablodaki bir satır, ana tablodaki satırla ilişkiye izin vermiyorsa (yani, böyle bir ilişki isteğe bağlıdır), ilgili satır ana tablodan silindiğinde yabancı anahtar NULL olarak ayarlanır. Yabancı anahtar sütunu null yapılabilir olmalıdır.

Ekleme anomalisi

Bağımlı bir veri tablosuna eklerken ekleme anormalliğini çözmek için, yabancı anahtarı temsil eden sütunun null yapılabilir olması gerekir. Ve böylece, eklenen nesnenin ana tablo ile bağlantısı yoksa, yabancı anahtar sütunu NULL değerine sahip olacaktır.

Anormallikleri güncelle

Güncelleme anormalliği sorununu çözmek için daha önce tartışılan normalleştirme uygulanır.