I've got a question about a best practice for storing historical / reference data in a database.

I'm creating an e-commerce system (online catalog, shopping cart, etc.) with a way of creating arbitrary groupings of products ("Gifts for Mother's Day", etc.) and selecting particular products as "featured".

In both cases, these items will be listed differently: promotional text, a catchy title, a larger or different picture. So I'll have entries in a "promotional_group" table and a "featured_product" table to store the additional text and picture references.

These items will also be temporary; probably not stay around longer than a month, in the case of promotional groups.

I want to keep track of user clicks on these promotional items and relate them specifically to sales. I could statically store the most important fragments of data and delete the temporary promotional group. Or, I could set a display status on the promotional group (setting it to "Inactive" when I'm done with it) and reference the promotional group id with the order, keeping -all- data.

Which option is the "best" way of doing it?