Yabancı anahtarlar, veritabanı yöneticilerinin bir SQL veritabanı yönetim sisteminde bulunan farklı bağlantıları kolayca tanımlamasına olanak tanır.
SQL, bir veritabanı yönetim sistemi içindeki veriler üzerinde matematiksel işlemler gerçekleştirir. Bu veritabanları, her biri verileri belirli bir varlıkta depolayan farklı tablolar içerir. Araç kiralama veritabanınız varsa, bu veritabanındaki bir varlık (veya tablo) müşteriler olacaktır (her bir müşterideki tüm kişisel verileri depolayacaktır).
Bu veritabanı tabloları, her satırın bir kaydı barındırdığı ve her sütunun özniteliğe özgü verileri tuttuğu satırlar ve sütunlar içerir.
Bir veritabanı yönetim sisteminde, her kayıt (veya satır) benzersiz olmalıdır.
Birincil Anahtarlar
Bir tablodaki her kaydın farklı olması şart olmasına rağmen, bu her zaman böyle değildir. Veritabanında her biri için iki müşteri varsa, araç kiralama veritabanı örneğiyle devam edelim. "John Brown" ismine sahipse, John Brown'ın kendisinin vermediği bir Mercedes-Benz'i iade etmesi beklenebilir kira.
Bir birincil anahtar oluşturmak bu riski azaltacaktır. Bir SQL veritabanı yönetim sisteminde, birincil anahtar, bir kaydı diğerinden ayıran benzersiz bir tanımlayıcıdır.
Bu nedenle, bir SQL veritabanı yönetim sistemindeki her kaydın bir birincil anahtarı olmalıdır.
Bir Veritabanında Birincil Anahtarları Kullanma
SQL kullanan bir veritabanı yönetim sistemine birincil anahtarları dahil etmek için, yeni bir tablo oluştururken bunu normal bir öznitelik olarak ekleyebilirsiniz. Dolayısıyla müşteri tablosu dört özellik (veya sütun) içerecektir:
- CarOwnerID (birincil anahtarı saklar)
- İsim
- Soyadı
- Telefon numarası
İlişkili: SQL'de Tablo Nasıl Oluşturulur
Artık veritabanına giren her müşteri kaydının benzersiz bir kimlik numarasının yanı sıra bir adı, soyadı ve telefon numarası olacaktır. Telefon numarası birincil anahtar olacak kadar benzersiz değildir, çünkü her seferinde bir kişiye özel olsa da, bir kişi numarasını kolayca değiştirebilir, yani artık başka birine ait olacaktır.
Birincil Anahtar Örneğine Sahip Bir Kayıt
/ * müşteriler tablosunda yeni bir kayıt oluşturur * /
MÜŞTERİ DEĞERLERİNE EKLEYİN
('0004',
'John',
'Kahverengi',
'111-999-5555');
Yukarıdaki SQL kodu, önceden mevcut olana yeni bir kayıt ekleyecektir. Müşteriler tablo. Aşağıdaki tablo, iki John Brown kaydıyla yeni müşteri tablosunu göstermektedir.
Yabancı Anahtar
Artık bir araba kiralayan kişiyi diğerinden benzersiz bir şekilde ayıran birincil anahtarlara sahipsiniz. Tek sorun, veritabanında, her John Brown ile kiraladığı araba arasında gerçek bir bağlantı olmamasıdır.
Bu nedenle, hata yapma olasılığı hala mevcuttur. Yabancı anahtarların devreye girdiği yer burasıdır. Sahiplik belirsizliği sorununu çözmek için bir birincil anahtar kullanmak, yalnızca birincil anahtar bir yabancı anahtar olarak iki katına çıktığında elde edilebilir.
Yabancı Anahtar Nedir?
Bir SQL veritabanı yönetim sisteminde yabancı anahtar, benzersiz bir tanımlayıcı veya bir veritabanındaki iki veya daha fazla tabloyu birbirine bağlayan benzersiz tanımlayıcıların bir kombinasyonudur.
Var olan dört SQL veritabanı yönetim sisteminden en popüler olanı ilişkisel veritabanı yönetim sistemidir. İlişkisel bir veritabanındaki hangi tablonun yabancı anahtara sahip olması gerektiğine karar verirken, önce hangi tablonun konu, hangisinin ilişkilerinde nesne olduğunu belirlemelisiniz.
Araç kiralama veritabanına geri dönersek, her müşteriyi doğru araca bağlamak için bir müşterinin (öznenin) bir araba (nesne) kiraladığını anlamanız gerekir. Bu nedenle yabancı anahtar araba tablosunda olmalıdır.
Yabancı anahtara sahip bir tablo oluşturan SQL kodu normdan biraz farklıdır.
Yabancı Anahtar Örneğiyle Tablo Oluşturma
/ * araç kiralama veritabanında yeni bir araba tablosu oluşturur * /
MASA ARABALARI OLUŞTUR
(
LicenseNumber varchar (30) NOT BOŞ BİRİNCİL ANAHTAR,
CarType varchar (30) NULL DEĞİL,
Müşteri Kimliği varchar (30) YABANCI ANAHTAR REFERANSLAR Müşteriler (MüşteriNo)
);
Yukarıdaki kodda görebileceğiniz gibi, yeni tabloya bağlanan birincil anahtara referansla birlikte bir yabancı anahtar açıkça bu şekilde tanımlanmalıdır.
İlişkili: Yeni Başlayanlar İçin Temel SQL Komutları Hile Sayfası
Yeni tabloya bir kayıt eklemek için, yabancı anahtar alanındaki değerin orijinal tablonun birincil anahtar alanındaki değerle eşleştiğinden emin olmanız gerekir.
Yabancı Anahtar Örneğiyle Kayıt Ekleme
/ * arabalar tablosunda yeni bir rekor oluşturur * /
INSERT INTO Cars DEĞERLERİ
('100012',
'Mercedes-Benz',
'0004');
Yukarıdaki kod, yeni kayıtta yeni bir kayıt oluşturur. Arabalar tablo, aşağıdaki sonucu verir.
Arabalar Masası
Yukarıdaki tablodan, kayıttaki yabancı anahtara göre bir Mercedes-Benz kiralayan doğru John Brown'ı tanımlayabilirsiniz.
Gelişmiş Yabancı Anahtarlar
Bir veritabanında yabancı anahtarı kullanmanın iki yolu daha vardır.
Yukarıdaki yabancı anahtar tanımına bakarsanız, yabancı anahtarın benzersiz bir tanımlayıcı veya benzersiz tanımlayıcıların bir kombinasyonu olabileceğini söylediğini göreceksiniz.
Araç kiralama veritabanı örneğine geri dönersek, bir müşteri o aracı her kiraladığında yeni bir kayıt (aynı arabanın) oluşturmanın, Arabalar tablo. Arabalar satılıyorsa ve tek bir müşteriye satılıyorsa, mevcut veritabanı mükemmeldir; ancak arabaların kiralık olduğu düşünüldüğünde, bu verileri temsil etmenin daha iyi bir yolu var.
Bileşik Anahtarlar
Bir bileşik anahtarın iki veya daha fazla benzersiz tanımlayıcısı vardır. İlişkisel bir veritabanında, tek bir yabancı anahtarın kullanımının o veritabanında var olan ilişkileri yeterince temsil etmeyeceği durumlar olacaktır.
Araç kiralama örneğinde en pratik yaklaşım, kira detaylarını saklayan yeni bir tablo oluşturmaktır. Araç kiralama tablosundaki bilgilerin faydalı olabilmesi için hem araç hem de müşteri tablolarına bağlanması gerekmektedir.
Bileşik Yabancı Anahtarlarla Tablo Oluşturma
/ * araç kiralama veritabanında bir CarRental tablosu oluşturur * /
MASA OLUŞTURMA CarRental
(
Tarih: KİRALANMA TARİHİ BOŞ DEĞİL,
Lisans Numarası varchar (30) BOŞ DEĞİL YABANCI ANAHTAR BAŞVURULARI Arabalar (Lisans Numarası),
Müşteri Kimliği varchar (30) BOŞ DEĞİL YABANCI ANAHTAR REFERANSLAR Müşteriler (MüşteriKimliği),
BİRİNCİL ANAHTAR (Kiralanan Tarih, Lisans Numarası, Müşteri Kimliği)
);
Yukarıdaki kod önemli bir noktayı göstermektedir; SQL veritabanındaki bir tablo birden fazla yabancı anahtara sahip olsa da, yalnızca tek bir birincil anahtara sahip olabilir. Bunun nedeni, bir kaydı tanımlamanın yalnızca tek bir yolu olması gerektiğidir.
Benzersiz bir anahtara sahip olmak için tablodaki üç özelliği de birleştirmek gerekir. Bir müşteri aynı gün içinde birden fazla araç kiralayabilir (böylece Müşteri Kimliği ve Kiralandığı Tarih iyi bir kombinasyon değildir) birden fazla müşteri aynı gün içinde aynı aracı kiralayabilir (dolayısıyla Lisans numarası ve Kiralandığı Tarih iyi bir kombinasyon değildir).
Bununla birlikte, hangi müşterinin, hangi arabanın ve hangi günde mükemmel bir benzersiz anahtar olduğunu söyleyen bir bileşik anahtarın oluşturulması. Bu benzersiz anahtar, hem bileşik bir yabancı anahtarı hem de bileşik birincil anahtarı temsil eder.
Yabancı Birincil Anahtarlar
Oh evet, yabancı birincil anahtarlar çıkar. Resmi bir adı olmamasına rağmen, yabancı anahtar aynı tabloda birincil anahtar da olabilir. Bu, mevcut bir varlık (veya başka bir tablodaki kayıt) hakkında özelleştirilmiş veriler içeren yeni bir tablo oluşturduğunuzda gerçekleşir.
Farz edelim (araba kiralama şirketinde çalışan), şirketin veri tabanında çalışanlar tablosunun altında. Birkaç yıl sonra süpervizör olur ve süpervizör masasına eklenir.
Fred hala bir çalışan ve yine aynı kimlik numarasına sahip olacak. Dolayısıyla, Fred’in çalışan kimliği artık gözetmen tablosunda yabancı anahtar olarak yer alıyor ve bu da birincil o tabloyu girin (çünkü artık bir süpervizör olduğuna göre Fred için yeni bir kimlik numarası yaratmanın bir anlamı yok).
Artık SQL Veritabanlarında Yabancı Anahtarları Tanımlayabilirsiniz
Yabancı anahtarlar, bir SQL veritabanı içindeki farklı tabloları birbirine bağlar. Bu makaleden, yabancı anahtarın ne olduğunu, nasıl çalıştığını ve bir veritabanında bulundurmanın neden önemli olduğunu görebilirsiniz. Ayrıca, yabancı anahtarların temel ve daha karmaşık biçimlerini de anlıyorsunuz.
Yabancı anahtarların ilginç olduğunu düşünüyorsanız, SQL veritabanlarınızı sorgulamak için proje ve seçim işlemlerini kullanmaya başladığınızda bir gün geçireceksiniz.
Bu örneklerle Proje ve Seçim işlemlerini anlayarak SQL ilişkisel veritabanlarını öğrenin.
Sonrakini Oku
- Programlama
- Programlama
- SQL
- veri tabanı
Kadeisha Kean, Tam Yığın Yazılım Geliştiricisi ve Teknik / Teknoloji Yazarıdır. En karmaşık teknolojik kavramlardan bazılarını basitleştirme konusunda farklı bir yeteneği var; herhangi bir teknoloji acemi tarafından kolayca anlaşılabilecek malzeme üretmek. Yazma, ilginç yazılım geliştirme ve dünyayı dolaşma (belgeseller aracılığıyla) konusunda tutkulu.
Haber bültenimize abone ol
Teknoloji ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için haber bültenimize katılın!
Bir adım daha…!
Lütfen size az önce gönderdiğimiz e-postadaki e-posta adresinizi onaylayın.