• Natural vs surrogate (synthetic) keys
    • Natural keys are based on real world unique identifiers. eg social security number, phone#, email address, etc. Some times you run into trouble here because these IDs can be reused in ways we wouldn’t like (eg there is a finite number of phone numbers possible given 7-10 digits and when a subscriber cancels a line phone companies will give the newly unassigned phone# to another customer)
    • Surrogate keys don’t have any business meaning. They are random sequences of characters that are generated uniquely based attributes local and unique to the server generating the key (clock, momory contents, network interface unique id, etc.)
      • I’m seeing UUIDs used pretty much everywhere at this point
      • Autoincrementing integers are another example of this that can be convenient for smaller, not-sharded yet databases