In order to teach database keys, it starts with natural keys. Finally, even if you’ve found a natural key that is guaranteed to be unique and track the actual entity that you want to keep track of, there’s a final argument against using an externally defined key in your system: Data-entry errors. I agree that using natural keys as physical primary keys is a bad idea but you really should be modelling your data logically with natural keys.

Source: You’ll regret using natural keys