MySQL foreign key (yabancı anahtar) nedir ve nasıl oluşturulur?

Yabancı Anahtar Nedir?

Yabancı anahtar (foreign key), ilişkisel veritabanlarında bir tablodaki bir alanın (veya alanlar kümesinin) başka bir tablodaki bir alan ile bağlantılı olduğunu tanımlayan bir kısıtlamadır. Bu yapısal ilişki, veri bütünlüğünü sağlamak için kullanılır. Yabancı anahtarlar, bir tabloda bulunan verilerin, diğer tablodaki verilerle tutarlılığını ve geçerliliğini korur. Bir tablodaki bir yabancı anahtar, bağlantılı olduğu tabloda birincil anahtar (primary key) olmalıdır. Bu, iki tablo arasındaki ilişkiyi oluşturur ve karmaşık veritabanı yapılarında verilerin organizasyonunu ve erişimini kolaylaştırır.

Yabancı Anahtarın Önemi

Yabancı anahtarlar, veri modelleme sürecinde önemli bir rol oynamaktadır. Bu kısıtlamalar sayesinde:

1. Veri Bütünlüğü: Yabancı anahtarlar, ilişkili iki tablo arasında tutarlılığı sağlar. Örneğin, ana tabloda mevcut olmayan bir kayıt, yabancı anahtar olarak başka bir tabloda kullanılamaz.

2. İlişkiler Arasındaki Bağlantı: Veritabanındaki verilerin ilişkilerini doğru bir şekilde yönetir. Bu, karmaşık sorgular yazmayı ve verilere etkin bir şekilde ulaşmayı kolaylaştırır.

3. Otomatik Güncelleme ve Silme: Yabancı anahtarlar, ana tablodaki verilerin güncellenmesi veya silinmesi durumunda, bu değişikliklerin ilişkili tablolara yansımasını sağlar. Cascade güncelleme veya silme seçenekleri ile, ilişkili veriler otomatik olarak güncellenebilir veya silinebilir.

Yabancı Anahtar Oluşturma

MySQL’de bir yabancı anahtar oluşturmak için öncelikle ilgili tabloların yapısı belirlenmelidir. Yabancı anahtar oluşturma işlemi, tablo oluşturma aşamasında veya mevcut bir tabloya ekleme aşamasında gerçekleştirilebilir. Aşağıda her iki yöntem de ele alınacaktır.

Tablo Oluşturma Esnasında Yabancı Anahtar Tanımlama

Yeni bir tablo oluşturulurken, aynı zamanda yabancı anahtar da tanımlanabilir. Örnek bir senaryo üzerinden açıklanacak olursa; iki tablo düşünülmesi gerekir: `kategoriler` ve `urunler`.

“`sql
CREATE TABLE kategoriler (
kategori_id INT NOT NULL,
kategori_adi VARCHAR(100),
PRIMARY KEY (kategori_id)
);

CREATE TABLE urunler (
urun_id INT NOT NULL,
urun_adi VARCHAR(100),
kategori_id INT,
PRIMARY KEY (urun_id),
FOREIGN KEY (kategori_id) REFERENCES kategoriler(kategori_id)
);
“`

Yukarıda yer alan kullanıcıda, `urunler` tablosundaki `kategori_id` alanı, `kategoriler` tablosundaki `kategori_id` alanını referans alır. Böylece `urunler` tablosundaki her ürün, `kategoriler` tablosunda mevcut bir kategoriye atanmış olur.

Mevcut Bir Tabloda Yabancı Anahtar Ekleme

Zaten var olan bir tabloya yabancı anahtar eklemek için `ALTER TABLE` komutu kullanılabilir. Aşağıdaki örnekler üzerinden açıklanacaktır.

“`sql
ALTER TABLE urunler
ADD CONSTRAINT fk_kategori
FOREIGN KEY (kategori_id)
REFERENCES kategoriler(kategori_id);
“`

Bu komut, `urunler` tablosundaki `kategori_id` alanını `kategoriler` tablosundaki `kategori_id` alanıyla ilişkilendirir. `fk_kategori` ise bu yabancı anahtar kısıtlaması için verilen bir isimdir.

Yabancı Anahtar Kısıtlamalarının Yönetimi

Yabancı anahtarlar üzerinde çeşitli işlemler yapılabilir. Bu işlemler genellikle tablolar arası veri tutarlılığını yönetmek amacıyla gerçekleştirilmektedir. Ayrıca, yabancı anahtar kısıtlamaları ile birlikte bazı önemli seçenekler de bulunmaktadır:

– CASCADE: Ana tabloda bir kayıt silindiğinde veya güncellendiğinde, ilişkili kayıtlar otomatik olarak hem silinmekte hem de güncellenmektedir.

– SET NULL: Ana tabloda bir kayıt silindiğinde veya güncellendiğinde, yabancı anahtarın referans gösterdiği alanın değeri NULL yapılmaktadır.

– NO ACTION: Ana tablo üzerinde bir işlem gerçekleştirilirse (güncelleme veya silme), bu durum yabancı anahtarın etkilendiği alanda herhangi bir değişim yaratmamaktadır.

Yabancı Anahtar Sınırlamaları

Her ne kadar yabancı anahtarlar, veri bütünlüğünü sağlamak için etkili olsa da bazı sınırlamaları da beraberinde getirir. Yabancı anahtarlar, yalnızca ilişkili tablolardaki veriler üzerinde çalışır. Ana tablodaki veriler silindiğinde ya da değiştirildiğinde, bu durum ilişkili tablodaki veriler üzerinde etkili olur. Ayrıca, yabancı anahtarlar ile ilişkili tablolar arasında performans sorunları yaşanabilir. Çok fazla yabancı anahtar içeren tabloların sorguları daha karmaşık hale gelebilir ve bu durum performansı olumsuz etkileyebilir.

Sonuç olarak, yabancı anahtarlar, ilişkisel veritabanı yapılarında kritik bir unsurdur. Veri tutarlılığı, bütünlüğü ve ilişkili verilerin düzenlenmesi açısından önem taşır. Yabancı anahtarların doğru bir şekilde yapılandırılması, veritabanının işlevselliğini ve verimliliğini artıracaktır.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR