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ł[email protected] | Hyderabad |
102 | Anmol | Temani | przykł[email protected] | Jalgaon |
103 | Harszałek | Patel | przykł[email protected] | Bombaj |
104 | Sakshi | Kaptur | przykł[email protected] | Pune |
105 | Pewnie | Kohli | przykł[email protected] | 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.