La chiave primaria è una chiave univoca nella tabella che scegli che identifica in modo univoco un record nella tabella. Tutte le tabelle dovrebbero avere una chiave primaria, perché se hai bisogno di aggiornare o eliminare un record devi sapere come identificarlo in modo univoco.
Una chiave surrogata è una chiave generata artificialmente. Sono utili quando i tuoi record essenzialmente non hanno una chiave naturale (come una Person
tabella, poiché è possibile che due persone nate nella stessa data abbiano lo stesso nome, o record in un registro, poiché è possibile che si verifichino due eventi tali che riportino lo stesso timestamp). Molto spesso li vedrai implementati come numeri interi in un campo a incremento automatico o come GUID generati automaticamente per ogni record. I numeri ID sono quasi sempre chiavi surrogate.
A differenza delle chiavi primarie, tuttavia, non tutte le tabelle necessitano di chiavi surrogate. Se hai una tabella che elenca gli stati in America, non hai davvero bisogno di un numero ID per loro. Potresti usare l'abbreviazione di stato come codice chiave primaria.
Il principale vantaggio della chiave surrogata è che sono facili da garantire come unici. Lo svantaggio principale è che non hanno alcun significato. Non significa che "28" sia Wisconsin, ad esempio, ma quando vedi "WI" nella colonna Stato della tabella degli indirizzi, sai di quale stato stai parlando senza dover cercare quale stato è quello nel tuo stato tabella.