Wprowadzenie do klucza obcego w SQL

Klucz obcy jest ograniczeniem w SQL. Służy do powiązania dwóch tabel. Klucz obcy w jednej tabeli wskazuje na klucz podstawowy w innej tabeli. Można użyć klucza obcego, aby upewnić się, że wiersz w jednej tabeli ma odpowiadający wiersz / wiersze w innej tabeli. Tabela, do której istnieje odwołanie, jest nazywana tabelą nadrzędną, a tabela z kluczem obcym jest znana jako tabela podrzędna. Ta relacja rodzic-dziecko wymusza regułę zwaną integralnością referencyjną. Integralność referencyjna to właściwość danych stwierdzająca, że ​​wszystkie referencje są prawidłowe.

Tak więc, jeśli masz w bazie relacje 1 do wielu lub wiele do wielu, klucze obce będą bardzo przydatne. Działa jako odsyłacz między dwiema tabelami (tabela_podstawowa i tabela_podstawowa), ponieważ odwołuje się do klucza podstawowego innej tabeli. Dlatego ustanawia połączenie między tabelą nadrzędną a tabelą podrzędną.

Składnia

Utworzenie nowej tabeli z kluczem obcym wymaga uprawnień CREATE TABLE w bazie danych

CREATE TABLE child_Table
(
column_1 datatype ( NULL |NOT NULL ),
column_2 datatype ( NULL |NOT NULL ),

CONSTRAINT F_key
FOREIGN KEY (child_column1, child_column2, … child_column_n)
REFERENCES parent_Table (parent_column1, parent_column2, … parent_column_n)
( ON DELETE ( NO ACTION |CASCADE |SET NULL |SET DEFAULT ) ) ( ON UPDATE ( NO ACTION |CASCADE |SET NULL |SET DEFAULT ) ) );

  • Child_Table to nazwa tabeli, którą utworzymy
  • kolumna_1, kolumna_2 - kolumny, które zostaną dodane do tabeli.
  • F_key- To jest ograniczenie klucza obcego.
  • child_column1, child_column2… child_column_n- Jest to nazwa kolumn child_Table, które odnoszą się do klucza podstawowego w tabeli nadrzędnej.
  • Parent_Table - To jest nazwa tabeli nadrzędnej. Klucz podstawowy tabeli nadrzędnej jest wymieniony w tabeli podrzędnej
  • ON DELETE - Ten parametr podejmuje działania na danych podrzędnych po usunięciu danych nadrzędnych. SET NULL, NO ACTION, CASCADE, SET DEFAULT to niektóre z wartości tego parametru.
  • ON UPDATE - jest to parametr opcjonalny, który podejmuje działania na danych podrzędnych po aktualizacji danych nadrzędnych. SET NULL, NO ACTION, CASCADE, SET DEFAULT to niektóre z wartości tego parametru.
  • KASKADA - Możemy używać tego razem z ON DELETE i ON UPDATE. Po usunięciu lub aktualizacji danych nadrzędnych Dane podrzędne zostaną usunięte lub zaktualizowane.

Utworzenie klucza obcego w istniejącej tabeli wymaga uprawnienia ZMIEŃ na tabeli.

ALTER table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name(columns)
REFERENCES parent_table(columns)

Zasady

  1. Klucze obce nie dotyczą tabel tymczasowych.
  2. Ograniczenie klucza obcego nie musi być powiązane tylko z kluczem podstawowym innej tabeli, może być również powiązane z ograniczeniem UNIQUE innej tabeli.
  3. KLUCZE ZAGRANICZNE Ograniczenia mogą odwoływać się do innej kolumny w tej samej tabeli. Jest to określane jako odniesienie własne.
  4. Ograniczenia klucza obcego mogą odnosić się do tabel w tej samej bazie danych.
  5. Możemy również wstawić wartości NULL do tabeli potomnej.
  6. Po wstawieniu wartości innej niż NULL do ograniczenia klucza obcego wartość musi istnieć w kolumnie, do której występuje odwołanie, w przeciwnym razie wystąpił komunikat o naruszeniu.
  7. Wartości unikalnych kluczy rodzica nie można zmienić, jeśli regułą aktualizacji jest RESTRICT i istnieje jeden lub więcej zależnych wierszy. Jeśli jednak regułą aktualizacji jest BRAK DZIAŁANIA, unikatowe klucze nadrzędne mogą być aktualizowane, dopóki każde dziecko ma klucz nadrzędny do czasu zakończenia instrukcji aktualizacji.

Przykłady

Powiedzmy, że mamy dwie tabele Klienci i Zamówienia. Tabela klientów zawiera wszystkie dane związane z klientem, a tabela Zamówienia zawiera dane związane z zamówieniem klienta.

Klienci

Cust_idKlucz podstawowy
Nazwa klienta
Lokalizacja

Zamówienia

Order_idKlucz podstawowy
Data zamówienia
Ilość
Cust_idKlucz obcy
Kwota ogółem

W powyższym przykładzie kolumna Cust_id w tabeli ORDERS to klucz obcy wskazujący na kolumnę Cust_id w tabeli CUSTOMERS.

Załóżmy, że te tabele mają następujące wartości

Klienci

1001AlexNAS
1002CareyNAS
1003SidUK
1004TomekAUS
1005KapilIND

Zamówienia

7820-10-2018510021200
7912-10-201741001800
8020-11-20162)1005369
8109-10-201651002258
8219-08-20161110041900
8330-06-20164510012300
8416-02-201671001890
8502-01-20162)1002260

Dla cust_id 1001 istnieją trzy zamówienia, które istnieją w tabeli zamówień.

Dla cust_id 1003 nie ma zamówienia.

Jeśli więc mamy określone dane (Say id 1003) w tabeli nadrzędnej, nie jest konieczne, aby te dane znajdowały się w tabeli podrzędnej, ale na odwrót nie jest to prawda.

Nie możemy mieć żadnych danych w tabeli podrzędnej (Tabela zamówień), która nie istnieje w tabeli nadrzędnej (Klienci).

Na przykład nie możemy wstawić nowego rekordu powiedzenia dla cust_id 1006 w tabeli Zamówienia, ponieważ cust_id 1006 nie istnieje w tabeli Klienci.

Poniżej znajdują się przykłady, które naruszają referencyjną integralność tej relacji:

  1. Wstawienie wiersza w tabeli ZAMÓWIENIA, w której identyfikator Cust_ID nie pojawia się w kolumnie ID klienta w tabeli CUSTOMERS.
  2. Usuwanie wiersza z tabeli CUSTOMERS, w której identyfikator Cust_ID wiersza do usunięcia jest nadal obecny w kolumnie Cust_ID w tabeli ORDERS.

Po usunięciu określonego rekordu z głównej tabeli istnieją dwa sposoby zachowania integralności danych w tabeli podrzędnej. Kiedy dwie tabele są połączone z kluczem obcym i niektóre dane w głównej tabeli są usuwane, dla których rekord istnieje również w tabeli potomnej, mamy pewien mechanizm zapisywania integralności danych w tabeli potomnej

  • On Delete Cascade : Spowoduje to usunięcie rekordu z tabeli potomnej, jeśli ta wartość klucza obcego zostanie usunięta z głównej tabeli.
  • On Delete NULL: Spowoduje to ustawienie wszystkich wartości w tym rekordzie tabeli potomnej na NULL, dla których wartość klucza obcego zostanie usunięta z głównej tabeli.

Wniosek - klucz obcy w SQL

Dlatego zaleca się stosowanie klucza obcego w bazie danych, która ma relacje jeden do jednego lub jeden do wielu. Główną zaletą korzystania z ograniczeń klucza obcego jest to, że poprawia wydajność. Programiści mogą łatwo zidentyfikować strukturę bazy danych. Możemy również zbadać, w jaki sposób zapytanie ma odzyskać dane.

Polecane artykuły

Jest to przewodnik po kluczu obcym w SQL. Tutaj omawiamy reguły i przykłady kluczy obcych w SQL ze składnią. Możesz także zapoznać się z następującymi artykułami, aby dowiedzieć się więcej -

  1. Widoki SQL
  2. Rodzaje połączeń w SQL Server
  3. Co to jest PL / SQL?
  4. Ograniczenia programu SQL Server
  5. Top 6 rodzajów połączeń w MySQL z przykładami