PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Quale colonna per la chiave esterna:id o qualsiasi altra colonna e perché?

Una chiave esterna deve avere come target una chiave primaria o un vincolo univoco. È normale fare riferimento alla chiave primaria, perché in genere si desidera fare riferimento a una singola riga in un'altra tabella e la chiave primaria è l'identificatore di una riga della tabella.

Da un punto di vista tecnico, non importa se una chiave esterna fa riferimento alla chiave primaria oa un altro vincolo univoco, perché in PostgreSQL entrambi sono implementati allo stesso modo, utilizzando un indice univoco.

Per quanto riguarda i tuoi esempi concreti, non c'è niente di sbagliato nell'avere la size univoca colonna di vehicle_size essere l'obiettivo di una chiave esterna, anche se pone la domanda sul perché non hai creato size la chiave primaria e omettere l'id colonna del tutto. Non è necessario che ogni tabella abbia un id colonna che è la chiave numerica primaria generata automaticamente, tranne per il fatto che potrebbero esserci ORM e altri software che lo prevedono.