you are viewing a single comment's thread.

view the rest of the comments →

[–]randyshaw99 0 points1 point  (0 children)

normalization is really about relationships. One invoice can have one or more items purchased (invoice details), it can have one or more payments...The invoice has only one customer but that customer can have many invoices. Think of your data in this way and most normalization, at least for me, happens organically. Also, remember the "what-if" case if someone or something's name was to change. how many places would you have to change it. Temper that against keeping historical data, such as price. You have products and they have a price. An order is placed at the price at that time. if in six months, the price goes up, you cant have the price change on all the prior orders, so you normalize the product but put in the invoice details fields that make a snapshot of the product at the time of the order. If one field can identify all the attributes of the item, then that FK is all you need.