基本的に私の質問は - 私は価格のリストを持っています。そのうちのいくつかは歴史的です(つまり、Xは3月11日に0.99ドル、4月1日に1.99ドルなどを検索できるようにしたい)。この情報を保存する最良の方法は何ですか?履歴表をMySQLテーブルに保存する最も良い方法は何ですか?
私はおそらく、価格テーブルの外来キーを持つ商品テーブルを持っていると仮定しました。私は当初は現在の価格を保管することが最善の策だと思っていましたが、私は過去の価格データを保管したいと思うので、価格表のために以下のようなテーブルを保管する方が良いでしょう:
CREATE TABLE prices (
id BIGINT auto_increment not null,
primary key (id),
price DECIMAL(4,2) not null,
effectiveStartDate DATETIME NOT NULL,
effectiveEndDate DATETIME
);
私はここで少し迷っています。効率的に製品を検索し、その製品の価格がどのように変化したかを確認したいと考えています。どのように効率的にこれらの価格のセットを製品に関連付けることができますか?私は、特定の日付にまたがるクエリを効率的に検索できるようにするために、これをインデックスする最良の方法は何でしょうかと尋ねています。
本当に歴史的な価格を見たり、注文時の商品の量を知りたいですか?私は、その部分が2008年に12ドルだったのを見て、今は17ドルである必要がある理由は全く見当たりません。 – HLGEM
idをproduct_idに置き換え、主キーをproduct_id、price、およびeffectiveivestartdateにすることを検討します。 –
@HLGEM:会計システムでは、前年度の購入/調整に合わせて履歴データを記録するのが一般的です。 –