ProductPricing
のデザイン テーブルを使用すると、古い価格データを削除する必要がなくなります(管理者がそのデータに基づくレポートを必要とする場合があります)。上記の説明で、次のように開始します(開始日を変更したので、簡単にわかります。これは、システムが導入されたときの元の価格でした):
ProductPricing
1 | Jan 1, 1970, 00:00:00 | Jan 1, 2038, 00:00:00 | 10$ | 10$
ここで、リンゴに割引価格を設定し、販売が終了したときのために積極的にシステムを設定したいとします。
ProductPricing
1 | Jan 1, 1970, 00:00:00 | Dec 20, 2011, 00:00:00 | 10$ | 10$
1 | Dec 20, 2011, 00:00:01 | Dec 26, 2011, 00:00:00 | 7.5$ | 10$
1 | Dec 26, 2011, 00:00:01 | Jan 1, 2038, 00:00:00 | 10$ | 10$
ここで行ったことは次のとおりです。
- 既存のレコードを2038タイムスタンプで更新し、
endDateTimeStamp
を変更します 販売の開始を反映するフィールド - 販売を定義するために新しいレコードを挿入します
- 通常の価格を再度反映するために、別の新しいレコードを挿入します
タイムスタンプが重複していないため、データベースに価格を照会すると、単一のレコードを取得することが保証されます。したがって、
SELECT p.Name, pp.price, pp.original_price
FROM Product p
INNER JOIN ProductPricing pp ON pp.productId = p.productId
WHERE NOW() BETWEEN pp.startDateTimeStamp AND pp.endDateTimeStamp
現在の価格の製品リストが表示されます。