Jak vytvořit cizí klíče v Microsoft SQL Server

Jedním z nejdůležitějších pojmů v databázích je vytváření vztahů mezi databázovými tabulkami. Tyto vztahy poskytují mechanismus pro propojení dat uložených ve více tabulkách a jejich získávání efektivním způsobem. Chcete-li vytvořit propojení mezi dvěma tabulkami, musíte zadat cizí klíč v jedné tabulce, která odkazuje na sloupec v jiné tabulce.

Databázové tabulky a vztahy

Možná už víte, že databáze jsou prostě série tabulek , podobně jako v tabulce , například v aplikaci Microsoft Excel. Ve skutečnosti můžete dokonce převést tabulku aplikace Excel do databáze. Kde se databáze liší od tabulek, je to však, pokud jde o budování silných vztahů mezi tabulkami.

Zvažte například databázi používanou společností ke sledování informací o lidských zdrojích. Tato databáze může obsahovat tabulku s názvem Zaměstnanci, která obsahuje následující informace pro každého člena zaměstnanců společnosti:

V tomto příkladu ID zaměstnance je jednoznačně generované celé číslo, které je přiřazeno každému zaměstnanci při přidání do databáze. ID pozice je kód práce, který slouží k označení pozice zaměstnance ve společnosti. V tomto schématu má zaměstnanec pouze jednu pozici, ale více zaměstnanců (nebo ne) může obsadit každou pozici. Můžete například mít stovky zaměstnanců s pozicí "Pokladna".

Databáze může také obsahovat tabulku nazvanou Pozice s následujícími doplňujícími informacemi o každé pozici:

Políčko Position Position v této tabulce je podobné pole Employee ID v tabulce Zaměstnanci - je jedinečně generované celé číslo, které se vytvoří při přidání pozice do databáze.

Když půjdeme vytáhnout seznam zaměstnanců z databáze, bylo by přirozené vyžadovat jméno každého člověka a jeho titul. Tato informace je však uložena ve více databázových tabulkách, takže ji lze načíst pouze pomocí dotazu JOIN, který vyžaduje existující vztah mezi tabulkami.

Když se podíváte na strukturu tabulek, pole definující vztah je pravděpodobně zřejmé - pole ID pozice. Každý zaměstnanec může mít pouze jednu pozici a tato pozice je identifikována tím, že obsahuje ID pozice z příslušné položky tabulky pozic. Vedle primárního klíče pro tabulku pozic, v tomto příkladu je pole Position Position také cizí klíč z tabulky Employees do tabulky Positions. Databáze pak může použít toto pole pro korelaci informací z více tabulek a zajistit, aby veškeré změny nebo doplňky do databáze nadále vynucovaly referenční integritu .

Jakmile identifikujete cizí klíč, můžete pokračovat a vytáhnout požadované informace z databáze pomocí následujícího dotazu:

SELECT FirstName, LastName, Title FROM Zaměstnanci INNER JOIN Positions ON Employees.PositionID = Positions.PositionID

Vytvoření cizích klíčů v serveru SQL

Technicky není nutné explicitně definovat vztah, aby bylo možné provádět dotazy, jako je výše uvedené. Pokud však explicitně definujete vztah pomocí omezení cizího klíče, bude databáze schopna provést některé úklidové práce pro vás:

Zde je návod, jak vytvořit cizí klíč v serveru SQL Server:

ALTER TABLE Zaměstnanci PŘIDAT ZAHRANIČNÍ KEY (PositionID) REFERENCE Pozice (PositionID)

Můžete také vytvořit cizí klíč při vytvoření tabulky přidáním klauzule:

ZAHRANIČNÍ KEY REFERENCE Pozice (PositionID)

do konce definice sloupce pro sloupec cizího klíče.