A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Cizí klíč (FOREIGN KEY) definuje v prostředí relačních databází vztah mezi dvěma tabulkami, a to tak, že hodnota v určeném sloupci jedné tabulky musí existovat v jiném (primárním) klíči. Tím je definováno integritní omezení, které do položky v tabulce umožní vložit jen povolené hodnoty. Je tím vlastně vytvořeno spojení jednoho nebo více sloupců se sloupcem nebo více sloupci jiné („cizí“) tabulky. Tomu se též říká reference nebo odkaz.
Cizí klíč umožňuje definovat akce, které mají nastat při pokusu o změnu nebo mazání záznamů v cizí tabulce. Například po smazání záznamu z cizí tabulky budou ve zdrojové tabulce řádky s odpovídající hodnotou cizího klíče taktéž smazány nebo budou jejich odkazy nastaveny na určitou (neutrální) hodnotu nebo se smazání řádků v cizí tabulce zabrání. Omezení cizích klíčů tak představuje mechanismus pro udržení referenční integrity databáze.
Syntaxe
název omezení FOREIGN KEY
název klíče (název sloupce tabulky nebo jejich seznam oddělený čárkami)
REFERENCES jméno_tabulky (název sloupce nebo jejich seznam oddělený čárkami)
ON DELETE akce
ON UPDATE akce
Definice cizího klíče platí jen v jednom směru – často se pro účely lepší představy „cizí“ tabulce říká rodičovská tabulka a tabulce, v níž se aplikují změny v závislosti na nastavení cizího klíče, dceřiná tabulka.
Akceeditovat | editovat zdroj
Jako akce může být:
- CASCADE – pro klauzuli ON UPDATE se v dceřiné tabulce adekvátně změní odkazy na cizí klíč; v případě ON DELETE se záznamy odkazující na smazaný klíč smažou také. Většina vyspělejších databázových systémů umožňuje tuto akci aplikovat zřetězeně (pokud je nastaveno, že dceřiná tabulka je z hlediska cizího klíče současně rodičovskou tabulkou pro tabulku jinou atd.).
- SET DEFAULT – při změně nebo smazání rodičovského klíče se reference v dceřiné tabulce nastaví na hodnotu, kterou má definovanou jako výchozí
- SET NULL – jako SET DEFAULT, kde výchozí hodnotou je hodnota NULL
- RESTRICT – pokud v dceřiné tabulce existují záznamy odkazující na cizí klíč, pak odpovídající záznam v rodičovské tabulce nepůjde změnit nebo smazat (SŘBD tomu zabrání)
- NO ACTION – v konečném efektu stejné jako RESTRICT; rozdíly interpretace se liší podle jednotlivých databázových systémů: v některých akce NO ACTION na rozdíl od RESTRICT nehodí chybovou hlášku; v jiných implementacích se tyto dvě akce liší v „opožděnosti“, s kterou databázový systém cizí klíče kontroluje. Např. v případě MySQL se kontrola provádí implicitně, pokud není vypnuta direktivou SET FOREIGN_KEY_CHECKS = 0;.
Příkladeditovat | editovat zdroj
V databázi spolku přátel psů máme následující tabulky:
osoby
se sloupciosoba_id
ajméno
psi
se sloupcipes_id
,majitel
arasa
Aby byla data v databázi korektní, je třeba, aby každý záznam psa měl uvedeného platného majitele. Proto označíme v tabulce psi
sloupec majitel
jako cizí klíč, vztažený k sloupci osoba_id
v tabulce osoby
. Když je poté přidán záznam pro psa, databázový engine bude vyžadovat, aby hodnota v poli majitel
nabývala některé z existujících hodnot osoba_id
tabulky osoby
. Zároveň můžeme určit, zda se při smazání osoby smažou i záznamy všech psů, kterých je majitelem, nebo zda má pokus o smazání osoby vlastnící alespoň jednoho psa selhat.
Související článkyeditovat | editovat zdroj
Externí odkazyeditovat | editovat zdroj
- (anglicky) Foreign Key Constraints Archivováno 31. 10. 2005 na Wayback Machine. – popis implementace cizích klíčů v databázi MySQL
- (anglicky) FOREIGN KEY Constraints – popis implementace cizích klíčů v databázi Microsoft SQL Server
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Antropológia
Aplikované vedy
Bibliometria
Dejiny vedy
Encyklopédie
Filozofia vedy
Forenzné vedy
Humanitné vedy
Knižničná veda
Kryogenika
Kryptológia
Kulturológia
Literárna veda
Medzidisciplinárne oblasti
Metódy kvantitatívnej analýzy
Metavedy
Metodika
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk