PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Qual coluna para chave estrangeira:id ou qualquer outra coluna e por quê?


Uma chave estrangeira deve ter como alvo uma chave primária ou restrição exclusiva. É normal fazer referência à chave primária, porque normalmente você deseja fazer referência a uma linha individual em outra tabela, e a chave primária é o identificador de uma linha da tabela.

Do ponto de vista técnico, não importa se uma chave estrangeira referencia a chave primária ou outra restrição única, pois no PostgreSQL ambas são implementadas da mesma forma, usando um índice único.

Quanto aos seus exemplos concretos, não há nada de errado em ter o exclusivo size coluna de vehicle_size ser o alvo de uma chave estrangeira, embora levante a questão de por que você não fez size a chave primária e omitir o id coluna por completo. Não há necessidade de cada tabela ter um id coluna que é a chave primária numérica gerada automaticamente, exceto que pode haver ORMs e outros softwares que esperam isso.