sql >> Database >  >> RDS >> PostgreSQL

Welke kolom voor refererende sleutel:id of een andere kolom en waarom?

Een externe sleutel moet een primaire sleutel of een unieke beperking targeten. Het is normaal om naar de primaire sleutel te verwijzen, omdat u doorgaans naar een afzonderlijke rij in een andere tabel wilt verwijzen, en de primaire sleutel is de id van een tabelrij.

Vanuit technisch oogpunt maakt het niet uit of een externe sleutel verwijst naar de primaire sleutel of naar een andere unieke beperking, omdat in PostgreSQL beide op dezelfde manier worden geïmplementeerd, met behulp van een unieke index.

Wat uw concrete voorbeelden betreft, er is niets mis met het hebben van de unieke size kolom van vehicle_size het doelwit zijn van een externe sleutel, hoewel het de vraag oproept waarom je geen size . hebt gemaakt de primaire sleutel en laat de id . weg kolom helemaal. Het is niet nodig dat elke tafel een id heeft kolom die de automatisch gegenereerde numerieke primaire sleutel is, behalve dat er mogelijk ORM's en andere software zijn die dat verwachten.



  1. Hoe het IP-adres te krijgen [MYSQL]

  2. Virtualmin:u hebt geen toegang tot deze MySQL-database na het wijzigen van het wachtwoord

  3. Toegang geweigerd voor gebruiker '[email protected]' (met wachtwoord:NO)

  4. Vind ongeldige datums in SQL Server 2008