PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Która kolumna dla klucza obcego:id lub dowolna inna kolumna i dlaczego?

Klucz obcy musi być skierowany na klucz podstawowy lub ograniczenie przez unikalność. Odwoływanie się do klucza podstawowego jest normalne, ponieważ zazwyczaj chcesz odwoływać się do pojedynczego wiersza w innej tabeli, a klucz podstawowy jest identyfikatorem wiersza tabeli.

Z technicznego punktu widzenia nie ma znaczenia, czy klucz obcy odwołuje się do klucza podstawowego, czy do innego ograniczenia unikalnego, ponieważ w PostgreSQL oba są implementowane w ten sam sposób, przy użyciu unikalnego indeksu.

Jeśli chodzi o Twoje konkretne przykłady, nie ma nic złego w posiadaniu unikalnego size kolumna vehicle_size być celem klucza obcego, chociaż nasuwa się pytanie, dlaczego nie utworzyłeś size klucz podstawowy i pomiń id kolumna w całości. Nie ma potrzeby, aby każda tabela miała id kolumna, która jest automatycznie generowanym liczbowym kluczem podstawowym, z wyjątkiem tego, że mogą istnieć ORM i inne oprogramowanie, które tego oczekuje.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego domyślna wartość kolumny sqlalchemy nie działa?

  2. Jak rozwiązać problem FATAL:przekroczono limit połączeń dla użytkowników niebędących superużytkownikami

  3. Obsługa wyjątków PostgreSQL

  4. SQL Znajdź wszystkich bezpośrednich potomków w drzewie

  5. paginacja i filtrowanie na bardzo dużej tabeli w postgresql (paginacja zestawu kluczy?)