質問

私たちは、日中にいつ部屋を予約できるかなどの情報を保存するシステムの更新(書き換え)を検討しています。現在、開始時刻と時刻、会議室の利用可能日を1つのテーブルに保存し、別のテーブルに個々の予約時間を保存しています。

表面的には、この方法で情報を保存することは論理的なアイデアのように思えましたが、時間が経過し、システムに大きな負荷がかかると、このデータ構造が非効率的であると認識し始めました。 (すべての部屋を空いている時間で検索し、空いている時間を計算するのは集中的な操作になります。部屋が一定の時間空いている場合は、要求された時間に対応できる時間です。)

システムをより効率的にする方法について、私たちは輪になって回ってきましたが、これに取り組むにはもっと良い方法が必要だと感じています。誰もこれについてどうするかについての提案を持っていますか、このような何かを構築する方法について調べる場所がありますか?

役に立ちましたか?

解決

この本は刺激的であり、時間管理/制約を含むあらゆる種類のデータベースの必読であることがわかりました:

時間指向データベースアプリケーションの開発SQLで

編集者によって追加は、 Richard Snodgrass のホームページからオンラインで入手できます。良い本。)

他のヒント

@ Radu094は良い情報源を指摘してくれましたが、それを処理するのは難しいでしょう。

恐ろしく実用的なレベルで、2つのテーブルではなく、1つのテーブルに予定と利用可能な情報を記録することを検討しましたか?毎日、時間を「使用不可」(オフィスが開く前、オフィスが閉じた後-そのようなことが起こった場合)、「使用可能-割り当て可能」、「使用不可」にスライスします。これらの(2つまたは3つの)クラスの予約は、連続した間隔で記録されます(各レコードの開始時刻と終了時刻は1つのレコードに記録されます)。

各部屋および各日付について、「使用しない」予約のセットを作成する必要があります(「使用不可」で行くかどうかに応じて、セットは「使用可能」レコードであるか、またはアーリーシフトとレイトシフトの「利用不可」レコードも記録されます。

それから、あなたが尋ねている質問を解決する必要があります。例:

  • T1とT2の間のY日目に部屋Xを予約できますか
  • Y日目にT1とT2の間に空いている部屋はありますか?
  • Y日の部屋Xはいつでも利用可能ですか?
  • Y日の何時に視聴覚機能と12人の収容可能な部屋がありますか
  • Y日の午前中にX室を予約したのは誰ですか?

これは、可能性のほんの一部です。しかし、細心の注意と注意を払えば、クエリは管理しやすくなります。 DBMSの制約の検証はより困難になります。つまり、時間[T1..T2)が予約されている場合、他の誰も[T1 + 00:01..T2-00:01)またはその他の重複期間を予約しません。 Wikipediaおよびその他の場所( uci.edu )。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top