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 te lo aspetteresti sicuramente) tale chiave dovrebbe essere esposta all'utente o dovrebbe essere usato un altro campo a tale scopo?
Un motivo per non esporre la chiave surrogata è che ora non è possibile eseguire operazioni che preservano la relazione tra i record, ma modificare i valori chiave, come alcuni tipi di cancellazione / reinserimento, molti metodi di copia dei dati da un database a un altro, ecc.
Il vantaggio principale di esporre la chiave surrogata è la semplicità di utilizzare un campo che hai comunque.
In quali circostanze è meglio esporre direttamente la chiave surrogata agli utenti?