ByteMyzer, don't go there.
The correct way to do this is to have a price table that includes four (or more) items:
Item identifier
Price
StartDate
EndDate
Of these four fields, the ItemID is a Dups-allowed key. If there is ANY prime key to this table, it is the compound key { [ItemID],[StartDate] }. Mental experiment: Does the rest of the table depend entirely on the proposed prime key (YES, if limited to those four fields as named) and does any non-key field exist that does NOT depend on the proposed prime key (NO). Therefore, this use is NOT denormalized.
You use this by finding the price ...
SELECT [PRICE], {put other desired fields here} FROM PRICEHIST, {put other involved tables here} WHERE
PRICEHIST.ITEMID = [{put your item ID here}] AND
[{put your date of purchase here}] BETWEEN PRICEHIST.STARTDATE AND PRICEHIST.ENDDATE ;
Note to purists: There MIGHT be a slight redundancy with regard to the fact that the end date of one price probably could be computed by finding the beginning date of the next price - except that in this case, we break the rule about storing a computable value in order to support the BETWEEN...AND... operator in the query above. But that isn't really denormalization even when we do that.
Now, to maintain the price history table, the most recent price has a start date of whenever that price went into effect and an end date of , say, 20 years in the future. When you update the prices, go back and properly terminate the price date ranges.
You might also consider doing something similar (not identical) regarding discounts that were applicable on given dates. Same concepts.