Ako vytvoriť zahraničné klávesy v Microsoft SQL Server

Jedným z najdôležitejších konceptov v databázach je vytváranie vzťahov medzi databázovými tabuľkami. Tieto vzťahy poskytujú mechanizmus na prepojenie údajov uložených vo viacerých tabuľkách a ich efektívne vyhľadávanie. Ak chcete vytvoriť prepojenie medzi dvoma tabuľkami, musíte zadať cudzí kľúč v jednej tabuľke, ktorá odkazuje na stĺpec v inej tabuľke.

Databázové tabuľky a vzťahy

Možno už viete, že databázy sú jednoducho sériou tabuliek , podobne ako tie, ktoré už môžete použiť v tabuľkovom programe , napríklad v programe Microsoft Excel. V skutočnosti môžete dokonca previesť tabuľku programu Excel do databázy. Kde sa databázy odlišujú od tabuľkových procesov, je to však, keď ide o budovanie silných vzťahov medzi tabuľkami.

Zvážte napríklad databázu, ktorú spoločnosť používa na sledovanie informácií o ľudských zdrojoch. Táto databáza môže obsahovať tabuľku s názvom Zamestnanci, ktorá obsahuje nasledujúce informácie pre každého člena zamestnancov spoločnosti:

V tomto príklade je ID zamestnanca jedinečne generované celé číslo priradené každému zamestnancovi pri pridaní do databázy. ID pozície je kód práce, ktorý sa používa na označenie postavenia zamestnanca v spoločnosti. V tejto schéme zamestnanec môže mať len jednu pozíciu, ale viacerí (alebo žiadni) zamestnanci môžu obsadiť každú pozíciu. Môžete mať napríklad stovky zamestnancov s pozíciou "Pokladník".

Databáza môže obsahovať aj tabuľku s názvom Pozície s nasledujúcimi ďalšími informáciami o každej pozícii:

Políčko Position Position v tejto tabuľke je podobné pole Employee ID v tabuľke Zamestnanci - ide o jedinečne generované celé číslo, ktoré sa vytvorí pri pridávaní pozície do databázy.

Keď pôjdeme vytiahnuť zoznam zamestnancov z databázy, bolo by prirodzené vyžadovať meno každého človeka a jeho názov. Tieto informácie sú však uložené vo viacerých databázových tabuľkách, takže ich možno získať iba pomocou dotazu JOIN, ktorý vyžaduje existujúci vzťah medzi tabuľkami.

Keď sa pozriete na štruktúru tabuliek, pole definujúce vzťah je pravdepodobne zrejmé - pole Position Position. Každý zamestnanec môže mať iba jednu pozíciu a táto pozícia sa identifikuje tak, že do pozície tabuľky pozícií bude zahrnuté ID pozície. Okrem toho, že je primárnym kľúčom pre tabuľku pozícií, v tomto príklade je políčko Position Position tiež cudzí kľúč z tabuľky Employees do tabuľky Positions. Databáza potom môže použiť toto pole na korelovanie informácií z viacerých tabuliek a zabezpečiť, aby všetky zmeny alebo doplnenia do databázy naďalej presadzovali referenčnú integritu .

Po identifikácii cudzieho kľúča môžete pokračovať a vytiahnuť požadované informácie z databázy pomocou nasledujúceho dotazu:

SELECT FirstName, LastName, Title FROM Zamestnanci INNER JOIN Pozície ON Employees.PositionID = Positions.PositionID

Vytváranie cudzích kľúčov v systéme SQL Server

Z technického hľadiska nemusíte explicitne definovať vzťah, aby ste mohli vykonať dopyty, ako je uvedené vyššie. Ak však explicitne definujete vzťah pomocou obmedzenia cudzieho kľúča, databáza bude môcť pre vás vykonávať niektoré práce v domácnosti:

Tu je postup vytvorenia cudzieho kľúča v systéme SQL Server:

ALTER TABLE Zamestnanci PRIDAJTE ZAHRANIČNÉ KĽÚČ (PositionID) REFERENCIE Pozície (PositionID)

Môžete tiež vytvoriť cudzí kľúč pri vytváraní tabuľky pridaním klauzuly:

ZAHRANIČNÉ KĽÚČOVÉ REFERENCIE Pozície (PositionID)

na koniec definície stĺpca pre stĺpec cudzieho kľúča.