sql >> Databasteknik >  >> RDS >> PostgreSQL

Vilken kolumn för främmande nyckel:id eller någon annan kolumn och varför?

En främmande nyckel måste riktas mot en primärnyckel eller unik begränsning. Det är normalt att referera till primärnyckeln, eftersom du vanligtvis vill referera till en enskild rad i en annan tabell, och primärnyckeln är identifieraren för en tabellrad.

Ur teknisk synvinkel spelar det ingen roll om en främmande nyckel refererar till primärnyckeln eller en annan unik restriktion, eftersom båda i PostgreSQL implementeras på samma sätt, med hjälp av ett unikt index.

När det gäller dina konkreta exempel är det inget fel med att ha den unika size kolumn för vehicle_size vara målet för en främmande nyckel, även om det väcker frågan varför du inte gjorde size primärnyckeln och utelämna id kolumn helt och hållet. Det finns inget behov av att varje tabell har ett id kolumn som är den automatiskt genererade numeriska primärnyckeln, förutom att det kan finnas ORM och annan programvara som förväntar sig det.



  1. Hur man skapar en klon av ditt MySQL- eller PostgreSQL-databaskluster

  2. SELECT som returnerar en lista med värden som inte förekommer på någon rad

  3. Varför kan du inte använda OR eller IN med en OUTER JOIN-operation?

  4. Vad är snabbare, VÄLJ DISTINCT eller GROUP BY i MySQL?