PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Quelle colonne pour la clé étrangère :id ou toute autre colonne et pourquoi ?

Une clé étrangère doit cibler une clé primaire ou une contrainte unique. Il est normal de faire référence à la clé primaire, car vous souhaitez généralement référencer une ligne individuelle dans une autre table, et la clé primaire est l'identifiant d'une ligne de table.

D'un point de vue technique, peu importe qu'une clé étrangère référence la clé primaire ou une autre contrainte unique, car dans PostgreSQL les deux sont implémentées de la même manière, en utilisant un index unique.

Quant à vos exemples concrets, il n'y a rien de mal à avoir l'unique size colonne de vehicle_size être la cible d'une clé étrangère, même si cela soulève la question de savoir pourquoi vous n'avez pas fait size la clé primaire et omettre le id colonne tout à fait. Il n'est pas nécessaire que chaque table ait un id colonne qui est la clé primaire numérique générée automatiquement, sauf qu'il peut y avoir des ORM et d'autres logiciels qui attendent cela.