2011-12-20 11 views
2

私は、どのデータウェアハウス型設計が最適であるかを判断しようとしています。 Googleのタイプ検索を使用して、異なる期間の異なる商品の過去の価格平均を見つけるために使用されます。たとえば、今月、3m、6m、1年前に在庫Aの平均価格は何でしたか?問題は、私が使用できるアイテム名を持っていないことです。アイテムに関する説明フィールドがあります。ヒストリカル集計用のデータベース設計

これは、同じアイテムがそれぞれ異なる説明で20回リストされる可能性があるため、アイテムをビューに集約できないことを意味します。そのため、説明フィールドでフルテキスト検索を実行して価格を把握する必要があります挿入日は3ヶ月前に<です。それからその平均を見つける。

  MAIN 
---------------------------- 
ID | Description | Price | Date 

または多くのテーブル::

DESCRIPTION 
------------------ 
ID | Description | 


    PRICE 
--------- 
ID | PRICE 

そして、ちょうど私が欲しいデータを取得するために参加

は、だから私の最善の策は以下のように一つのテーブルですべてを持っていることです。データベースには数百万行が含まれます。アイテムの実際の名前を取得する方法があれば、事前にデータを集計することができますが、それは私の選択肢ではありません。私は助言に感謝する!

答えて

0

私はオプション2と言っています。トップレベルの詳細を「説明」テーブルに保存します。そして、 "価格"テーブルの歴史的なデータ(ただし、一時的な値を取得するために日付フィールドが追加されています)

+0

これは私がmysqlを使用しているので、私の最善の策かもしれません。それは私がmyisamを説明表だけで全文検索することを可能にします。 – mscard02

0

オプション2は、より柔軟性を提供する可能性が高いです。私はゆっくりと変化する次元に対応するために各テーブルに日付を追加することを提案します。特定のアイテムに関する説明やその他の属性は、時間とともに変化する可能性があります。

レンガや迫撃砲の小売業者の場合は、店舗IDが含まれている可能性があります。その理由は、指定された場所の近くにいる顧客の競争や人口統計的な構成によって、アイテムの価格が異なることがあります。

DESCRIPTION 
--------------------------------------------------- 
ID | Description | Effective Date | Expiration Date 


    PRICE 
----------------------------------------------------------- 
ID | Location ID | Price | Effective Date | Expiration Date