En fremmednøgle skal målrette mod en primær nøgle eller unik begrænsning. Det er normalt at referere til den primære nøgle, fordi du typisk vil henvise til en individuel række i en anden tabel, og den primære nøgle er identifikatoren for en tabelrække.
Fra et teknisk synspunkt er det ligegyldigt, om en fremmednøgle refererer til den primære nøgle eller en anden unik begrænsning, for i PostgreSQL er begge implementeret på samme måde ved hjælp af et unikt indeks.
Med hensyn til dine konkrete eksempler er der intet galt i at have den unikke size
kolonne i vehicle_size
være målet for en fremmednøgle, selvom det rejser spørgsmålet, hvorfor du ikke lavede size
den primære nøgle og udelad id
kolonne i det hele taget. Det er ikke nødvendigt for hver tabel at have et id
kolonne, der er den automatisk genererede numeriske primærnøgle, bortset fra at der kan være ORM'er og anden software, der forventer det.