Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri
Microsoft Fabric'te Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
SQL veritabanı
Bu makalede, SQL Server Management Studio veya Transact-SQL kullanarak SQL Server'da yabancı anahtar ilişkilerinin nasıl oluşturulacağı açıklanır. Bir tablonun satırlarını başka bir tablonun satırlarıyla ilişkilendirmek istediğinizde, iki tablo arasında bir ilişki oluşturursunuz.
Yabancı anahtarla yeni bir tablo oluşturmak için veritabanında CREATE TABLE izni ve tablonun oluşturulduğu şema üzerinde ALTER SCHEMA izni gerekir.
Varolan bir tabloda yabancı anahtar oluşturmak için tabloda ALTER TABLE izni gerekir.
Yabancı anahtar kısıtlamasının yalnızca başka bir tablodaki birincil anahtar kısıtlamasına bağlanması gerekmez. Yabancı anahtarlar, başka bir tablodaki UNIQUE
kısıtlamasının sütunlarına başvurmak için de tanımlanabilir.
FOREIGN KEY
kısıtlamasının sütununa NULL
dışında bir değer girildiğinde, girilen değer başvurulan sütunda bulunmalıdır. Aksi takdirde, yabancı anahtar ihlali hata iletisi döndürülür. Bileşik yabancı anahtar kısıtlamasının tüm değerlerinin doğrulandığından emin olmak için, katılan tüm sütunlarda NOT NULL
belirtin.
FOREIGN KEY
kısıtlamaları yalnızca aynı sunucudaki aynı veritabanındaki tablolara başvurabilir. Veritabanları arası bilgi tutarlılığı tetikleyiciler aracılığıyla uygulanmalıdır. Daha fazla bilgi için CREATE TRIGGER (Transact-SQL)bölümüne bakın.
FOREIGN KEY
kısıtlamaları, aynı tablodaki başka bir sütuna atıfta bulunabilir ve bu da kendi kendine başvuru olarak adlandırılır.
Sütun düzeyinde belirtilen FOREIGN KEY
kısıtlaması yalnızca bir başvuru sütununu listeleyebilir. Bu sütun, kısıtlamanın tanımlandığı sütunla aynı veri türüne sahip olmalıdır.
Tablo düzeyinde belirtilen FOREIGN KEY
kısıtlaması, kısıtlama sütun listesindeki sütun sayısıyla aynı sayıda başvuru sütununa sahip olmalıdır. Her başvuru sütununun veri türü de sütun listesindeki ilgili sütunla aynı olmalıdır.
Veritabanı Altyapısı' nın, bir tablonun diğer tablolara başvuran FOREIGN KEY
kısıtlama sayısı üzerinde önceden tanımlanmış bir sınırı yoktur. Veritabanı Altyapısı, belirli bir tabloya başvuran diğer tabloların sahip olduğu FOREIGN KEY
kısıtlamalarının sayısını da sınırlamaz. Ancak, kullanılan FOREIGN KEY
kısıtlamalarının gerçek sayısı donanım yapılandırmasıyla ve veritabanı ve uygulamanın tasarımıyla sınırlıdır. Bir tablo, yabancı anahtarlar (giden başvurular) olarak en fazla 253 diğer tabloya ve sütuna başvurabilir. SQL Server 2016 (13.x) ve sonraki sürümleri, tek bir tablodaki (gelen başvurular) sütunlara başvurabilen diğer tablo ve sütun sayısının sınırını 253'ten 10.000'e yükseltmektedir. (En az 130 uyumluluk düzeyi gerektirir.) Artış aşağıdaki kısıtlamalara sahiptir:
DELETE
ve UPDATE
DML işlemleri, 253'ten fazla yabancı anahtar başvurusunu destekler.
MERGE
işlemleri desteklenmez.
Kendisine yabancı anahtar başvurusu olan bir tablo yine de 253 yabancı anahtar başvurusuyla sınırlıdır.
Şu anda columnstore dizinleri veya bellek için iyileştirilmiş tablolar için 253'ten fazla yabancı anahtar başvurusu mevcut değildir.
FOREIGN KEY
kısıtlamaları geçici tablolarda uygulanmaz.
ClR kullanıcı tanımlı tür sütununda yabancı anahtar tanımlanmışsa, türün uygulanması ikili sıralamayı desteklemelidir. Daha fazla bilgi için bkz. CLR User-Defined türleri.
varchar(max) türünde bir sütun, yalnızca başvurdığı birincil anahtar varchar(max) türü olarak tanımlandığında FOREIGN KEY
kısıtlamaya katılabilir.
Nesne Gezgini'nde, ilişkinin yabancı anahtar tarafında yer alacak tabloya sağ tıklayın ve tasarım seçin.
Tablo, oluştur ve güncelle veritabanı tablolarıiçinde açılır.
Tablo Tasarımcısı menüsünde İlişkilerseçin. (Üst bilgideki Tablo Tasarımcısı menüsüne bakın veya tablo tanımının boş alanına sağ tıklayın, ardından İlişkiler... seçin.)
Yabancı Anahtar İlişkileri iletişim kutusunda Ekle'yiseçin.
İlişki, Seçili İlişki listesinde FK_<tablename>_<tablename>
biçiminde sistem tarafından sağlanan bir adla gösterilir; burada ilk tablo adı yabancı anahtar tablosunun adıdır ve ikinci tablo adı birincil anahtar tablosunun adıdır. Bu, yabancı anahtar nesnesinin (Ad) alanı için yalnızca varsayılan ve yaygın bir adlandırma kuralıdır.
Seçili İlişki listesinden ilişkiyi seçin.
Sağdaki kılavuzda Tablo ve Sütun Belirtimi'i seçin ve özelliğin sağındaki üç noktayı (...) seçin.
Tablolar ve Sütunlar iletişim kutusunda, birincil anahtar açılan listesinde, ilişkinin birincil anahtar tarafında yer alacak tabloyu seçin.
İletişim kutusunun altındaki kılavuzda, tablonun birincil anahtarına katkıda bulunan sütunları seçin. Her sütunun sağında yer alan bitişik kılavuz hücresinde, yabancı anahtar tablosuna ait karşılık gelen yabancı anahtar sütununu seçin.
Tablo Tasarımcısı ilişki için bir ad önerir. Bu adı değiştirmek için, İlişki Adı metin kutusunun içeriğini düzenleyin.
İlişkiyi oluşturmak için tamam seçin.
Tablo tasarımcısı penceresini kapatın ve yabancı anahtar ilişkisi değişikliğinin geçerlilik kazanmasını değişikliklerinizi kaydedin.
Aşağıdaki örnek, AdventureWorks
veritabanındaki Sales.SalesReason
tablosunda yer alan sütun SalesReasonID
'i referans alan sütun TempID
üzerinde bir yabancı anahtar kısıtlaması tanımlar.
ON DELETE CASCADE
ve ON UPDATE CASCADE
yan tümceleri, Sales.SalesReason
tabloda yapılan değişikliklerin Sales.TempSalesReason
tabloya otomatik olarak yayılmasını sağlamak için kullanılır.
CREATE TABLE Sales.TempSalesReason (
TempID INT NOT NULL,
Name NVARCHAR(50),
CONSTRAINT PK_TempSales
PRIMARY KEY NONCLUSTERED (TempID),
CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID)
REFERENCES Sales.SalesReason(SalesReasonID)
ON DELETE CASCADE
ON UPDATE CASCADE
);
Aşağıdaki örnek, AdventureWorks
veritabanındaki Sales.SalesReason
tablosundaki SalesReasonID
sütununa başvuran bir yabancı anahtarı TempID
sütununda oluşturur.
ALTER TABLE Sales.TempSalesReason
ADD CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID)
REFERENCES Sales.SalesReason (SalesReasonID)
ON DELETE CASCADE
ON UPDATE CASCADE;
Ekinlikler
31 Mar 23 - 2 Nis 23
En büyük SQL, Fabric ve Power BI öğrenme etkinliği. 31 Mart – 2 Nisan. 400 ABD doları tasarruf etmek için FABINSIDER kodunu kullanın.
Bugün kaydolunEğitim
Modül
Create a relationship between tables in Microsoft Dataverse - Training
Do you need to create relationships between tables? This module will show how and why you can separate data into tables and how to relate between tables to build complex and robust business solutions. It will also explain the different kinds of relationships that you can define between tables in Dataverse.
Sertifikasyon
Microsoft Sertifikalı: Azure Veritabanı Yöneticisi Uzmanlık - Certifications
Microsoft PaaS ilişkisel veritabanı tekliflerini kullanarak bulut, şirket içi ve karma ilişkisel veritabanları için SQL Server veritabanı altyapısını yönetme.
Belgeler
SQL Server'da birincil anahtarlar oluşturma - SQL Server
SQL Server Management Studio veya Transact-SQL kullanarak SQL Server Veritabanı Altyapısı'nda birincil anahtar tanımlayın.
Yabancı Anahtar Özelliklerini Görüntüle - SQL Server
SQL Server Management Studio veya T-SQL sorguları ile bir ilişkinin yabancı anahtar özniteliklerini görüntüleyin.
Yabancı anahtar ilişkilerini sil - SQL Server
SQL Server Veritabanı Altyapısı'ndaki tablolardan yabancı anahtarı silme hakkında daha fazla bilgi edinin.