I prefer to use multiple keys. The primary key is always a surrogate (or synthetic) key which guarantees uniqueness bot holds no other meaning. This also means that no-one needs to know the value of the surrogate key except the system.
The other keys are natural (or business) keys. These are based on the values entered by the user and they can be used for searching the data. Natural keys enforce uniqueness on a logical level. For example same email cannot be entered twice etc.
To learn more about these concepts, have a look at
-
Surrogate key - Wikipedia[
^]
-
Natural key - Wikipedia[
^]