Aracılığıyla paylaş


yabancı anahtar kısıtlamaları

Yabancı anahtar (YA) bir sütun veya kurmak ve verileri iki tablo arasında bir bağlantı sağlamak için kullanılan sütun birleşimi ' dir.Yabancı anahtar, bir tablo oluşturduğunuzda veya değiştirdiğinizde bir FOREIGN KEY kısıtlaması tanımlayarak oluşturabilirsiniz.

Yabancı anahtar başvurudaki sütun veya sütunları bir tablo için birincil anahtar değeri tutan sütun veya başka bir tablodaki sütunları tarafından başvurulan, iki tablo arasında bir bağlantı oluşturulur.Bu sütun, ikinci bir yabancı anahtar olur tablo.

Örneğin, Sales.SalesOrderHeader tablosundaAdventureWorks Veritabanı bağlantısı olan Sales.SalesPerson , satış siparişleri ve satış temsilcileri arasında mantıksal bir ilişki olduğu tablo.The SalesPersonID sütun in the SalesOrderHeader tablo matches the birincil anahtar sütun of the SalesPerson tablo.The SalesPersonID sütun in the SalesOrderHeader tablo is the yabancı anahtar to the SalesPerson tablo.

SalesOrderHeader.SalesPersonID is a foreign key.

Yalnızca başka bir tabloda birincil anahtar kısıtlaması için bağlantı kurulacak BIR yabancı anahtar kısıtlaması yok; bir UNIQUE sınırlamasıyla başka bir tablodaki sütunların başvurmak için de tanımlanabilir.Bir yabancı anahtar kısıtlaması, null değer içerebilir; ancak, bir bileşik yabancı anahtar kısıtlaması herhangi bir sütun null değer içeriyorsa, doğrulama yabancı anahtar kısıtlaması kadar yaptığınız tüm değerlerin atlanır.Tüm değerler bir bileşik yabancı anahtar kısıtlaması doğrulanır emin olmak için katılan tüm sütunlarda NOT NULL belirtin.

Not

Bir yabancı anahtar kısıtlaması, aynı veritabanındaki veya aynı tablo içinde tablolardaki sütunlarla başvuruda bulunabilir.Bunlar olarak adlandırılır Self-REFERENCING tablolar.Örneğin, bir çalışanın göz önünde bulundurun tablo üç sütun içerir: employee_number, employee_name, and manager_employee_number.Yönetici aynı zamanda bir çalışan olduğundan, gelen bir yabancı anahtar ilişkisi yoktur manager_employee_number sütunemployee_number sütun.

Başvurusal bütünlük

Yabancı anahtar içinde saklanan veriyi denetlemek için bir FOREIGN KEY kısıtlaması ana amacı olmasına karşın tablo, birincil anahtar verilerde yapılan değişiklikleri de denetlediği tablo.Örneğin bir satıcı için satır silinir, Sales.SalesPerson tablo ve satışçının KIMLIĞINI satış siparişleri için kullanılırSales.SalesOrderHeader tablosu, iki tablo arasında bir ilişkisel bütünlük bozuk; silinen satışçının satış siparişlerini artık SalesOrderHeader bağlantı veri tablosuzSatış Temsilcisi tablosudur.

Bir yabancı anahtar kısıtlaması, bu durumu önler.Değişiklikleri, Birincil anahtardaki verileri yapılamıyor guaranteeing, bilgi tutarlılığı kısıtlamayı zorlar tablo yabancı anahtar içinde veri bağlantısını değişiklikleri geçersiz kılar, tablo.Birincil anahtar satır silmek için denemesi yapılırsa tablo veya tıklattığınızda, silinen veya değiştirilen birincil anahtar değeri yabancı anahtar kısıtlaması, başka bir değeri karşılık gelen bir birincil anahtar değeri değiştirmek için , eylem başarısız olacak tablo.Başarılı bir şekilde değiştirmek ya da bir FOREIGN KEY kısıtlaması bir satır silmek için önce ya da yabancı anahtar yabancı anahtarı verilerde silmelisiniz tablo veya yabancı anahtar içinde yabancı anahtar verileri değiştirmek tablo, yabancı anahtar, farklı birincil anahtar verileri bağlar.

yabancı anahtar kısıtlamaları dizin oluşturma

Yabancı anahtar dizin oluşturma genellikle aşağıdaki nedenlerle yararlıdır:

  • birincil anahtar kısıtlamaları yapılan değişiklikler, ilişkili tablolardaki yabancı anahtar kısıtlamaları ile denetlenir.

  • Ilgili tablo s verileri sütun veya sütunları bir FOREIGN KEY kısıtlaması eşleştirerek sorgularda birleştirildiğinde yabancı anahtar sütunları birleştirmek ölçütünde sık sık kullanılır tablo benzersiz ya da birincil anahtar sütunu veya diğer sütunlarda tablo.Dizin sağlayan Database Engine ilgili verileri, yabancı anahtar içinde hızlı bir şekilde bulmak için tablo. Ancak, bu dizin oluştururken gerekli değildir.Ilgili iki tablodaki verileri bile hiçbir birincil anahtar veya FOREIGN KEY kısıtlamaları tablolar arasında tanımlanmış, ancak iki tablo arasında bir yabancı anahtar ilişkisi, iki tablo anahtarlar, ölçüt olarak kullanan bir sorguda birleştirilmek üzere optimize olduğunu gösterir birleştirilebilir.yabancı anahtar kısıtlamaları ile birleşimleri kullanma hakkında daha fazla bilgi için bkz: Temelleri katılın. ve Sorgu türleri ve dizinler.

Bir tablodaki yabancı anahtar kısıtlamaları sayısı

SQL Server önceden tanımlanmış bir sınır sayısına ya da bir tablo yabancı anahtar kısıtlamaları içerebilir sahip (olan diğer tablolar başvuru) mu veya yabancı anahtar kısıtlamaları sayısı belirli bir tabloya başvuran diğer tablolar tarafından sahip olunan.Yine de, gerçek sayısı yabancı anahtar kısıtlamaları donanım yapılandırmanız ve veritabanı ve uygulama tasarım sınırlıdır.Önerilir bir tablo en çok 253 yabancı anahtar kısıtlamaları içeren ve en çok 253 yabancı anahtar kısıtlamaları başvuruyor.Veritabanı ve uygulamalarınızı tasarlarken yabancı anahtar kısıtlamaları zorlanarak maliyetini dikkate alın.