Guru nasveti

### Indeksi na tujih ključih

Tuji ključ se uporablja za logično povezavo ter omejevanje sprememb, ki se lahko izvajajo na dveh tabelah.

Začne se že pri glavni tabeli, na katero se kasneje sklicujemo. Ta potrebuje primarni ključ (pravzaprav referencirani stolpci samo ne smejo biti brez vrednosti, pokrivati pa jih mora preverjanje unikatnosti, vseeno pa je priporočljivo imeti primarni ključ). Druga tabela je odvisna od referenčne tako, da se morajo vrednosti v stolpcu, ki ga pokriva tuji ključ, ujemati z vrednostmi v stolpcu glavne tabele. Omejitev velja pri vnosu, izbrisu ali urejanju zapisov. Odvisna tabela je referencirana tabela tujega ključa.

Tuji ključ lahko omejuje tudi referenčno tabelo, ne le referencirane. Vrste omejitev so lahko RESTRICT, CASCADE ali SET NULL. To pomeni, da če se v glavni/referenčni tabeli vrstica spremeni (uredi ali odstrani), se pri vseh referenciranih tabelah preveri, če se operacijo lahko izvede in če je ob tem morda potrebno izvesti še kakšen dodaten ukaz. Za več informacij o tujih ključih si oglejte PostgreSQL dokumentacijo.

To pomeni, da se ob spremembi določene vrstice v referenčni tabeli izvede branje v referenciranih tabelah, z uporabo stolpcev s tujimi ključi kot ključi dostopa. Posledično je dobro pazljivo zasnovati zgradbo tabel, da bi se zagotovilo dobro delovanje. Za hitrejše branje podatkov je v večini primerov priporočljiva postavitev indeksov. PostgreSQL v to nikakor ne sili uporabnikov, zato je postavitev indeksa odvisna od snovalca podatkovne zbirke.

Zavoljo priročnosti pgAdmin III ponuja možnost, ki ob ustvarjenju zunanjega ključa samodejno preveri za uporabnimi indeksi in po potrebi ustvari novega. Kot pri vseh indeksih, so tudi tu redki primeri, kjer lahko to vpliva na malenkost počasnejše delovanje, vendat v splošnem drži, da je imeti en indeks premalo mnogo bolj upočasni delovanje, kot en preveč.