In my application I have a Customer class and an Address class. The Customer class has three instances of the Address class: customerAddress, deliveryAddress, invoiceAddress.
Whats the best way to reflect this structure in a database?
- The straightforward way would be a customer table and a separate address table.
- A more denormalized way would be just a customer table with columns for every address (Example for ‘street’: customer_street, delivery_street, invoice_street)
What are your experiences with that? Are there any advantages and disadvantages of these approaches?
If you are 100% certain that a customer will only ever have the 3 addresses you described then this is OK:
Otherwise I would model like this: