Spesso in una tabella che non ha una chiave naturale, è comunque utile che gli utenti possano avere un identificatore generato in modo univoco. Se la tabella ha una chiave primaria surrogata (e in tal caso ci si aspetterebbe che lo fosse), se tale chiave fosse esposta all'utente o dovesse essere utilizzato un altro campo per tale scopo?
Un motivo per non esporre la chiave surrogata è che ora non è possibile eseguire operazioni che mantengono la relazione tra i record, ma modificare i valori chiave, come alcuni tipi di eliminazione / reinserimento, molti metodi di copia dei dati da un database all'altro, ecc.
Il vantaggio principale di esporre la chiave surrogata è la semplicità di usare un campo che hai comunque.
In quali circostanze è meglio esporre direttamente la chiave surrogata agli utenti?