I'd add one more that trips people up.
Be very careful about exposing your surrogate keys to downstream systems. This makes them natural.
There you are with a nice identity int as a key on orders and then you pass it as a link to your invoicing system as OrderID.
Something breaks or changes ( a classic is when someone important expects the numbers to be sequential (no gaps).
And now you are faced with renumbering them in your invoicing system and you need was and is....
Doesn't cause a problem often, but when it does you'll be banging your head against the desk for a good long time.
Keep Up with TechRepublic