Klucz zagraniczny PostgreSQL

Klucz zagraniczny PostgreSQL
Klucz obcy to jedna lub więcej kolumn o wartościach zależnych od klucza podstawowego. To ograniczenie służy do łączenia dwóch tabel. W PostgreSQL klucz obcy pomaga generować związek między tabelami, dzięki czemu jedna tabela jest tabelą nadrzędną, a drugą dzieckiem. Klucz obcy można utworzyć za pomocą:
  • Utwórz zapytanie tabeli
  • Zaktualizuj/zmień zapytanie

Składnia

[Nazwa ograniczenia] Klucz obcy (kolumny)
Odniesienia do macierzystego_tabla (kolumny)
[Po usunięciu akcji]
[W sprawie aktualizacji]

Tabela odniesienia to tabela nadrzędna. A kolumna dla klucza obcego jest kluczem podstawowym rodzica.

Klucz zagraniczny wprowadzający w oświadczeniu Utwórz

Jeśli chodzi o ograniczenia kluczowe obce, potrzebujemy dwóch tabel, aby zilustrować tę koncepcję. Zacznijmy od zdefiniowania tabeli „projektanta”, a drugi to „kategoria”. Oba tabele są tworzone za pomocą instrukcji Utwórz.

>> Utwórz projektanta tabeli (designer_id int wygenerowany zawsze jako tożsamość, Designer_name varchar (50) nie null, klucz podstawowy (designer_id));

W tabeli „Designer” projektant_id jest ustawiony jako klucz podstawowy. Teraz utwórz drugą tabelę.

>> Utwórz kategorię tabeli (kategoria_id Int zawsze wygenerowana jako tożsamość, projektant_id int, kategoria_id Int, kategoria_nazwa varchar (200) nie null, klucz podstawowy (kategoria_idłowa), ograniczenie FK_DESIGNER KLUCZ (Designer_id) Projektant (designer_id));

W tej tabeli kategoria_id jest ustawiona jako klucz podstawowy. Ponieważ oba te tabele mają przyłączyć się do ograniczenia klucza obcego. W tej tabeli tworzymy „projektant_id”. Tabela odniesienia jest wymieniona w tabeli, aby zapytanie można było łatwo wykonać, przeszukując tabelę.

Ograniczenie fk_designer
Klucz zagraniczny (Designer_ID)
Referencje Designer (designer_id));

Tabela projektanta to tabela nadrzędna, podczas gdy tabela „kategorii” to tabela dziecięca. Każdy projektant pracuje na zero lub większej liczbie kategorii sukienki, a jeden lub więcej projektantów rozważa każdą kategorię sukienki.

NOTATKA: Aby stworzyć obcy klucz ID jednej tabeli w drugiej tabeli, ważne jest, aby ten konkretny identyfikator jako klucz podstawowy w tabeli. W przeciwnym razie nie utworzy obcego klucza w drugiej tabeli. Błąd wystąpił podczas tworzenia klucza obcego.

BEZ AKCJI

Po utworzeniu tabel używamy do wprowadzania w nim wartości przez polecenie „Wstaw”.

>> Wstaw do Designer (Designer_name) Wartości („Ahmad Shah”), („Sajjad Hassan”);

Podobnie w przypadku drugiej tabeli, wprowadź wartości.

>> Wstaw do kategorii (Designer_id, Category_name) Wartości (1, „Frock”), (1, „Frock”), (2, „Suit”), (2, „Suit-1”);

W tabeli „kategorii” wartości zostaną wstawione w dwóch kolumnach, w tym nazwa kategorii i designer_id. Dodaliśmy ten sam numer dla identyfikatora i tej samej nazwy dla nazwy kategorii, aby spełnić warunek. Teraz zastosuj polecenie Usuń, aby udowodnić typ „bez akcji” klucza obcego. W tym poleceniu podaliśmy numer identyfikacyjny, aby usunąć określony wiersz z tabeli.

>> Usuń z projektanta, gdzie projektant_id = 1;

To zapytanie nie zostanie pomyślnie wykonane. Wyświetli komunikat o błędzie, jak wyświetli się w Snap, jak wspomniano powyżej. Ten błąd wynika z „braku działań”. PostgreSQL pokazuje naruszenie ograniczenia, ponieważ projektant_id = 1 dotyczy dwóch rzędów obecnych w tabeli.

Ustaw null jako opcję w klauzuli usuwania

Utwórz tabelę o nazwie „Pracownik”, który ma EMP_ID jako klucz podstawowy.

>> Utwórz tabelę pracownika (emo_id generowany zawsze jako tożsamość, emp_name varchar (50) nie null, klucz podstawowy (emp_id));

Po wykonaniu zapytania wyświetlany jest komunikat, który pokazuje, że nasze zapytanie jest pomyślnie wykonywane. Po utworzeniu tabeli pracowników utwórz swoją tabelę dziecięcą „informacje” za pomocą „emp_id” jako klucza obcego.

>> Utwórz informacje o tabeli (info_id int wygenerowane zawsze jako tożsamość, info_id int, emp_id int, info_name varchar (200) nie null, klucz podstawowy (info_id), ograniczenie fk_employee obcokrajowy klucz (emp_id) ;

Wykonaj zapytanie, a zobaczysz, że tabela jest tworzona. Podobnie jak instrukcja tabeli „Utwórz” używaną wcześniej, jest to samo. Tutaj dodaliśmy nieruchomość.

"Na usunięciu zestawu null". To działanie jest stosowane w klauzuli ON UDELET. Teraz musimy wypełnić tabele wartościami.

>> Wstaw do pracownika (emp_name) wartości („Sophia Smith”), („Rubi Williams”), („Victoria Gomex”); >> Wstaw do informacji (emp_id, info_name) wartości (1, „urzędnik”), (1, „menedżer”), (2, „menedżer”), (3, „urzędnik”);

Polecenie Delete składa się z klauzuli „gdzie” w celu zidentyfikowania identyfikatora do usunięcia z rzędu w tabeli pracownika.

>> Usuń z pracownika, gdzie emp_id = 2;

Odpowiednie dane zostaną usunięte podczas wykonywania zapytania. Po tym zapytaniu zobaczymy wynikowy stół.

>> Wybierz * z informacji;

Rzędy posiadające konkretne odniesienie w tabeli dziecięcej „Informacje” są ustawione na null, ponieważ użyliśmy akcji UDELET SETE SET w poleceniu przy tworzeniu tabeli.

Za pomocą polecenia Tabela Alter Table

W poprzednich przykładach widzieliśmy, jak zastosować ograniczenia w momencie tworzenia tabel. Co jeśli utworzyłeś tabele z ograniczeniami FK (klucz obcego), a później chcesz dodać ograniczenia? Oto rozwiązanie tego pytania. Najpierw utworzymy dwie tabele. Ale w momencie tworzenia tabeli nie ma potrzeby identyfikowania obcego klucza w drugiej tabeli, aby uczynić go jako dziecko.

>> Utwórz pielęgniarkę tabeli (pielęgniarka INT not null, pielęgniarka varchar (55) nie null, pielęgniarka varchar (55) nie null, klucz podstawowy (pielęgniarka)); >> Utwórz Table Clinic_id Int, Nurse_id Int, Clinic_Details Varchar (50) Not Null, Clinic_Type Varchar (50) nie null);

Ta tabela nie zawiera ograniczeń i odniesień do obcego itp. Po wstawieniu zaktualizujemy teraz tabelę, zezwalając na jej ograniczenia.

>> alter Table Clinic Dodaj ograniczenie FK_NURSE KEY ZAGRANY (Clinic_ID) Odniesienia do pielęgniarki (pielęgniarka) na usunięciu kaskady w sprawie aktualizacji ograniczającej;

Tabela będzie miała teraz obce klucz po zmianie.

Usuń ograniczenia z tabeli

W tym celu używamy polecenia alter. To polecenie usunie tylko ograniczenia z tabeli.

Jest to konieczne do usunięcia całej tabeli. Ale niemożliwe jest usunięcie lub upuszczenie takiego tabeli, która ma połączenie z drugą tabelą w formie obcego klucza. Najpierw usuwamy fk_constraint pierwszego utworzonego tabeli z drugiej. Rozważ tabelę „Projektant” i „Kategoria”.

>> Zmień ograniczenie kategorii tabeli FK_DESIGNER;

Po zobaczeniu, że zapytanie jest wykonywane. Teraz zastosuj polecenie upuść.

>> stół zrzutu, jeśli istnieje projektant;

Schemat reprezentuje obce klucze w tabelach. Z reprezentacji ERD zrobiliśmy snap, aby wyjaśnić dwuznaczność dotyczącą ograniczeń z obrazu; Możesz zobaczyć połączenia w tabelach, które stworzyliśmy w tym artykule.

Wniosek

„Klucz zagraniczny PostgreSQL” pokazuje relację łączącą dwie tabele. Pobieranie zapisu jednej tabeli poprzez powodowanie zmiany innej można wykonać tylko przez to ograniczenie. Relacja rodzic-dziecko jest wbudowana dzielenie się klawiszami. Ten klucz można wprowadzić przy tworzeniu lub aktualizacji tabeli. Obie metody są wyjaśnione w tym przewodniku. Przykłady te opisują znaczenie kluczy we wszystkich tabelach używanych w dowolnej bazie danych.