For data which doesn't change regularly enough to warrant implementation via a time-series DBMS, we use a start-date end-date approach in the data modelling, so that in the example case the price on a given date for a product is given by a query like:
SELECT xxx_price FROM price_history WHERE product_id = <query-product-id> AND <query-date> BETWEEN start_date AND end_date
Update: and the code for changing the price updates the entry with an end-date of 31st Dec 9999 (the existing current price record), to an end-date equal to the cessation date inserts a new record with the new price, a start date of the commencement date and the same 31/12/9999 end date as before. The cessation date is the day before the new commencement date unless the datetime is meant to be intraday.

The logical primary key will include the product id, start date and end date, although in practice an artificial primary key of e.g. entry_id may be used for performance purposes.

-M

Free your mind


In reply to Re: Date Ranges Question by Moron
in thread Date Ranges Question by lamberms

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.