klucz obcy ograniczenia

Klucz obcy (FK) jest kolumna lub kombinacji kolumn, które jest używane do ustanawiania i wymusić łącze między danymi w dwóch tabelach.Definiując ograniczenia klucz obcy, podczas tworzenia lub modyfikowania tabela można utworzyć klucz obcy.

W odwołaniu klucz obcy tworzone jest połączenie między dwiema tabelami, kolumna lub kolumn, które zawierają wartości klucz podstawowy dla jednej tabela odwołują się kolumna lub kolumna w innej tabela.Ta kolumna staje się klucz obcy w drugiej tabela.

Na przykład Sales.SalesOrderHeader tabelaAdventureWorks Baza danych zawiera łącze umożliwiające jego Sales.SalesPerson tabela, ponieważ istnieje relacja logiczna między zamówień sprzedaży i sprzedawców.The SalesPersonID kolumna in the SalesOrderHeader tabela matches the klucz podstawowy kolumna of the SalesPerson tabela.The SalesPersonID kolumna in the SalesOrderHeader tabela is the klucz obcy to the SalesPerson tabela.

SalesOrderHeader.SalesPersonID is a foreign key.

Ograniczenie klucz obcy nie musi być połączone tylko z ograniczenia klucz podstawowy w innej tabela, to można także zdefiniować do odwoływania się do kolumn z ograniczeniem UNIQUE w innej tabela.Ograniczenie klucz obcy może zawierać wartości null, jednak jeśli dowolnej kolumna złożonego ograniczenie klucz obcy zawiera wartości null, sprawdzenie wszystkich wartości wchodzące w skład ograniczenie klucz obcy jest pomijane.Aby upewnić się, że wszystkie wartości złożonego ograniczenie klucz obcy są weryfikowane, należy określić NOT NULL na wszystkich uczestniczących kolumn.

Uwaga

Ograniczenie klucz obcy można odwoływać się do kolumn w tabelach w tej samej bazy danych lub do tej samej tabela.Są to tak zwane samoodwołujących tabel.Na przykład należy wziąć pod uwagę do tabela Pracownik, który zawiera trzy kolumny: employee_number, employee_name, and manager_employee_number.Ponieważ kierownik również jest pracownikiem, istnieje relacja klucz obcy z manager_employee_number kolumnaemployee_number kolumna.

Więzy integralność

Mimo że jest głównym celem ograniczenia klucz obcy kontrolować dane, które mogą być przechowywane w tabela klucz obcy, steruje także zmian danych w tabela klucz podstawowy.Na przykład, jeśli zostanie usunięty wiersz dla sprzedawcy z Sales.SalesPerson tabela, a także identyfikator sprzedawcy, które jest używane dla zamówień sprzedaży w Sales.SalesOrderHeader tabela, relacyjnej spójność między dwiema tabelami jest przerwane; sprzedawcy usuniętych zamówień sprzedaży są oddzielone w SalesOrderHeader łącze do danych w tabelaSprzedawcy tabela.

Ograniczenie klucz obcy pozwala uniknąć tej sytuacji.Ograniczenie wymusza więzy integralność gwarantując, że zmiany nie można dokonać z danych w tabela klucz podstawowy, jeśli łącze do danych w tabela klucz obcy unieważnić te zmiany.Jeżeli próba usunięcia wiersza w tabela klucz podstawowy lub zmienić wartości klucz podstawowy, akcja zakończy się niepowodzeniem, gdy usunięte lub zmienione wartość klucz podstawowy odpowiada wartości w ograniczeniu klucz obcy z innej tabela.Pomyślnie zmienić lub usunąć wiersz w ograniczeniu klucz obcy, użytkownik musi najpierw usuń danych klucz obcy w tabela klucz obcy lub zmiany danych klucz obcy w tabela klucz obcy, które łączy klucz obcy z różnych danych klucz podstawowy.

Indeksowanie klucz obcy ograniczenia

Tworzenie indeksu na klucz obcy jest często przydatne w następujących sytuacjach:

  • Z ograniczeniami klucz obcy w tabelach pokrewnych są sprawdzane zmiany ograniczenia klucz podstawowy.

  • kolumna klucz obcy są często stosowane w kryteria, gdy dane z tabel pokrewnych są łączone w kwerendach przez dopasowanie kolumna lub kolumn w ograniczeniu klucz obcy jednej tabela do kolumna klucza podstawowego lub unikatowe lub kolumna w innej tabela.Indeks umożliwia Database Engine Aby szybko znaleźć powiązanych danych w tabela klucz obcy. Jednak tworzenie tego indeksu nie jest wymagane.Można łączyć dane z powiązanych tabel, nawet wtedy, gdy nie ograniczenia klucz podstawowy lub klucz obcy są definiowane w tabelach, ale relacja klucz obcy między dwoma tabelami wskazuje, że dwie tabele mają został zoptymalizowany do połączenia w kwerendzie, której używa kluczy jako jej kryteria.Aby uzyskać więcej informacji na temat ograniczeń klucz obcy przy użyciu sprzężenia zobacz Join Fundamentals i Typy kwerendy i indeksów.

Liczba klucz obcy ograniczenia w tabela

SQL Server nie ma wstępnie zdefiniowany limit liczby ograniczeń klucz obcy, a tabela może zawierać (które odwołać innych tabel) lub liczby ograniczeń klucz obcy należących do innych tabel, które odwołują się do określonej tabeli.Niemniej jednak rzeczywista liczba ograniczeń klucz obcy jest ograniczone przez konfiguracja sprzętu i projektowania bazy danych i aplikacji.Zaleca się, że tabela ma zawierać nie więcej niż 253 ograniczenia klucz obcy i że się odwoływać za nie więcej niż 253 ograniczenia klucz obcy.Należy wziąć pod uwagę koszt wymuszanie ograniczeń klucz obcy podczas projektowania swoją bazę danych i aplikacji.