PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Welche Spalte für den Fremdschlüssel:id oder eine andere Spalte und warum?

Ein Fremdschlüssel muss auf einen Primärschlüssel oder eine eindeutige Einschränkung abzielen. Es ist normal, auf den Primärschlüssel zu verweisen, da Sie normalerweise auf eine einzelne Zeile in einer anderen Tabelle verweisen möchten und der Primärschlüssel der Bezeichner einer Tabellenzeile ist.

Aus technischer Sicht spielt es keine Rolle, ob ein Fremdschlüssel auf den Primärschlüssel oder eine andere eindeutige Einschränkung verweist, da beides in PostgreSQL auf die gleiche Weise implementiert ist, indem ein eindeutiger Index verwendet wird.

Was Ihre konkreten Beispiele betrifft, ist nichts falsch daran, die eindeutige size zu haben Spalte vehicle_size das Ziel eines Fremdschlüssels sein, obwohl es die Frage aufwirft, warum Sie size nicht gemacht haben den Primärschlüssel und lassen Sie die id weg Spalte überhaupt. Es ist nicht erforderlich, dass jede Tabelle eine id hat Spalte, die der automatisch generierte numerische Primärschlüssel ist, außer dass es möglicherweise ORMs und andere Software gibt, die dies erwarten.