Bir Veritabanında Bire Çok İlişkiler

İçindekiler:

Bir Veritabanında Bire Çok İlişkiler
Bir Veritabanında Bire Çok İlişkiler
Anonim

Bir veri tabanında bire çok ilişki, Tablo A'daki her kaydın Tablo B'de birçok bağlantılı kaydı olabileceği, ancak Tablo B'deki her kaydın Tablo A'da yalnızca bir karşılık gelen kaydı olabileceği zaman oluşur.

Veritabanında bire çok ilişki, en yaygın ilişkisel veritabanı tasarımıdır ve iyi tasarımın merkezinde yer alır.

Veritabanları bire bir ilişki ve çoktan çoğa ilişki de uygulayabilir.

Image
Image

Birden Çoka İlişki Örneği

Bir öğretmen ile öğrettiği dersler arasındaki ilişkiyi düşünün. Bir öğretmen birden fazla sınıfa ders verebilir, ancak ders öğretmenle aynı ilişkiye sahip olmaz.

Bu nedenle, Öğretmenler tablosundaki her kayıt için Kurslar tablosunda birçok kayıt olabilir. Bu örnek, bire çok ilişkiyi göstermektedir: bir öğretmenden birden çok kursa.

Birden Çoka İlişkisi Neden Önemlidir

Bire çok ilişkisini temsil etmek için en az iki tabloya ihtiyacınız var. Bakalım neden.

İlk Normal Form Tasarımına Uyum

Belki de adını ve öğretilen dersleri kaydetmek istediğimiz bir tablo oluşturduk. Bunun gibi bir Öğretmenler ve Kurslar tablosu tasarlayabiliriz:

Öğretmen_Kimliği Öğretmen_Adı Kurs
Öğretmen_001 Carmen Biyoloji
Öğretmen_002 Veronica Matematik
Öğretmen_003 Jorge İngilizce

Ya Carmen iki veya daha fazla ders verirse? Bu tasarımda iki seçeneğimiz var. Carmen'in mevcut kaydına şöyle ekleyebiliriz:

Öğretmen_Kimliği Öğretmen_Name Kurs
Öğretmen_001 Carmen Biyoloji, Matematik
Öğretmen_002 Veronica Matematik
Öğretmen_003 Jorge İngilizce

Ancak, yukarıdaki tasarım esnek değildir ve daha sonra veri eklediğinizde, düzenlediğinizde veya sildiğinizde sorunlara neden olabilir. Veri aramayı zorlaştırır.

Bu tasarım ayrıca, her tablo hücresinin tek, ayrı bir veri parçası içermesi gerektiğini belirten veritabanı normalleştirmesinin ilk ilkesi olan İlk Normal Form (1NF) ilkesini de ihlal eder.

İkinci Normal Form Kuralı

Başka bir tasarım alternatifi, Carmen için ikinci bir kayıt eklemek olabilir:

Öğretmen_ID Öğretmen_Name Kurs
Öğretmen_001 Carmen Biyoloji
Öğretmen_001 Carmen Matematik
Öğretmen_002 Veronica Matematik
Öğretmen_003 Jorge İngilizce

Bu yaklaşım 1NF'ye bağlıdır ancak yine de yetersiz veritabanı tasarımıdır çünkü fazlalık getirir ve büyük bir veritabanını gereksiz yere şişirebilir. Daha da önemlisi, veriler tutarsız hale gelebilir.

Örneğin, Carmen'in adı değişirse ne olur? Verilerle çalışan biri, adını bir kayıtta güncelleyebilir ve ikinci kayıtta güncelleyemeyebilir.

Bu tasarım, 1NF'ye bağlı kalan İkinci Normal Form (2NF) standardını ihlal ediyor ve aynı zamanda birden fazla kaydın fazlalığından da kaçınması gerekiyor. 2NF kuralı bunu, verilerin alt kümelerini birden çok tabloya ayırarak ve aralarında bir ilişki oluşturarak başarır.

Birden Çoka İlişkilerle Bir Veritabanı Nasıl Tasarlanır

Öğretmenler ve Kurslar tablosunda bire çok ilişkisini uygulamak için tabloları ikiye bölün ve bir yabancı anahtar kullanarak birbirine bağlayın.

Burada, Öğretmenler tablosundaki Kurs sütununu kaldırdık:

Öğretmen_ID Öğretmen_Name
Öğretmen_001 Carmen
Öğretmen_002 Veronica
Öğretmen_003 Jorge

Ve işte Kurslar tablosu. Yabancı anahtarının, Teacher_ID'nin, bir kursu Teachers tablosundaki bir öğretmene bağladığını unutmayın:

Kurs_Kimliği Kurs_Adı Öğretmen_Kimliği
Kurs_001 Biyoloji Öğretmen_001
Kurs_002 Matematik Öğretmen_001
Kurs_003 İngilizce Öğretmen_003

Öğretmenler ve Dersler tablosu arasında bir yabancı anahtar kullanarak bir ilişki geliştirdik. Bu düzenleme bize Carmen'in hem Biyoloji hem de Matematik öğrettiğini ve Jorge'nin İngilizce öğrettiğini söylüyor.

Bu tasarımın olası fazlalıkları nasıl önlediğini, bireysel öğretmenlerin birden fazla ders vermesine izin verdiğini ve bire çok ilişkisini nasıl uyguladığını görebiliriz.

Önerilen: