解決すべき問題: 私はデータベースに不慣れで、テーブルに変更を保存する最良の方法を見つけようとしています。これは、いくつかのステータスの毎日のスナップショットです。"hotel_room_rentals" テーブル (20 列あり - すべて変更可能)。選択した日のそのテーブルを生成できるようにしたい (例: 本番環境で変更された内部のデータなので、別の場所に保存する必要がある)、または他の変換を実行できるようにしたい (例: 期間内の平均レンタル日数)
私の理論的な例 - 詳細: ホテルの DB を作成しているとしましょう。本番システムには、ホテルの 10,000 室すべての情報を表示するテーブルがあります。これは毎日のスナップショットです。テーブルが 1 日に 1 回更新されると仮定しましょう。
ルームの一部の属性は頻繁に変更されます。customer_number, rate_usd. あまり頻繁に変更されない属性もあります。たとえば、disabled_room、room_color、type_of_furniture などです。Room_number は明らかに変化しません (主キー)
ここで、このテーブルの変更を追跡する最善の方法を見つけたいと思います。この表に基づいて統計を作成し (例: 期間中の平均賃貸日数)、選択した日付 (例: 2013-01-01) の表を生成できるようにする最良の方法
私の考え: データベースについて何も知らないので、「DB_dump_date」(日付付き) という名前の列を 1 つ追加して、テーブル全体を毎日コピーすることを考えています。これは非常に単純なアプローチですが、おそらく多くのスペースが必要になります。私の 10,000 部屋のテーブルから、1 年に 365 回コピーする必要があります。
その他 の解決策: 他の Web サイトで、次の 2 つのテーブルを作成するように勧められました: 「予約」テーブルと次の列: Startdate Enddate Room Rate Occupant_name 次に、このテーブルを FactReservations テーブルに変換します: Date Room Is_占有率 Occupant_nameこれは私を助けてくれます...実際、20の中間テーブルを作成し、次に20のファクトテーブルを作成する必要があると思います(データベースに20の列があるため)。
質問: このような問題に対処するための推奨される方法は何ですか? ユーザーが魔法の ETL を作成せずに、それに対処する準備ができている DB スキーマはありますか? (例えば、それ自体で問題を最適化できる DB) 代替手段は何ですか? 頭の良い人なら、これをどのように行いますか? (できればMS Access...またはいくつかのフリーウェア技術で)
編集: もう1つ-部屋の予約だけでなく、すべてがテーブルで変更される可能性があります。変更を追跡できるようにしたい