https://blog.osa.in.net/schedule-and-scheduling-policies-pattern/

icon-512x512.png

例として、飲食店の予約サービスを考える。

予約を受け付けるためには各店舗の営業スケジュールを管理しておいて、営業日の営業時間内のみ予約を受け付けるようにする必要がある。

たとえば、ある店舗は各曜日の営業時間について、以下のように定めているとする。

これを素朴に設計すると、たとえば以下のような「営業日については営業時間を保持し、定休日についてはレコードがない」というテーブルになるかもしれない。

Untitled

素朴に設計した上記のテーブルだが、多くの場合、実際に運用していく中で

など、規則通りではない営業スケジュールが必要になってくる。

新たな要求に応えるため、ここでまた素朴に臨時休業テーブルを追加する。

また、別の要求として、