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_nameWyjaśnienie tego jest:
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)Wyjaśnienie tej składni to:
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.