Microsoft SQL Server'da Yabancı Anahtarlar Nasıl Oluşturulur

Veritabanlarındaki en önemli kavramlardan biri veritabanı tabloları arasındaki ilişkilerin oluşturulmasıdır. Bu ilişkiler, birden fazla tabloda depolanan verileri birbirine bağlamak ve etkin bir şekilde almak için bir mekanizma sağlar. İki tablo arasında bir bağlantı oluşturmak için, bir tabloda başka bir tabloda bir sütuna başvuran bir yabancı anahtar belirtmeniz gerekir.

Veritabanı Tabloları ve İlişkiler

Veritabanlarının, Microsoft Excel gibi bir elektronik tablo programında kullanmış olduğunuz şeye benzeyen bir dizi tablo olduğunu zaten biliyor olabilirsiniz. Aslında, bir Excel elektronik tablosunu bir veritabanına bile dönüştürebilirsiniz. Veritabanlarının elektronik tablolardan ayrıldığı yerlerde, tablolar arasında güçlü ilişkiler kurmaya gelince.

Örneğin, bir şirketin insan kaynakları bilgilerini takip etmek için kullandığı bir veritabanı düşünün. Bu veritabanında, şirket çalışanlarının her bir üyesi için aşağıdaki bilgileri içeren Çalışan adı verilen bir tablo bulunabilir:

Bu örnekte, çalışan kimliği, veritabanına eklendiğinde her bir çalışan için atanan benzersiz bir tam sayıdır. Pozisyon ID, çalışanın şirketteki pozisyonunu referans almak için kullanılan bir iş kodudur. Bu şemada, bir çalışanın sadece bir pozisyonu olabilir, ancak birden fazla (veya hiç) çalışan her pozisyonu doldurabilir. Örneğin, bir “Kasiyer” pozisyonuna sahip yüzlerce çalışanınız olabilir.

Veritabanında ayrıca her konumla ilgili aşağıdaki ek bilgilerle birlikte Positions adında bir tablo da bulunabilir:

Bu tablodaki Konum Kimliği alanı, Çalışanlar tablosundaki Çalışan Kimliği alanına benzerdir - veritabanına bir konum eklendiğinde oluşturulan benzersiz bir tamsayıdır.

Çalışanların veritabanından bir listesini çıkarmaya gittiğimizde, her kişinin adını ve başlıklarını talep etmek doğal olur. Ancak, bu bilgi birden çok veritabanı tablosunda depolanır, bu nedenle yalnızca tablolar arasında varolan bir ilişkiyi gerektiren bir JOIN sorgusu kullanılarak alınabilir.

Tabloların yapısına baktığınızda, ilişkiyi tanımlayan alan muhtemelen açıktır - Pozisyon Kimliği alanı. Her çalışanın sadece bir pozisyonu olabilir ve bu pozisyon Pozisyon Pozisyonu'nun ilgili girişinden Pozisyon ID'si dahil edilerek tanımlanır. Pozisyonlar tablosunun birincil anahtarı olmanın yanı sıra, bu örnekte, Konum Kimliği alanı da Çalışanlar tablosundan Pozisyonlar tablosuna bir yabancı anahtardır. Veri tabanı daha sonra bu tabloyu birden fazla tablodaki bilgileri ilişkilendirmek için kullanabilir ve veritabanına yapılan herhangi bir değişiklik veya eklemenin referans bütünlüğünü sürdürmeye devam etmesini sağlar.

Yabancı anahtarı belirledikten sonra, aşağıdaki sorguyu kullanarak istenen bilgileri veritabanından alabilirsiniz:

SELECT FirstName, LastName, Çalışanların Başlığı INNER JOIN Çalışanların Pozisyonları.PositionID = Positions.PositionID

SQL Server'da Yabancı Anahtarlar Oluşturma

Teknik olarak, yukarıdaki gibi sorguları gerçekleştirebilmek için ilişkiyi açıkça tanımlamanıza gerek yoktur. Ancak, bir yabancı anahtar kısıtlaması kullanarak ilişkiyi açıkça tanımlarsanız, veritabanı sizin için bazı temizlik çalışmalarını gerçekleştirebilir:

SQL Server'da yabancı anahtarı nasıl oluşturacağınız aşağıda açıklanmıştır:

ALTER TABLE Çalışanlar YABANCI ANAHTARI (PositionID) EKLEYİN REFERANSLAR Pozisyonlar (PositionID)

Bir yan tümce ekleyerek bir tablo oluştururken de yabancı bir anahtar oluşturabilirsiniz:

YABANCI ANAHTAR REFERANSLAR Pozisyonlar (PositionID)

yabancı anahtar sütununun sütun tanımının sonuna.