I struggle to see a practical example.
> - Idempotency. Allowing a client to generate IDs can be a big help here (ie UUIDs)
Natural keys solves this
> - Sharing. You may want to share a URL to something that requires the key, but not expose domain data (a URL to a user’s profile image shouldn’t expose their national ID).
The you have another piece of data, which you relate to the natural key. Something like `exposed-name`.
> There is not one solution that handles all of these well
Natural keys solve these issues.
> Also, we all know that stakeholders will absolutely swear that there will never be two people with the same national ID. Oh, except unless someone died, then we may reuse their ID. Oh, and sometimes this remote territory has duplicate IDs with the mainland. Oh, and for people born during that revolution 50 years ago, we just kinda had to make stuff up for them.
If this happens, the designer had a error in his design, and should extend the design to accommodate the facts that escaped him at design time.
> Actually, the article is proposing a new principle
I'm putting it in words, but such knowledge has been common in the database community for ages, afaict.