sql >> Databáze >  >> RDS >> PostgreSQL

Který sloupec pro cizí klíč:id nebo jakýkoli jiný sloupec a proč?

Cizí klíč musí cílit na primární klíč nebo jedinečné omezení. Je normální odkazovat na primární klíč, protože obvykle chcete odkazovat na jednotlivý řádek v jiné tabulce a primární klíč je identifikátor řádku tabulky.

Z technického hlediska nezáleží na tom, zda cizí klíč odkazuje na primární klíč nebo jiné jedinečné omezení, protože v PostgreSQL jsou oba implementovány stejným způsobem pomocí jedinečného indexu.

Pokud jde o vaše konkrétní příklady, není nic špatného na jedinečné size sloupec vehicle_size být cílem cizího klíče, i když to vyvolává otázku, proč jste neudělali size primární klíč a vynechat id sloupec úplně. Není potřeba, aby každá tabulka měla id sloupec, který je automaticky generovaným číselným primárním klíčem, kromě toho, že mohou existovat ORM a další software, který to očekává.



  1. Potřebuji pomoc se správným SQL

  2. Formátovací řetězec Postgres pomocí pole

  3. MySQL:#126 – Nesprávný soubor klíče pro tabulku

  4. Pojmenované příkazy MariaDB