4
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
<link rel="STYLESHEET" type="text/css" href="../pgadmin3.css">
6
<title>Rady odborníka</title>
10
<h3>Pokrytí cizích klíčů indexem</h3>
12
Cizí klíč se používá k logickému propojení páru tabulek a omezení změn, které lze na nich provádět.
15
Vše začíná hlavní tabulkou, která bude odkazovanou tabulkou. Musí mít primární klíč (přesněji odkazovaný sloupec nesmí
16
obsahovat prázdné hodnoty a musí být pokrytý jedinečným indexem, ale je skutečně dobrá rada, abyste v ní měli primární index).
17
Podřízená tabulka závisí na hlavní tabulce, což dává tušit, že sloupce, na kterých je cizí klíč vytvořený, musí odpovídat
18
hlavní tabulce pro každý vkládaný nebo aktualizovaný klíč. Podřízená tabulka je odkazující tabulkou cizího klíče.
21
Cizí klíče omezují nejen odkazující tabulku, ale i odkazovanou tabulku. Druhy omezení mohou být RESTRICT, CASCADE nebo SET NULL.
22
Znamená to, že když se změní řádek v hlavní/odkazované tabulce (aktualizací nebo smazáním), všechny odkazující tabulky jsou
23
zkontrolované, jestli je operace platná a pokud ano, provedou se určité dodatečné akce. Podrobnosti najdete v dokumentaci
27
To dále znamená, že pokud se k nějakému řádku v odkazované tabulkce přistupuje kvůli změně, provádí se následně čtení odpovídajících
28
řádků ve všech odkazujících tabulkách, přičemž se použije sloupec s cizím klíčem pro určení toho správného řádku. Proto by se pro tyto
29
sloupce měla brát v úvahu pravidla návrhu ovlivňující výkon. Ve většině případů je doporučeno použít index. PostgreSQL to vyloženě
30
nevyžaduje, proto zůstává na návrháři tabulky, aby se o to postaral.
33
Pro větší pohodlí poskytuje pgAdmin III při vytváření cizího klíče jednoduchý přepínač, který automaticky zkontroluje
34
přítomnost použitelných indexů a pokud žádný nenajde, tak jeden vytvoří. Tak jako u všech indexů, jsou výjimečné případy,
35
kdy takový index může trochu degradovat celkový výkon, ale obecně mít o index méně má horší vliv na výkon než mít o jeden