Co je cizí klíč?
Databáze se skládají z tabulek, v nichž jsou uložena data nebo informace. Cizí klíč je mechanismus v relační databázi, který umožňuje přidružení těchto tabulek nebo vzájemné vztahy tabulek. Existují jedinečné vlastnosti, které musí mít cizí klíč. Musí to být sloupec nebo skupina sloupců v tabulce, jejichž hodnoty navazují vztah s hodnotami v jiné tabulce ve stejné databázi.
Cizí klíč zaručuje, že řádky v jedné tabulce odpovídají řádkům v jiné tabulce, a tím navazují vztahy v celé databázi nebo odkazy. Tabulka obsahující cizí klíč je „podřízený“ a druhá tabulka je „nadřazený“. Je možné, že hodnota cizího klíče je nulová nebo prázdná a pro to, aby skutečně odkazovala nebo se vztahovala k tomu, co je známé jako primární klíč tabulky, ve které se nachází. Toto je známo jako odkazování na sebe.
Předtím, než se pokusíme plně porozumět konceptu cizích klíčů, musíme dobře rozumět tomu, co je primární klíč. Pokud například v databázi existují dvě tabulky, ve kterých jsou uloženy informace o publikovaných knihách pro web, který knihy prodává, jedna tabulka může být tabulka vydavatelů a druhá tabulka knih. Tabulka vydavatelů se může skládat ze dvou sloupců, primárního klíče, který je vždy jedinečný pro každý záznam, a sloupce názvu vydavatele. Tabulku knih by tvořily minimálně tři sloupce, které by obsahovaly primární klíč nebo jedinečný identifikátor pro každou knihu, názvy knih a sloupec, přes který by se navázal vztah s tabulkou vydavatelů. Ten sloupec bude cizí klíč.
Primární klíč pro tabulku vydavatelů by mohl být něco jako „pub_id“ s hodnotami: P01, P02, P03 atd. Vztah by se vytvořil s tabulkou knih, pokud by obsahoval sloupec pub_id se stejnými hodnotami. To by byl cizí klíč, který by vztahoval tuto podřízenou tabulku zpět na její nadřazenou - tabulku vydavatelů.
Cizí klíč však může mít jiný název sloupce než nadřazený klíč, na který odkazuje. Správné porozumění fungování primárních a cizích klíčů je nezbytné pro zachování referenční integrity. Velmi velké databáze, které se skládají z mnoha tabulek nebo které obsahují propojovací tabulku, představují více než jeden typ vztahu, což může komplikovat práci s cizími klíči.