V tomto článku se dozvíme o omezeních FOREIGN KEY a jak definovat omezení FOREIGN KEY pro vytvoření vztahu mezi dvěma tabulkami.
V systému správy relačních databází (RDBMS) je CIZÍ KLÍČ pole nebo skupina polí, která se používají k vytvoření vztahu mezi dvěma tabulkami nebo ke spojení dvou tabulek.
- CIZI KLÍČ je v RDBMS také známý jako referenční klíč
- Pomocí omezení FOREIGN KEY mezi dvěma tabulkami definujeme vztah rodič-potomek mezi dvěma tabulkami.
- Pole definuje omezení PRIMARY KEY v tabulce známé jako nadřazená tabulka, zatímco stejné pole definuje omezení FOREIGN KEY v jiné tabulce, známé jako podřízená tabulka.
- V tabulce může být pouze jeden PRIMÁRNÍ KLÍČ, ale pro CIZÍ KLÍČ není definován žádný limit. Na stole můžeme mít jeden nebo více CIZÍCH KLÍČŮ.
- Můžeme definovat omezení FOREIGN KEY při vytváření tabulky nebo definovat omezení FOREIGN KEY na již existující tabulce.
Vezměme si příklad, abychom pochopili a dozvěděli se o omezeních ZAHRANIČNÍCH KLÍČŮ.
Příklad:
Zde máme dvě tabulky, jedna je tabulka kurzů a druhá je tabulka studentů:
Studenti si vybírají kurzy. Následující příklad omezení FOREIGN KEY je definován v jednom poli.
Stůl číslo jedna:Studentský stůl
ID_studenta | Jméno | Příjmení | Email_Id | Město |
101 | Kareena | Sayyed | [email protected] | Hyderabad |
102 | Anmol | Temani | [email protected] | Jalgaon |
103 | Haršál | Patel | [email protected] | Bombaj |
104 | Sakshi | Kapotuce | [email protected] | Pune |
105 | Suresh | Kohli | [email protected] | Hyderabad |
Tabulka číslo dvě:Tabulka kurzů
Id_kurzu | Název_kurzu | ID_studenta |
C101 | Java | 101 |
C102 | SQL | 102 |
C103 | SOA | Nulové |
C104 | SAP | 104 |
C105 | MuleSoft | 103 |
C101 | Java | 105 |
V tabulce Student je pole Student_Id PRIMÁRNÍ KLÍČ a v tabulce Kurz je ID studenta CIZÍ KLÍČ.
FOREIGN KEY
omezení brání vložení neplatných dat do sloupce cizího klíče, protože to musí být jedna z hodnot obsažených v nadřazené tabulce.
Definujte omezení FOREIGN KEY na CREATE TABLE
Následující příklad definuje CIZÍ KLÍČ v tabulce Kurz.
Nejprve jsme vytvořili tabulku Student s následujícími poli:
VYTVOŘIT TABULKU 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));Následující příklad ukazuje, jak definovat omezení FOREIGN KEY na druhé tabulce.
Table Name Course:
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));V tabulce kurzů jsme nedefinovali žádný PRIMÁRNÍ KLÍČ. Stačí definovat omezení FOREIGN KEY pro Student_Id.
Následující příklad omezení FOREIGN KEY je definován pro více polí.
Předpokládejme, že máme tři tabulky, jedna je tabulka Package, druhá je tabulka Data a třetí je tabulka Talk_time:
Tabulka 1:Balíček:
Package_Id | Data_Id | Talktime_Id |
P1001 | D1003 | T1001 |
P1002 | D1001 | T1002 |
P1003 | D1002 | T1003 |
P1004 | D1003 | T1004 |
P1005 | D1004 | T1005 |
Tabulka 2:Údaje:
Data_Id | Data_Limit | Cena_dat |
D1001 | 5 | 120 |
D1002 | 3 | 75 |
D1003 | 6 | 150 |
D1004 | 10 | 240 |
D1005 | 15 | 320 |
Tabulka 3:Doba hovoru:
Talk_Time_Id | Talk_Time _Limit | Talk_Time _Price |
T1001 | 120 | 130 |
T1002 | 70 | 105 |
T1003 | 60 | 90 |
T1004 | 200 | 220 |
T1005 | 150 | 170 |
V tabulce Talk_Time je Talk_Time_Id PRIMÁRNÍ KLÍČ.
V tabulce Data je Data_Id PRIMÁRNÍ KLÍČ.
Zatímco v tabulce Package jsou Talk_Time_Id a Data_Id CIZÍ klíče
Tabulka číslo jedna:Údaje:
CREATE TABLE Data(Data_Id varchar(5) NOT NULL, Data_Limit int, Data_Price int, PRIMARY KEY(Data_Id));
Tabulka číslo dvě:Talk_Time:
CREATE TABLE Talk_Time(Talk_Time_Id varchar(5) NOT NULL, Talk_Time_Limit int, Talk_Time_Price int , PRIMARY KEY(Talk_Time_Id));
Tabulka číslo tři:Balíček:
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;
Omezení CIZÍHO KLÍČE pomocí ALTER TABLE:
Předpokládejme, že jsme již vytvořili tabulku a chceme definovat omezení FOREIGN KEY pro pole. V takovém případě použijeme dotaz ALTER TABLE k přidání omezení FOREIGN KEY.
Následující dotaz se používá k přidání omezení FOREIGN KEY do pole Student_Id.
ALTER TABLE Kurz PŘIDAT CIZÍ KLÍČ(Student_Id) REFERENCE Student(Student_Id);
ADD Keyword se používá za názvem tabulky k přidání omezení FOREIGN KEY do již existující tabulky.
PUSTIT omezení CIZÍ KLÍČ z tabulky
Pomocí následujícího dotazu odstraňte z tabulky omezení FOREIGN KEY.
Kurz ALTER TABLE DROP FOREIGN KEY kurz_ibfk_1;
Klíčové slovo Drop se používá k odstranění omezení FOREIGN KEY z pole Student_Id.
course_ibfk_1 je název omezení cizího klíče.
V poli omezení FOREIGN KEY můžeme mít hodnoty null. Můžeme mít duplicitní hodnoty v poli omezení FOREIGN KEY.