Jak korzystać z ograniczeń kluczy obcego MySQL

Jak korzystać z ograniczeń kluczy obcego MySQL
Ograniczenie klucza obcego służy do nawiązania relacji między dwoma tabelami w bazie danych MySQL. Jest to bardzo ważna funkcja MySQL, aby ustawić różne rodzaje ograniczeń na powiązanych tabelach. Aby zdefiniować dowolne ograniczenie klucza obcego dla dowolnej tabeli, musisz użyć kluczowego klucza innej tabeli. Klucz podstawowy jest unikalnym kluczem do zidentyfikowania konkretnego wiersza w tabeli, a gdy ten klucz podstawowy jest używany do innej tabeli, aby wykonać relację jeden do jednego lub jednego do wielu lub wielu do wielu nazywa się kluczowym kluczem. Funkcje klawiszy obcych i sposób, w jaki klawisze mogą być używane w tabelach MySQL, pokazano w tym artykule.

Cechy ograniczeń kluczy obcych:

Niektóre ważne cechy ograniczenia klucza obcego wyjaśniono poniżej.

  • Typ danych klucza obcego używanego w tabeli dziecięcej musi być taki sam z typem danych klucza podstawowego używanego w tabeli nadrzędnej w celu odniesienia klucza obcego.
  • Każda kolumna indeksu lub wiele kolumn można nazwać kluczem obce tylko dla tabeli InnOnDB.
  • Referencje uprawnienia lub przynajmniej jedno z przywilejów Wybierz, wstaw, aktualizuj i usuń są wymagane do utworzenia klucza obcego.
  • Klucz obcy można stworzyć na dwa sposoby. Jeden za pomocą instrukcji Utwórz, a drugi za pomocą instrukcji alter.

Warunek wstępny:

Przed utworzeniem ograniczenia klucza obcego musisz utworzyć bazę danych i tabelę nadrzędną z kluczem podstawowym. Załóżmy, że nazwa bazy danych to 'biblioteka„I zawiera dwa tabele nadrzędne”książki' I 'pożyczający'. Nawiązać połączenie z serwerem MySQL za pomocą Mysql Klient i uruchom następujące instrukcje SQL, aby utworzyć bazę danych i tabele.

Utwórz bibliotekę bazy danych;
Użyj biblioteki;
Utwórz książki stołowe (
id int not null auto_increment,
tytuł varchar (50) nie null,
Autor Varchar (50) nie null,
Wydawca Varchar (50) nie null,
Klucz podstawowy (id)
) Silnik = innodb;
Utwórz pożyczkobiorców tabeli (
id varchar (50) nie null,
Nazwa varchar (50) nie null,
Adres varchar (50) nie null,
e -mail varchar (50) nie null,
Klucz podstawowy (id)
) Silnik = innodb;

Zdefiniuj ograniczenie klucza obcego za pomocą instrukcji Utwórz

Utwórz tabelę o nazwie 'book_borrow_info„Z ograniczeniami kluczowymi za obcokrajowców poprzez wykonanie następującego stwierdzenia. Tutaj book_id pole jest Klucz obcy dla tej tabeli i każda wartość tego pola musi istnieć w ID pole książki tabela. książki jest tabelą nadrzędną i book_borrow_info jest stołem dziecięcym. Dwa ograniczenia są również ustalane z kluczem obcego tutaj. To są Usuń kaskadę I Zaktualizuj kaskadę. Oznacza to, że jeśli jakikolwiek klucz podstawowy usunie lub zaktualizuje z tabeli nadrzędnej, to odpowiednie rekordy związane z tabelą dziecięcą powiązaną z klawiszem obcego zostaną usunięte lub zostanie zaktualizowany klawisz obcy.

Utwórz tabelę book_borrow_info (
pożyczka_id varchar (50),
book_id int,
datę pożyczki_date nie null,
return_date data nie null,
Status varchar (15) nie null,
Indeks par_ind (book_id),
Klucz podstawowy (pożyczka_dem, pożyczka_date),
Klucz zagraniczny (book_id) Odwołuje się książki (id)
Na usunięciu kaskady
W aktualizacji kaskady
) Silnik = innodb;

Teraz uruchom następujące instrukcje SQL, aby wstawić niektóre rekordy w obu tabelach. Pierwsza instrukcja wstawka wstawię cztery rekordy do książki tabela. Cztery wartości ID pole książki Tabela będzie wynosić 1, 2, 3 i 4. Druga instrukcja wstawka wstawię cztery rekordy do book_borrow_info na podstawie ID wartość książki tabela.

Wstaw do wartości książek
(Null, „Kill a Mockingbird”, „Harper Lee”, „Grand Central Publishing”),
(Null, „Sto lat samotności”, „Garcia Marquez”, „Lutfi Ozkok”),
(NULL, „A FAIDETO DO INDII”, „FORSTER, E.M.', „BBC Hultton Picture Library”),
(Null, „Invisible Man”, „Ralph Ellison”, „Encyclopædia Britannica, Inc.');
Wstaw wartości Book_Borrow_Info
(„123490”, 1, „2020-02-15”, „2020-02-25”, „powrócił”),
(„157643”, 2, „2020-03-31”, „2020-03-10”, „oczekujący”),
(„174562”, 4, „2020-04-04”, „2020-04-24”, „pożyczony”),
(„146788”, 3, „2020-04-10”, „2020-01-20”, „pożyczony”);

Jeśli spróbujesz wstawić wartość w polu klucza obcego tabeli dziecięcej, która nie istnieje w polu klucza podstawowego tabeli nadrzędnej, MySQL wygeneruje błąd. Poniższa instrukcja SQL wygeneruje błąd, ponieważ tabela nadrzędna, książki nie zawiera żadnej wartości identyfikacyjnej 10.

Wstaw wartości Book_Borrow_Info
(„195684”, 10, „2020-04-15”, „2020-04-30”, „powrócił”);

Po wykonaniu następującej instrukcji Usuń, gdy czwarty rekord zostanie usunięty z książki Tabela, a następnie powiązane rekordy z book_borrow_info Tabela zostanie usunięta automatycznie dla ograniczenia klucza obcego.

Usuń z książek, w których id = 4;
Wybierz * z książek;
Wybierz * z book_borrow_info;

Zdefiniuj ograniczenie klucza obcego za pomocą instrukcji alter

Początkowo wstaw niektóre rekordy do pożyczkobiorcy tabela i ta tabela zostanie zdefiniowana jako tabela nadrzędna w następnej ZMIENIAĆ oświadczenie.

Wstaw do wartości pożyczkobiorców
(„123490”, „Patrick Wood”, '34 West Street Lancaster La14 9zh ', „[email protected] '),
(„157643”, „Ezra Martin”, '10 The Grove Birmingham B98 1EU ', „[email protected] '),
(„174562”, „John Innes Archie”, '55 Main Road Liverpool L2 3od ', „[email protected] '),
(„146788”, „Frederick Hanson”, '85 Highfield Road Shrewsbury Sy46 3me ', „[email protected] ');

Uruchom następujące ZMIENIAĆ Oświadczenie o ustaleniu innego ograniczenia kluczowego obcego dla book_borrow_info stół, aby nawiązać związek pożyczkobiorcy tabela. Tutaj, pożyczka_id jest zdefiniowany jako klucz obcy dla book_borrow_info tabela.

Alter Table Book_Borrow_info Dodaj ograniczenie FK_BORRERWER
Klucz zagraniczny (pożyczkobiorcy_dani) odniesienia (id) w Usuń kaskadę w zakresie aktualizacji ograniczającej;

Teraz wstaw rekord do book_borrow_info z ważnym pożyczka_id wartość, która istnieje ID pole pożyczkobiorcy tabela. 157643 Wartość istnieje w tabeli kredytobiorców, a następująca instrukcja wstawka zostanie pomyślnie wykonana.

Wstaw wartości Book_Borrow_Info
(„157643”, 1, „2020-03-10”, „2020-03-20”, „powrócił”);

Poniższa instrukcja wstawki wygeneruje komunikat o błędzie, ponieważ wartość identyfikatora 195680 nie istnieje w tabeli kredytobiorców.

Wstaw wartości Book_Borrow_Info
(„195680”, 1, „2020-04-15”, „2020-04-30”, „powrócił”);

Wniosek:

Prawidłowe zdefiniowanie ograniczeń kluczowych jest bardzo ważnym zadaniem do tworzenia relacyjnej bazy danych i odpowiednio zarządzać danymi między tabelami. Znajomość zastosowań ograniczeń kluczowych jest bardzo niezbędna dla projektantów bazy danych. Mam nadzieję, że ten artykuł pomoże nowym projektantom bazy danych w zrozumieniu pojęcia ograniczeń kluczowych obcych i odpowiednio zastosowanie ich w swoich zadaniach.