In a database where users can place orders, is it better to have a new table with addresses or each order has the address data in its header.
This is not just about users (and their addresses) but also about prices and other information about products you are selling, that can change after the order has been placed, yet the order itself must remain intact.
Generally, there are 2 approaches to this:
(1) is the more "practical" approach, but can lead to data redundancies (e.g. when address doesn't change, you are nonetheless making separate copies of it).
(2) is the more "purist" approach, but may require more JOINing and generally be more complex.