2012-04-30 15 views
1

利用可能なホテル客室とその価格をリストアップしたWebサイトがあるとします。 ホテルのオーナーは各部屋の1日あたりの価格を設定します。 "Jan 1st costs $ 100"と同じくらい複雑です。 "Jan 1st 1999비용は$ 50、Jan 1st 2000は$ 100"です。 粒度は日中に制限されています。時間の経過とともに変化するフィールド値

データベース内でこれを表現する方法(部屋を照会する際の負荷の点で最も効率的な方法)は何でしょうか? 各客室には、日付フィールドと価格フィールドを保持する別のテーブルがありますか?すなわち1部屋あたり365エントリ。

私はこれを解決する方法を見ていますが、たとえば、ユーザーが「$ 500の予算で7日間」などのクエリを実行したい場合は、少し複雑になります。これは、実装するのが大変好きな機能です。

UIでは、個人の日の料金ではなく、時間のブロックとして部屋の価格を設定することができます。たとえば、部屋価格がjan-junの場合は50ドル、jul-decの場合は100ドルです。もちろん、それが365の日付型フィールドに変換できる必要がある場合は、代わりに2つのdaterange型フィールドを使用する解決策が望ましいでしょう。

私はこれについてのテクニックを学ぶことができたことについてのあらゆる指針は非常に高く評価されるでしょう。私はGoogleを検索し、カレンダーテーブルの情報を見つけましたが、追加のヒントや情報をいただければ幸いです。

歴史的に私はMySQLを使用しましたが、何かが考えられます。

+0

これは少し厳しいと思います。私は研究をしようとしていますが、問題の正しい用語がわからないときは、特に「日付」のような言葉が含まれていて膨大な数のヒットを返す可能性がある場合は、情報を見つけるのが非常に難しい場合がありますGoogleなど –

答えて

1

Ralph Kimballの用語では、これはゆっくりと変化する次元と呼ばれます。

私はあなたがこの本の1つを見ることをお勧めします。最新の「The Data Warehouse Toolkit」では、このトピックを非常にうまくカバーするはずです。

+0

ありがとうございます。 私は現在SCDに関するいくつかの調査を行っていますが、ライブデータベースについて話しているのとは対照的に、これが実際に私の問題と一致するかどうかは不明です。 このようなDWのテクニックは、ライブデータではなく過去のデータを報告すること(つまり、部屋の値段は何であるのかはわかりません)についてのレポートではありませんか?潜在的に1日に何万回も実行されるようなクエリの場合、CPUサイクルなどで少し "高価"にならないのでしょうか? –

関連する問題