Jakie są zagraniczne klucze SQLITE

Jakie są zagraniczne klucze SQLITE
SQLite to RDBMS open source (relacyjny system zarządzania bazą danych), który zarządza danymi w tabelach. Tabele używane w bazach danych mogą mieć ze sobą relacje, aby ustalić tę relację, używane są klawisze zagraniczne. Klucze zagraniczne informują, który tabela jest podłączona do której tabeli.

Relacje między tabelami są kluczową cechą relacyjnych baz danych, które są reprezentowane przez klucze obce i podstawowe. W tym artykule wyjaśnimy klawisze zagraniczne i ich pracę w SQLite.

Jakie są zagraniczne klucze?

Klucze obce to wartości w tabeli wskazującej klucz podstawowy innej tabeli. Aby to zrozumieć, rozważmy dwa tabele, tabelę A i tabelę B:

Tabela a

Identyfikator studenta (Primary_Key) Nazwa ucznia Identyfikator nauczyciela (forign_key)
1 Jan 123
2 Paweł 453

Tabela b

Identyfikator nauczyciela (Primary_Key) Nazwy nauczycieli Osoby dozwolone
123 Alex Matematyka, fizyka
453 Juana Chemia, botanika

Teraz w tabeli A, Legitymacja studencka jest głównym kluczem tej tabeli i Identyfikator nauczyciela jest kluczem obce, ale w tabeli B, Identyfikator nauczyciela jest kluczowym kluczem. Identyfikator nauczyciela, który jest kluczem obce, ustanawia związek między tabelą A do tabeli B.

Jak sprawdzić status klucza obcego w SQLite

SQLite zaczyna obsługiwać funkcję klucza obcego po wydaniu jego wersji 3.6.19, aby sprawdzić, czy zainstalowana wersja SQLite obsługuje klucz obcy, czy nie, wykonaj następujące polecenie w środowisku SQLite:

Pragma obcokrajowe;

Wyjście może być albo „0” lub „1”, a jeśli nie wyświetla żadnego wyjścia, oznacza to, że nie obsługuje klawiszów obcych.

Wyjście Wynik
0 Klucze zagraniczne są wyłączone
1 Klucze zagraniczne są włączone

Jak włączyć/wyłączyć obce klucze w SQLite

Aby włączyć klucze zagraniczne w SQLite, uruchom następujące:

Pragma obcistość_keys = on;

Możemy wyłączyć klucze obce, po prostu wpisując zamiast powyższego polecenia. Aby potwierdzić, że klucze obce są włączone, uruchom polecenie Pragma:

Pragma obcokrajowe;

Wyjście pokazuje 1, co oznacza, że ​​klucze obce są włączone.

Jaka jest ogólna składnia korzystania z klucza obcego

Ogólna składnia używania klucza obcego do utworzenia tabeli to:

Utwórz Tabela Table_name
(
Kolumna 1 Z danych [NULL | Nie null] klucz podstawowy,
Kolumna2 danych [NULL | Nie null] obcy klucz,

Klucz obcy (kolumna 1, kolumna2,…))
Odniesienia do macierzystego_tabla (kolumna 1, kolumna2…)
);

Wyjaśnienie tego jest:

  • Użyj klauzuli „Utwórz tabelę” do stworzenia stołu
  • Wymień nazwę Table_name na nazwę tabeli
  • Zdefiniuj kolumny za pomocą ich typów danych, a także zdefiniuj, czy wsparcie null/not null wartości
  • Wspomina także kolumny, które zawierają klucz podstawowy i klucz obcy
  • Użyj instrukcji Klucz obcy i wspomina się w () nazwach kolumn, które są klawiszami zagranicznymi
  • Użyj klauzuli ODNIESIENIE i zastąp macierz_tabetę na nazwę tabeli nadrzędnej i wspomnij o jej obcych klawiszach

Jak działa klucz obcy w SQLite

Aby zrozumieć działanie klawiszy zagranicznych, rozważmy przykład usługi kurierskiej i utworzyć dwa tabele, Customer_Details i Sipment_Detail, które mają następujące dane:

Szczegóły klienta

Identyfikator klienta Nazwa_ klienta Shipment_id
1 Jan 5612
2 Paweł 3467

szczegóły wysyłki

Shipment_id Status Z (miasto) Do (miasto)
5612 Dostarczony Londyn Manchester
3467 W trakcie Bristol Cardiff

W tabeli, Customer_Details, Customer_id jest kluczowym kluczem, a wysyłka jest kluczem zagranicznym. A w tabeli, shipment_details, shipment_id jest kluczem podstawowym.

Jak dodać obcy klucz do SQLite

Aby utworzyć tabelę, Customer_Details uruchamia następujące polecenie:

Utwórz tabelę Customer_Details (Klucz podstawowy Customer_ID Integer, Tekst_namiczny Not Null, Sipment_id Integer Not Null, Key Foreign (Sipment_ID) Referencje Sipment_Details (Sipment_id));

W powyższym poleceniu wspomnieliśmy o kluczu obcego i klucza podstawowym, a także zapoznaj się z tabelą, w której dostępny będzie klucz obcy. Po utworzeniu tabeli Customer_Details utworzymy tabelę shipment_details jako:

Utwórz tabelę Sipment_Details (Sipment_ID Integer Key Podstawowy, tekst statusu, miasto_from tekstu, miasto_to tekst);

Teraz, aby wstawić wartości w tabeli Customer_Details, użyj następującego polecenia:

Wstaw do Customer_Details (Customer_id, Customer_name, Sipment_id) Wartości (1, „John”, 5612), (2, „Paul”, 3467);

Widzimy, że wygenerował błąd „Błąd: ograniczenie klucza obcego nie powiodło się”, Ten błąd jest generowany, ponieważ odnosiliśmy się do wysyłki_doli, wysyłki_details, która nie ma jeszcze wartości. Aby więc usunąć ten błąd, najpierw musimy edytować dane w shipment_details, abyśmy odnosili się do klucza obcego. Aby wstawić dane w tabeli shipment_details, uruchom następujące polecenie:

Wstaw do wysyłki_details (wysyłka_id, status, miasto_from, miasto_to) wartości (5612, „dostarczony”, „London”, „Manchester”), (3467, „in_process”, „Bristol”, „cardiff”);

Aby wyświetlić tabelę, shipment_details, uruchom polecenie:

Wybierz * z wysyłki_details;

Teraz ponownie uruchom polecenie, aby wstawić wartości w Customer_Details za pomocą instrukcji:

Wstaw do Customer_Details (Customer_id, Customer_name, Sipment_id) Wartości (1, „John”, 5612), (2, „Paul”, 3467);

Polecenie pomyślnie wykonało bez generowania błędu „ograniczenia klucza obcego”. Aby wyświetlić tabelę, uruchom polecenie:

Wybierz * z Customer_Details;

Jakie są działania obce kluczowe ograniczenia

Istnieją pewne działania, które można wykonać na kluczu nadrzędnym, w wyniku czego odpowiada klucz dziecięcy. Ogólna składnia to:

Klucz zagraniczny (zagraniczny_key_column)
Odniesienia do pary rentownego (pary_key_column)
Na aktualizacji
Na usunięciu;

Wyjaśnienie tej składni to:

  • Napisz klauzulę Klucz obcy i zastąp „coreig_key_column” na nazwę swojego obcego klucza
  • Wymień „Parent_Table” na nazwę tabeli nadrzędnej, a także „Parent_Key_Columns” na nazwę klucza nadrzędnego
  • Napisz klauzulę „na aktualizacji” i „On Delete” i zastąp „” na działanie, które chcesz wykonać

SQLite obsługuje działania, które są wyjaśnione w tabeli:

Działanie Opis
Zero Po usunięciu klawisza nadrzędnego kolumna klucza dziecka ustawia się na wartości zerowe
Ustaw domyślnie Działa tak samo jak działanie zerowe, ale zamiast ustawiać wartości zerowe do kolumny klucza dziecięcego, ustawia wartość domyślną
Bez akcji Gdy wprowadzane są zmiany w kluczu nadrzędnym bazy danych nadrzędnych, w kluczu dziecięcym nie wprowadza się żadnych zmian
Ograniczać Nie pozwala użytkownikowi dodawać lub usuwać wartości z klucza nadrzędnego
Kaskada Przechodzi zmiany wprowadzane w tabeli macierzystej do stołu dziecięcego

Wniosek

Relacyjne bazy danych są popularne pod względem funkcji dostarczania relacji między tabelami, SQLite, jednej z relacyjnych baz danych, obsługuje również tę funkcję. Relacje są ustanowione za pomocą kluczy, które są znane jako klucze obce i podstawowe. W SQLITe klawisz obcy powinien być włączony do używania. W tym artykule dowiedzieliśmy się, jakie są zagraniczne klucze w SQLite i jak działają. Omówiliśmy również działania ograniczeń klawiszy obcych poparte przez SQLite.