W tym artykule dowiemy się o ograniczeniach FOREIGN KEY i jak zdefiniować ograniczenie FOREIGN KEY w celu zbudowania relacji między dwiema tabelami.
W systemie zarządzania relacyjnymi bazami danych (RDBMS) KLUCZ OBCY to pole lub kilka pól, które są używane do budowania relacji między dwiema tabelami lub łączenia dwóch tabel.
- KLUCZ OBCY jest również znany jako klucz referencyjny w RDBMS
- Używając ograniczeń FOREIGN KEY między dwiema tabelami, definiujemy relację rodzic-dziecko między dwiema tabelami.
- To pole definiuje ograniczenia PRIMARY KEY w tabeli znanej jako tabela nadrzędna, podczas gdy to samo pole definiuje ograniczenia FOREIGN KEY w innej tabeli jest znane jako tabela podrzędna.
- W tabeli może znajdować się tylko jeden KLUCZ PODSTAWOWY, ale nie ma zdefiniowanego limitu KLUCZY OBCEJ. Na stole możemy mieć jeden lub więcej kluczy OBCYCH.
- Możemy zdefiniować ograniczenia FOREIGN KEY podczas tworzenia tabeli lub zdefiniować ograniczenia FOREIGN KEY na już istniejącej tabeli.
Weźmy przykład, aby zrozumieć i poznać ograniczenia dotyczące KLUCZY OBCEGO.
Przykład:
Tutaj mamy dwie tabele, jedna to tabela Kurs, a druga to tabela Uczeń:
Studenci wybierają kursy. Poniższy przykład ograniczeń KLUCZA OBCEGO jest zdefiniowany w jednym polu.
Stół numer jeden:stół ucznia
| Identyfikator studenta | Imię | Nazwisko | Identyfikator adresu e-mail | Miasto |
| 101 | Kareena | Powiedział | przykład@sqldat.com | Hyderabad |
| 102 | Anmol | Temani | przykład@sqldat.com | Jalgaon |
| 103 | Harszałek | Patel | przykład@sqldat.com | Bombaj |
| 104 | Sakshi | Kaptur | przykład@sqldat.com | Pune |
| 105 | Pewnie | Kohli | przykład@sqldat.com | Hyderabad |
Tabela numer dwa:Tabela kursów
| Identyfikator kursu | Nazwa_kursu | Identyfikator studenta |
| C101 | Jawa | 101 |
| C102 | SQL | 102 |
| C103 | SOA | Numer |
| C104 | SAP | 104 |
| C105 | MuleSoft | 103 |
| C101 | Jawa | 105 |
W tabeli Student pole Student_Id jest KLUCZEM PODSTAWOWYM, a w tabeli Kurs Student_Id jest KLUCZEM OBCYM.
FOREIGN KEY ograniczenie zapobiega wstawianiu nieprawidłowych danych do kolumny klucza obcego, ponieważ musi to być jedna z wartości zawartych w tabeli nadrzędnej.
Zdefiniuj ograniczenia KLUCZA OBCEGO w UTWÓRZ TABELĘ
Poniższy przykład definiuje KLUCZ OBCY w tabeli Kurs.
Najpierw utworzyliśmy tabelę Student z następującymi polami:
CREATE TABLE Student( Student_Id int NOT NULL, First_Name varchar(40) NOT NULL, Last_Name varchar(40) NOT NULL, Email_Id varchar(50), City varchar(20) NOT NULL, PRIMARY KEY(Student_Id));
Poniższy przykład pokazuje, jak zdefiniować ograniczenia KLUCZA OBCEGO w drugiej tabeli.
Kurs nazw tabel:
CREATE TABLE Course( Course_Id int NOT NULL, Course_Name varchar(40) NOT NULL, Student_Id int, FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id));
W tabeli Kurs nie zdefiniowaliśmy żadnego KLUCZA PODSTAWOWEGO. Po prostu zdefiniuj ograniczenia KLUCZA OBCEGO na identyfikatorze Student_Id.
Poniższy przykład ograniczeń KLUCZA OBCEGO jest zdefiniowany na wielu polach.
Załóżmy, że mamy trzy tabele, jedna to tabela Package, druga to tabela Data, a trzecia to tabela Talk_time:
Tabela 1:Pakiet:
| Identyfikator pakietu | Identyfikator danych | Talktime_Id |
| P1001 | D1003 | T1001 |
| P1002 | D1001 | T1002 |
| P1003 | D1002 | T1003 |
| P1004 | D1003 | T1004 |
| P1005 | D1004 | T1005 |
Tabela 2:Dane:
| Identyfikator danych | Limit_danych | Cena_danych |
| D1001 | 5 | 120 |
| D1002 | 3 | 75 |
| D1003 | 6 | 150 |
| D1004 | 10 | 240 |
| D1005 | 15 | 320 |
Tabela 3:Czas_rozmowy:
| Talk_Time_Id | Talk_Time _Limit | Talk_Time _Cena |
| T1001 | 120 | 130 |
| T1002 | 70 | 105 |
| T1003 | 60 | 90 |
| T1004 | 200 | 220 |
| T1005 | 150 | 170 |
W tabeli Talk_Time Talk_Time_Id jest KLUCZEM PODSTAWOWYM.
W tabeli Dane Data_Id jest KLUCZEM PODSTAWOWYM.
Natomiast w tabeli Package Talk_Time_Id i Data_Id są kluczami OBCYMI
Tabela numer jeden:Dane:
CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));
Tabela numer dwa:Czas_rozmowy:
CREATE TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));
Tabela numer trzy:Pakiet:
CREATE TABLE Package(Package_Id varchar(5) NOT NULL, Data_Id varchar(5), Talk_Time_Id varchar(5), FOREIGN KEY(Data_Id) REFERENCES Data(Data_Id), FOREIGN KEY(Talk_Time_Id) REFERENCES Talk_Time(Talk_Time_Id));
Ograniczenia KLUCZA OBCEGO przy użyciu ALTER TABLE:
Załóżmy, że utworzyliśmy już tabelę i chcemy zdefiniować ograniczenia KLUCZA OBCEGO w tym polu. W takim przypadku użyjemy zapytania ALTER TABLE, aby dodać ograniczenia FOREIGN KEY.
Następujące zapytanie służy do dodawania ograniczeń FOREIGN KEY w polu Student_Id.
ALTER TABLE Course ADD FOREIGN KEY(Student_Id) REFERENCES Student(Student_Id);
Słowo kluczowe ADD jest używane po nazwie tabeli, aby dodać ograniczenia FOREIGN KEY do już istniejącej tabeli.
UPUŚĆ ograniczenie klucza obcego z tabeli
Użyj następującego zapytania, aby usunąć ograniczenie FOREIGN KEY z tabeli.
ALTER TABLE Course DROP FOREIGN KEY course_ibfk_1;
Słowo kluczowe Drop służy do usuwania ograniczeń FOREIGN KEY z pola Student_Id.
course_ibfk_1 to nazwa ograniczenia klucza obcego.
Możemy mieć wartości null w polu ograniczeń FOREIGN KEY. Możemy mieć zduplikowane wartości w polu ograniczeń FOREIGN KEY.