Konuyu Açan #1
SQL Bire Çok İlişki Tasarımı

Veritabanı tasarımında en temel ve yaygın kullanılan ilişkilerden biri olan bire çok (one-to-many) ilişkisi, gerçek dünyadaki pek çok durumu modellemek için vazgeçilmezdir. Bu ilişki türü, bir tablodaki bir kaydın başka bir tablodaki birçok kayda bağlanması durumunu ifade eder. Örneğin, bir "Yazar" tablosu ile "Kitap" tablosu arasında, bir yazarın birçok kitabı olabileceği durum bu ilişkiye örnektir.

Bire çok ilişkiyi doğru şekilde tasarlamak için temel ilkeleri anlamak gerekir. En temel yöntem, "bir taraf" tablosuna (örneğin, Yazarlar) birincil anahtar (PK) atarken, "çok taraf" tablosuna (örneğin, Kitaplar) bu anahtarın yabancı anahtar (FK) olarak eklenmesidir. Bu sayede, her kitap kaydı ilgili yazarın kimliğini göstererek ilişki kurulmuş olur.

Örneğin, aşağıdaki gibi iki tablo tasarımı yapabiliriz:

KOD
123456789101112
CREATE TABLE Yazarlar (
    YazarID INT PRIMARY KEY,
    YazarAd VARCHAR(100) NOT NULL
);

CREATE TABLE Kitaplar (
    KitapID INT PRIMARY KEY,
    KitapAd VARCHAR(200) NOT NULL,
    YazarID INT,
    FOREIGN KEY (YazarID) REFERENCES Yazarlar(YazarID)
);


Burada, Kitaplar tablosundaki YazarID sütunu, Yazarlar tablosundaki YazarID ile ilişkilendirilmiştir. Bu yapı sayesinde, her kitap kaydı belirli bir yazara bağlı olur ve sorgulamalar kolaylıkla yapılabilir.

Bu tasarım, veri bütünlüğünü sağlar ve sorgulama performansını destekler. Ayrıca, ilişkili verilerin yönetimini de kolaylaştırır. Çok sayıda kayda sahip ilişkilerde, uygun indeksleme ve uygun yabancı anahtar kullanımına dikkat edilmelidir.

Sonuç olarak, bire çok ilişkiler, veritabanı tasarımında ilişkilerin doğru ve tutarlı şekilde kurulmasını sağlayarak, veri modellemenin temel taşlarından biri olur. Bu ilişkilerin tasarımı, veri tutarlılığı ve sorgu etkinliği açısından kritik öneme sahiptir.

İşte bu temel prensipler göz önüne alınarak, farklı uygulama örnekleri ve daha karmaşık yapılar da oluşturulabilir.

Yanıt vermek için giriş yapmış olmalısınız.

Bu konuyu görüntüleyen kullanıcılar (Toplam: 4, Üyeler: 4, Misafirler: 0)
Toplam: 4 (üyeler: 4, misafirler: 0)
0 alıntı seçildi