logo

Cizí klíč v DBMS

Cizí klíč se liší od superklíče, kandidátského klíče nebo primárního klíče, protože cizí klíč je ten, který se používá k propojení dvou tabulek nebo k vytvoření propojení mezi nimi.

Zde v této části probereme cizí klíč, jeho použití a podíváme se na několik příkladů, které nám pomohou porozumět práci a použití cizího klíče. Uvidíme také jeho praktickou implementaci na databázi, tedy vytvoření a odstranění cizího klíče na tabulce.

Co je cizí klíč

Cizí klíč je ten, který se používá k propojení dvou tabulek pomocí primárního klíče. To znamená, že sloupce jedné tabulky ukazují na atribut primárního klíče druhé tabulky. Dále to znamená, že pokud je nějaký atribut nastaven jako primární klíč, bude v jiné tabulce fungovat jako atribut cizího klíče. Ale měli byste vědět, že cizí klíč nemá nic společného s primárním klíčem.

Použití cizího klíče

Použití cizího klíče je jednoduše propojit atributy dvou tabulek dohromady pomocí atributu primárního klíče. Používá se tedy pro vytváření a udržování vztahu mezi těmito dvěma vztahy.

Příklad cizího klíče

Pojďme diskutovat o příkladu, abychom pochopili fungování cizího klíče.

převést int na řetězec c++

Zvažte dvě tabulky Student a oddělení s příslušnými atributy, jak je uvedeno v níže uvedené struktuře tabulky:

Cizí klíč v DBMS
Cizí klíč v DBMS

V tabulkách je jeden atribut, jak vidíte, společný, tzn Stud_Id , ale má pro obě tabulky jiná klíčová omezení. V tabulce Student je pole Stud_Id a primární klíč protože jednoznačně identifikuje všechna ostatní pole tabulky Student. Na druhou stranu, Stud_Id je a cizí klíč atribut pro tabulku Oddělení, protože funguje jako atribut primárního klíče pro tabulku Student. Znamená to, že jak tabulka Student, tak tabulka katedry jsou vzájemně propojeny díky atributu Stud_Id.

Na níže uvedeném obrázku si můžete prohlédnout následující strukturu vztahu mezi dvěma tabulkami.

Cizí klíč v DBMS

Poznámka: Referenční integrita v DBMS je vyvinuta z konceptu cizího klíče. Je jasné, že primární klíč je samostatně existující klíč a cizí klíč vždy odkazuje na primární klíč v nějaké jiné tabulce, ve které je tabulka obsahující primární klíč známá jako odkazovaná tabulka nebo nadřazená tabulka pro druhou tabulku, která má cizí klíč.

Vytvoření omezení cizího klíče

Na CREATE TABLE

Níže je syntaxe, která nás přiměje naučit se vytvářet cizí klíč v tabulce:

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

Tímto způsobem tedy můžeme nastavit cizí klíč pro tabulku v databázi MYSQL.

řetězce na celá čísla

V případě vytvoření cizího klíče pro tabulku na SQL nebo Oracle serveru bude fungovat následující syntaxe:

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

Na ALTER TABLE

Následuje syntaxe pro vytvoření omezení cizího klíče v ALTER TABLE:

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

Zahození cizího klíče

Chcete-li smazat cizí klíč, existuje níže popsaná syntaxe, kterou lze použít:

 ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment; 

Tímto způsobem tedy můžeme zahodit cizí klíč pomocí ALTER TABLE v databázi MYSQL.

když jinak když jinak když java

Bod k zapamatování

Když zahodíte cizí klíč, je třeba se postarat o integritu tabulek, které jsou připojeny přes cizí klíč. V případě, že provedete změny v jedné tabulce a narušíte integritu obou tabulek, může dojít k zobrazení určitých chyb v důsledku nesprávné konektivity mezi dvěma tabulkami.

Referenční akce

Existují některé akce, které jsou spojeny s akcemi provedenými držitelem tabulky cizího klíče:

1) Kaskáda

Když smažeme řádky v nadřazené tabulce (tj. ten, který drží primární klíč), smažou se také stejné sloupce v druhé tabulce (tj. ten, který drží cizí klíč). Akce je tedy známá jako Kaskáda .

2) Nastavte NULL

srovnání s javou

Taková referenční akce zachovává referenční integritu obou tabulek. Když manipulujeme/odstraňujeme odkazovaný řádek v nadřazené/odkazované tabulce, v podřízené tabulce (tabulka s cizím klíčem), hodnota takového odkazujícího řádku je nastavena jako NULL. Taková provedená referenční akce je známá jako Nastavte hodnotu NULL .

3) Nastavte VÝCHOZÍ

K takové akci dojde, když jsou aktualizovány hodnoty v odkazovaném řádku nadřazené tabulky nebo je řádek odstraněn, hodnoty v podřízené tabulce jsou nastaveny na výchozí hodnoty sloupce.

4) Omezit

Jedná se o omezení omezení, kdy hodnotu odkazovaného řádku v nadřazené tabulce nelze upravit nebo odstranit, pokud na ni neodkazuje cizí klíč v podřízené tabulce. Jde tedy o normální referenční akci cizího klíče.

5) Žádná akce

kolik mb v gb

Je to také omezení cizího klíče, ale je implementováno pouze po pokusu o úpravu nebo odstranění odkazovaného řádku nadřazené tabulky.

6) Spouštěče

Všechny tyto a další referenční akce jsou v zásadě implementovány jako spouštěče, kde jsou akce cizího klíče velmi podobné nebo téměř podobné spouštěčům definovaným uživatelem. V některých případech jsou však objednané referenční akce nahrazeny jejich ekvivalentními spouštěči definovanými uživatelem, aby bylo zajištěno správné provedení spouštěče.