3

ホテル予約システムを設計しようとしています。

各ホテルにはいくつかの RoomType が割り当てられています。

RoomType: id | name | hotel_id

date_from各ホテルは、特定の期間 (与えられたおよび)に対していくつかの数の RoomTypes を提供しますdate_todate_fromまた、各クライアントは、指定された期間 (および)に、いくつかの RoomTypes のいくつかの数量を予約することができますdate_to

特定のホテルで利用可能なオファーを見つけて表示したり、毎日の各 RoomType の無料 (オファー済み - 予約済み) の部屋数を把握したり、無料の部屋の最小数に対してクエリを実行したりできる必要があります。

データの保管方法についてアドバイスをお願いします。最適なソリューションは何ですか? ストアド プロシージャを使用しない限り、いくつかのクエリ (特定の範囲内の特定のタイプの毎日の空き部屋の数を表示するなど) は、単純な SQL クエリでは実行できないことを知っています。ただし、できるだけ迅速かつ簡単に実装できるようにしたいと考えています。

これまで私は考えてきました:

  1. 予約RoomOffer: hotel_id | date_from | date_to | quantity | room_type_idと同じ

  2. ReservationとRoomOffer: hotel_id | date | quantity | room_type_id同じです。つまり、RoomOffer / Reservation を作成するときに、指定された範囲で毎日単一のレコードを作成します。

アドバイスはありますか?

4

1 に答える 1

1

RoomTypeは単一の部屋を指し、各部屋の主キーはタプルであると仮定し(hotel_id, room_type_id)ます。これは、両方のフィールドをRoomOffer.

RoomOfferただし、 andReservationアプローチを取ることはお勧めしません。まず第一に、多くの冗長な情報を保存しているためです。部屋がまだ予約されていない場合、その部屋が利用可能であることを示す部屋のオファーが必要です (さらに悪いことに、時間範囲で分割されているため、多くの情報が必要です)。あなたがすでに知っていること。

その代わりに、これに似たデザインをお勧めします。

予約システム UML

あなたの質問から、あなたがシステムのパフォーマンスについて懸念していることはわかっていますが、通常、設計段階でこの種の最適化を行うことはお勧めできません。これを行うと、多くの冗長なデータと結合されたクラスが発生する可能性があります。ただし、インデックスを使用するか、SQL を使用しないアプローチでも、DB クエリのパフォーマンスを向上させることができます。これは、プロジェクトの後のフェーズでより適切に評価できるものです。

于 2013-02-15T14:17:16.833 に答える