I have got one model with 3 addresses: pickup, dropoff, and billing. I figure the billing address will often be either the pickup or drop-off address, so from the UI perspective, I ought to possess a "just likeInch option. But from the DB perspective, must i save the "just likeInch area, or must i duplicate the information?

You will have the same Id of the row from a previous address table in 2 different posts, PickUp and DropOff. By doing this, you don't duplicate the address, don't use some sentinel address, and may easily query to ascertain if the PickUp address is equivalent to the DropOff. If one of these simple changes later on, you could customize the Id value saved in the particular column to a different address.

You can produce a table known as 'Address' making Pickup, Dropoff, Billing FKs to that particular Address table.

Simply because a previous address is identical home address does not mean it is the same conceptual address. Really, John Doe's address might be "123 Elm St.", but conceptually his address is "John Doe's mailing address".

Particularly, for addresses I'd say can and should be copied inside a database due to this straightforward situation: consider a couple who live in the same address. Now one of these moves. Should you only saved the address once, upgrading the "mover"s address would then update the initial roommate's address too.

However in general, consider the way the information is associated with other data. If multiple things can connect with it, make certain that the change for just one should impact all of them.

alt text