In layman's words:
- Surrogates should be hidden from the user.
- If there's not aYou should expose some other business candidate key to show to the user, then the auto generated integer column.
- If no other candidate key exist you use ashould show the PK. But in this case the PK is not considered a surrogate key ( surrogate means substitute ) butsince it's not a natural key that happens to be auto generated. In that case it must be shownsubstitute for other column.