Eugene Elutin (10/2/2012)
Given that a customer's name can change, perhaps it is an attribute of the purchase.
Given that nothing in the Universe is constant and everything can change, I would suggest to have one table CustomerPurchase and make all attributes to be attributes of purchase...
It's right for pointer to customer address and price to be attributes of the purchase. But,
it is wrong for customer name. Even if customer name has changed, you will most likely want to see and report all existing purchases with the new name not he old one, until you want datawarehouse changing dimension.
For, say, medical implants and gun sales, to pick just two, is it legal for you not to know the name you sold to?? Just asking. I worked at a medical implant device maker and the FDA was very, very strict on what records had to be kept.
SQL DBA,SQL Server MVP(07, 08, 09) Prosecutor James Blackburn, in closing argument in the Fatal Vision murders trial:
If in the future, you should cry a tear, cry one for them [the murder victims]. If in the future, you should say a prayer, say one for them. And if in the future, you should light a candle, light one for them.