Database design for product purchase history
The question you should be asking is whether product attribute changes in general are of interest or if you are particularly concerned with changes in price.
What you probably really want is to record the price actually paid in your sale transaction details.  This is something that you'll need for proper financial accounting.  There are lots of things that could impact the price paid. Maybe there was a sale on. Maybe the customer has a coupon or a loyalty discount card? Note how being on sale could be considered an attribute of the product, but a coupon or customer discount would never be.
Don't think of the price as being (only) an attribute of the product. Once it becomes the price actually paid, it's an attribute of the sale, not an attribute of the product.  Think of the price on your product table as being &quot;the current normal price&quot;.  The price on your sale transaction detail is &quot;the price actually paid on this sale&quot;.  You will need to have both because they are semantically different.  You just need to know where to look depending on which meaning is of interest for any specific purpose.