3

職場のさまざまな場所のスケジューリングプログラムを作成する必要があります。特定の場所ごとに、午前8時から午後5時までの15分のタイムスロットをスケジュールする必要があります。必要なデータベース設計に頭を悩ませようとしています。

いくつかのパラメータ:

  1. スケジュールは少なくとも2週間は外れる必要があります。
  2. 各場所には、他の場所と比較して固有のスケジュールがあります。
  3. スケジュールは15分ブロックである必要があります。
  4. ブロックがいっぱいになると、場所ごとに異なる基準が設定されます。たとえば、1つの場所で15分ごとに3人の顧客にサービスを提供できるため、ブロックは3つになります。別の場所では、15分ごとに5人の顧客にサービスを提供できるため、5人がスケジュールした後にブロックがいっぱいになります。

これをスケッチするたびに、データベースの正規化の規則に違反しています。主な目標は、開いている「スロット」の特定の場所を照会して表示できるようにすることです。今説明したクエリが必要以上に難しくなる必要がないように、テーブルを作成する方法を知っている人はいますか?

4

2 に答える 2

6

15分ごとに予約できる顧客の数、開店時間と閉店時間などの情報を含む、場所ごとの設定テーブルが必要になります。基本的に、開始時刻と終了時刻を持つ「スロット」ごとにエントリのテーブルを作成します。

残りのパラメーターは、他の場所でのイベントの量をカウントしたり、それらがいっぱいかどうかを確認したりするなど、アプリケーション層で処理する必要があります。

イベント
-----
id
date_start
date_end
location_id

位置
--------
id
名前
max_customers
始まる時間
終了時間

MozillaCalendarSQLスキーマを読むことをお勧めします。これは、堅実なスケジューリングカレンダーを形成するための優れた基盤を提供します。

于 2012-09-26T17:30:25.443 に答える
0

少なくとも3つのテーブルが必要になると思います。私のおすすめ:

スケジュール-実際のスケジュールを保存します。id(IE:auto_increment)、location_id( "LOCATIONS"テーブルへの参照) time_start、、が必要になりますtime_end

LOCATIONS-場所を保存します。id(IE:auto_increment)および実際のなどの他の該当する情報が必要になりlocationます。

ルール-これはLOCATIONテーブルを参照します。保存したい必要な情報(IE:max_occupants)を考え出す必要があります。これには、少なくとも1つのidフィールドとlocation_idフィールドが必要です。

これで、必要なデータを格納するための3つのテーブルがあり、LOCATIONSは他の2つによって参照されています。LOCATIONSテーブルにはいつでも「ルール」を追加できますが、独自のテーブルを作成すると、将来、追加の制限などがあると判断した場合に柔軟性が得られます。

于 2012-09-26T17:34:20.913 に答える