Veritabanı İlişkileri

Veritabanı ilişkileri, tüm ilişkisel veritabanlarının belkemiğidir.

Bir tablonun, başka bir tablonun birincil anahtarını referans gösteren bir yabancı anahtarı olduğunda, iki veritabanı tablosu arasında bir ilişki kurulur. İlişkisel veritabanı teriminin arkasındaki temel kavram budur.

Bir Yabancı Anahtar İlişkisi Kurmak İçin Nasıl Çalışıyor?

Birincil ve yabancı anahtarların temellerini inceleyelim. Birincil anahtar , tablodaki her kaydı benzersiz şekilde tanımlar. Genellikle bir tablodaki ilk sütun olan ve benzersiz olduğundan emin olmak için veritabanı tarafından otomatik olarak oluşturulabilen bir aday anahtar türüdür.

Yabancı anahtar, bir kaydı başka bir tablodaki verilere bağlamak için kullanılan bir başka aday anahtardır (birincil anahtar değildir).

Örneğin, hangi öğretmenin hangi rotayı öğrettiğini belirleyen bu iki tabloyu düşünün.

Burada, Kurslar tablosunun birincil anahtarı Course_ID'dir. Yabancı anahtarı Teacher_ID:

Dersler
Kurs kimliği COURSE_NAME Teacher_ID
Course_001 Biyoloji Teacher_001
Course_002 Matematik Teacher_001
Course_003 ingilizce Teacher_003

Derslerdeki yabancı anahtarın Öğretmenler'deki birincil anahtarla eşleştiğini görebilirsiniz:

Öğretmenler
Teacher_ID Öğretmen adı
Teacher_001 Carmen
Teacher_002 veronika
Teacher_003 Jorge

Teacher_ID yabancı anahtarının Dersler ve Öğretmenler tabloları arasında bir ilişki kurulmasına yardımcı olduğunu söyleyebiliriz.

Veritabanı İlişkilerinin Türleri

Yabancı anahtarları veya diğer aday anahtarları kullanarak, tablolar arasında üç tür ilişki kurabilirsiniz:

Bire bir : Bu ilişki türü ilişkinin her bir tarafında sadece bir kayıt sağlar.

Birincil anahtar, başka bir tabloda yalnızca bir kayda - veya hiç - ile ilgilidir. Örneğin, bir evlilikte, her eşin sadece bir eşi vardır. Bu tür bir ilişki tek bir tabloda uygulanabilir ve bu nedenle yabancı bir anahtar kullanmaz.

Bire-çok : Bire- bir ilişki bir tabloda tek bir kaydın başka bir tabloda birden çok kayıtla ilişkili olmasını sağlar.

Müşteriler ve Siparişler tabloları olan bir veritabanına sahip bir işletme düşünün.

Tek bir müşteri birden fazla sipariş satın alabilir, ancak tek bir sipariş birden fazla müşteriyle ilişkilendirilemez. Bu nedenle Siparişler tablosunda, Müşteriler tablosunun Siparişler tablosuna işaret eden yabancı anahtarı bulunmazken, Müşteriler tablosunun birincil anahtarıyla eşleşen bir yabancı anahtar bulunur.

Çoktan çoğa : Bu, bir tablodaki birçok kaydın başka bir tabloda birçok kayda bağlandığı karmaşık bir ilişkidir. Örneğin, işimiz muhtemelen yalnızca Müşteriler ve Siparişler tablosuna değil, aynı zamanda bir Ürünler tablosuna da ihtiyaç duyar.

Yine, Müşteriler ve Siparişler tablosu arasındaki ilişki bire çoktur, ancak Siparişler ve Ürünler tablosu arasındaki ilişkiyi düşünün. Bir sipariş birden fazla ürün içerebilir ve bir ürün birden çok siparişe bağlanabilir: birkaç müşteri aynı ürünleri içeren bir siparişi gönderebilir. Bu tür bir ilişki en az üç tablo gerektirir.

Veritabanı İlişkileri Neler Önemli?

Veritabanı tabloları arasında tutarlı ilişkiler kurmak, veri bütünlüğünün sağlanmasına yardımcı olur, veri tabanı normalleştirmesine katkıda bulunur. Örneğin, herhangi bir tabloyu yabancı bir anahtarla bağlamadıysak ve bunun yerine sadece Dersler ve Öğretmenler tablolarındaki verileri birleştirdiksek:

Öğretmenler ve Kurslar
Teacher_ID Öğretmen adı kurs
Teacher_001 Carmen Biyoloji, Matematik
Teacher_002 veronika Matematik
Teacher_003 Jorge ingilizce

Bu tasarım esnek değildir ve her bir hücrenin tek, ayrı bir veri parçası içermesi gerektiğini ifade eden İlk Normal Form (1NF) veri tabanı normalleştirmesinin ilk prensibini ihlal etmektedir.

Ya da belki de 1NF'yi uygulamak için Carmen'e ikinci bir rekor eklemeyi kararlaştırdık:

Öğretmenler ve Kurslar
Teacher_ID Öğretmen adı kurs
Teacher_001 Carmen Biyoloji
Teacher_001 Carmen Matematik
Teacher_002 veronika Matematik
Teacher_003 Jorge ingilizce

Bu, hala gereksiz bir çoğaltma ve veri ekleme anomalileri olarak adlandırılan, tutarsız verilere katkıda bulunabileceği anlamına gelen zayıf bir tasarımdır.

Örneğin, bir öğretmenin birden fazla kaydı varsa, bazı verilerin düzenlenmesi gerekiyorsa, ancak veri düzenleme işlemini gerçekleştiren kişi birden çok kaydın varlığını fark etmiyor mu? Tablo, daha sonra, aynı kişi için, onu tanımlamak ya da ondan kaçınmak için net bir yol olmadan farklı veriler içerecektir.

Bu tabloyu iki tabloya ayırmak, Öğretmenler ve Dersler (yukarıda görüldüğü gibi), veriler arasında uygun ilişkiyi yaratır ve bu nedenle veri tutarlılığı ve doğruluğunu sağlamaya yardımcı olur.