2016-09-22 4 views
0

多くの救済スタッフを管理する代理店のデータベースを開発しています。可用性情報をSQLに保存する方法(繰り返しアイテムを含む)

救済作業員は、3つのカテゴリ(曜日、夕方、夜)のいずれかで各日の空き状況を設定します。

パートタイムの救済隊員を週に1回、隔週で、1つのインスタンスでは9週間の勤務時間に使用するように設定する必要もあります。我々は既にここで再利用可能なパターンを開発しているので、救済作業員に利用可能な日数を設定するオプションを与えることもできます。

また、データベースにクエリを行い、従業員が特定の日に利用可能かどうかを判断できる必要があります。

しかし、ここではちょっとしたことがあります。変更データのキャプチャを使用できるようにする必要があります。したがって、可用性の計算が最善の選択肢かどうかはわかりません。

TABLE Availability Day 
    employee_id_fk | workday (DATETIME) | day | eve | night (all booleans)| worksite_code_fk (can be null) 

私は本当に繰り返しイベントのまわりで私の頭をラップする方法を苦労しています:

マイSQLプロトタイプテーブルは次のようになります。私は、「x」日周期のパターンに従う利用可能日数を、1年間価値のあるものとすることができます。しかし、私たちは情報をどのくらい前から保存していますか?私は、データセットの最後に到達すると問題に遭遇するのを見ることができます。

私は6ヶ月の情報を保存し、その後6ヶ月のデータでテーブルを更新するために毎月実行するサーバー側のタスクを追加することを考えていましたが、私の直感はこれが問題であると私に伝えています。

+0

もし私たちが情報をどのくらい先に保存するのであれば_が問題ですが、意見は異なります。 –

+0

ここでカレンダーテーブルを使用して、繰り返し情報と一度限りの情報を保存することを考えています。 –

答えて

1
将来的には絶対に柔軟性を

と私の最初の考えを膨満感からのデータを保持するカレンダー規格表

    • ようなものになるだろう - 100のような年のためにそれを作るか、曜日などが作るものは何でもしたいです情報など
    • 時間ディメンション表 - 時、分、すべての15は、いままでだけのために24時間
    • シフト表 - SHIFあたり1記録t。日、夕方、そして夜
    • 特定の状況表 - 関係スタート&を停止し、彼らは7日の範囲は、1レコードperdayとシフトごとに1つのレコードにあることを分割選択した場合でも、その日ごとに1つのレコードをお勧めし&時間をカレンダーに。
    • 再利用可能時間表 - 曜日(1-7)、月、週、曜日、あなたが考えることができるものは何でも。しかし、もう一度私は値ごとに1レコードを考えているので、もし利用可能であれば、月曜日と火曜日は2行になります。複数のシフトがある場合は、複数の行になります。

    ここでおそらく奇妙な部分がありますが、私は特定の利用可能なテーブルに利用可能な列を置き、おそらくそれを小さなintにして、利用可能な0のようなものを格納します。 、3は通知を受けて利用可能です。

    通知付き可用性を考慮する場合は、x日数などの列も追加できます。完全な柔軟性が必要な場合は、それも関連するテーブルになります。

    クエリは複雑ですが、ストアドプロシージャまたはテーブル値関数を使用すると、ルーチン的に処理できます。

  • +0

    書き込みに時間をとってくれてありがとう。 は、私はこれらの線に沿って考えています: http://stackoverflow.com/questions/5061749/repeat-event-calendar-based-database-designビットマスクを使用して、そこに方法が私のために動作させるために、 サイクル内で起こっている再発を捕らえることができます。私はカレンダーディメンションテーブルのアイデアが気に入っていますが、私はそのプロセスを単純化したいと思います。 –

    +1

    @ScubaSteveカレンダーのディメンションは非常に簡単で、最終的にはそれを必要とするか、その場で生成する必要があります。私はあなたがあなたが参照した投稿のどの部分があなたの行に沿って考えているということを意味しているのか分かりません。しかし、あなたが私の答えに構造を持っていれば、例外は単純に利用できない状態の特定の可用性レコードになります。私はあなたが特定のアベイラビリティをマージし、定期的にデータ構造が異なるために別のテーブルのロジックを考えるのがちょっと整頓されているようだと思います...あなたが選んだルート – Matt

    関連する問題