Guru nasveti

### Primarni ključi

Ko gradite tabelo, imejte v mislih, kako jo boste kasneje uporabljali. V večini primerov boste potrebovali nek identifikator, s katerim lahko enolično določite posamezne zapise. Ta identifikator naj bo ustvarjen kot primarni ključ. Primarni ključ ne obsega nujno le enega stolpca; lahko jih je toliko, kolikor je potrebno, da se lahko enolično določa zapise v tabeli. Če je potrebno več stolpcev (nenapisano pravilo: več kot 3), bi bilo morda pametneje ustvariti dodatni stolpec z ustreznim podatkovnim tipom, npr. serial ali bigserial, ki bo služil kor primarni ključ.

Le v redkih primerih se ne izplača uporaba primarnega ključa. To pomeni, da manjkajoč primarni ključ pomeni veliko verjetnost, da tabela ni ustrezno zasnovana. Zato se tudi pojavi Guru nasvet, če kreirate tabelo brez primarnega ključa.

Če pogledate PostgreSQL-ove sistemske tabele, boste videli, da nobena nima primarnega ključa. Čemu torej vse to? Pravzaprav ima vsaka tabela en ali dva stolpca (navadno le OID), ki enolično določita posamezno vrstico, s tem zadovoljita drugo pravilo za primarne ključe, ne dovolita ničel, pokrita pa sta z indeksom za hitrejši dostop. Uporaba OID-jev ima zgodovinske razloge in navadno ni prva izbira pri oblikovanju tabel. PostgreSQL jih uporablja zaradi združljivosti za nazaj in čeprav bi novejši pristop izrecno uporabljal primarne ključe, se stanje najbrž ne bo več kaj dosti spreminjalo.

Kot je razvidno iz primera sistemskih tabel, se lahko unikatnost in hiter dostop doseže tudi z drugačnim pristopom, ne le s primarnim ključem. Vseeno pa je zavoljo jasnosti zasnove podatkovnih modelov priporočljiva uporaba primarnih ključev v ta namen.