logo

Cudzí kľúč v DBMS

Cudzí kľúč sa líši od super kľúča, kandidátskeho kľúča alebo primárneho kľúča, pretože cudzí kľúč je ten, ktorý sa používa na prepojenie dvoch tabuliek alebo na vytvorenie prepojenia medzi nimi.

Tu, v tejto časti, rozoberieme cudzí kľúč, jeho použitie a pozrieme sa na niekoľko príkladov, ktoré nám pomôžu pochopiť fungovanie a použitie cudzieho kľúča. Uvidíme aj jeho praktickú implementáciu na databáze, teda vytvorenie a vymazanie cudzieho kľúča v tabuľke.

Čo je cudzí kľúč

Cudzí kľúč je ten, ktorý sa používa na prepojenie dvoch tabuliek cez primárny kľúč. Znamená to, že stĺpce jednej tabuľky ukazujú na atribút primárneho kľúča druhej tabuľky. Ďalej to znamená, že ak je nejaký atribút nastavený ako primárny kľúč, atribút bude fungovať v inej tabuľke ako atribút cudzieho kľúča. Ale mali by ste vedieť, že cudzí kľúč nemá nič spoločné s primárnym kľúčom.

Použitie cudzieho kľúča

Použitie cudzieho kľúča je jednoducho prepojiť atribúty dvoch tabuliek pomocou atribútu primárneho kľúča. Používa sa teda na vytváranie a udržiavanie vzťahu medzi týmito dvoma vzťahmi.

Príklad cudzieho kľúča

Poďme diskutovať o príklade na pochopenie fungovania cudzieho kľúča.

js načítať

Zvážte dve tabuľky Študent a oddelenie s príslušnými atribútmi, ako je uvedené v štruktúre tabuľky nižšie:

Cudzí kľúč v DBMS
Cudzí kľúč v DBMS

V tabuľkách je jeden atribút, ktorý vidíte, bežný, tj Stud_Id , ale má iné kľúčové obmedzenia pre obe tabuľky. V tabuľke Študent je pole Stud_Id a primárny kľúč pretože jedinečne identifikuje všetky ostatné polia tabuľky Študent. Na druhej strane, Stud_Id je a cudzí kľúč atribút pre tabuľku Katedra, pretože funguje ako atribút primárneho kľúča pre tabuľku Študent. Znamená to, že tabuľka Študent aj Tabuľka Katedry sú navzájom prepojené vďaka atribútu Stud_Id.

čo je export v linuxe

Na nižšie uvedenom obrázku si môžete pozrieť nasledujúcu štruktúru vzťahu medzi týmito dvoma tabuľkami.

Cudzí kľúč v DBMS

Poznámka: Referenčná integrita v DBMS je vyvinutá z konceptu cudzieho kľúča. Je jasné, že primárny kľúč je samotný existujúci kľúč a cudzí kľúč vždy odkazuje na primárny kľúč v nejakej inej tabuľke, v ktorej je tabuľka, ktorá obsahuje primárny kľúč, známa ako referenčná tabuľka alebo nadradená tabuľka pre druhú tabuľku, ktorá má cudzí kľúč.

Vytvorenie obmedzenia cudzieho kľúča

Na CREATE TABLE

Nižšie je syntax, vďaka ktorej sa naučíme vytváranie cudzieho kľúča v tabuľke:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) ); 

Takže týmto spôsobom môžeme nastaviť cudzí kľúč pre tabuľku v databáze MYSQL.

V prípade vytvorenia cudzieho kľúča pre tabuľku na serveri SQL alebo Oracle bude fungovať nasledujúca syntax:

konvertovať dátum reťazca
 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) ); 

Na ALTER TABLE

Nasleduje syntax na vytvorenie obmedzenia cudzieho kľúča v ALTER TABLE:

 ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id); 

Zahodenie cudzieho kľúča

Na vymazanie cudzieho kľúča je možné použiť nižšie opísanú syntax:

 ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment; 

Takže týmto spôsobom môžeme zahodiť cudzí kľúč pomocou ALTER TABLE v databáze MYSQL.

Bod na zapamätanie

Keď zahodíte cudzí kľúč, musíte sa postarať o integritu tabuliek, ktoré sú pripojené cez cudzí kľúč. V prípade, že vykonáte zmeny v jednej tabuľke a narušíte integritu oboch tabuliek, môže sa zobraziť určité chyby v dôsledku nesprávneho prepojenia medzi týmito dvoma tabuľkami.

Referenčné akcie

Existuje niekoľko akcií, ktoré súvisia s akciami vykonanými držiteľom tabuľky cudzieho kľúča:

1) Kaskáda

Keď vymažeme riadky v nadradenej tabuľke (t. j. ten, ktorý obsahuje primárny kľúč), vymažú sa aj rovnaké stĺpce v druhej tabuľke (t. j. ten, ktorý obsahuje cudzí kľúč). Akcia je teda známa ako Cascade .

2) Nastavte NULL

Takáto referenčná akcia zachováva referenčnú integritu oboch tabuliek. Keď manipulujeme/odstraňujeme odkazovaný riadok v nadradenej/odkazovanej tabuľke, v podradenej tabuľke (tabuľka s cudzím kľúčom), hodnota takéhoto odkazujúceho riadka je nastavená ako NULL. Takáto referenčná akcia je známa ako Nastavte hodnotu NULL .

reťazec v poli c

3) Nastavte DEFAULT

Takáto akcia sa uskutoční, keď sa aktualizujú hodnoty v odkazovanom riadku nadradenej tabuľky alebo sa riadok vymaže, hodnoty v podradenej tabuľke sa nastavia na predvolené hodnoty stĺpca.

mvc java

4) Obmedziť

Ide o obmedzenie, kde hodnotu odkazovaného riadka v nadradenej tabuľke nemožno upraviť alebo odstrániť, pokiaľ na ňu neodkazuje cudzí kľúč v podradenej tabuľke. Ide teda o normálnu referenčnú akciu cudzieho kľúča.

5) Žiadna akcia

Je to tiež obmedzenie cudzieho kľúča, ale implementuje sa až po pokuse o úpravu alebo vymazanie odkazovaného riadka nadradenej tabuľky.

6) Spúšťače

Všetky tieto a ďalšie referenčné akcie sú v podstate implementované ako spúšťače, kde sú akcie cudzieho kľúča veľmi podobné alebo takmer podobné spúšťačom definovaným používateľom. V niektorých prípadoch sú však objednané referenčné akcie nahradené ich ekvivalentnými spúšťačmi definovanými používateľom, aby sa zabezpečilo správne vykonanie spúšťača.