このアプリケーションの場合、スタッフは各曜日の開始と終了時にセットアップできる必要があります。オプションで、1、2、または 4 週間ごとにその開始/終了を繰り返すことができます。たとえば、毎週月曜日は午前 9 時に仕事を開始し、午後 2 時に終了します。そのような単純な繰り返しでは、3 つ、おそらく 2 つのモデル (非正規化用) を持つことを考えています。
Event
- start: datetime
- end: datetime
- type: int (appointment, time off, cancelled, etc)
- date: date (useful?)
- staff_id: int
- customer_id: int
(more, redacted)
DayTemplate
- active_start: datetime
- active_end: datetime
- staff_id: int
Day
- weekday: int
- start: datetime
- end: datetime
- recurrence: int (0: none, 1: once/mo, 2: other week, 4: every week)
- day_template_id: int
パラメータが設定されたので、顧客は空いているときにスタッフを予約することができます (特定のチャンクで、たとえば午前 9 時、午前 10 時 15 分、午前 11 時 30 分など、休憩を設定できるようにするため)。スケジュールの任意の日について、そのスタッフ メンバーがアクティブな DayTemplate を簡単に照会できます。スタッフは、イベントを「休暇」として予約することでスケジュールをさらに微調整し、微調整を行うことができます。さらに、私は Day を DayTemplate に非正規化することを考えていました - 見栄えが悪いことはわかっていますが、スキーマは決して変更されず、パフォーマンス上の利点はそれだけの価値がありますか? これは十分な柔軟性ですか?
フィードバックに感謝します。これをレールで構築します。