私はかなり経験の浅い SQL 開発者ですが、一貫したデータベースを持つために最善を尽くしています。私が解決しようとしている問題は、システムの上位レイヤーで実行できる可能性がありますが、それらが属する場所であるデータベースレイヤーで処理するのが最善であることを認識しています。
したがって、私が持っているのは、定義された日に繰り返される場合と繰り返されない場合があるオファーを格納するテーブルです。
day_of_week
---------------------------------------------
id day_name
1 SUNDAY
2 MONDAY
3 TUESDAY
4 WEDNESDAY
5 THURSDAY
6 FRIDAY
7 SATURDAY
offer
---------------------------------------------
id day_id valid_from_day valid_until_day
1 3 2016-03-01 2016-03-01
2 6 2016-03-01 9999-03-01
ここに私の問題があります:
offer
---------------------------------------------
id day_id valid_from_day valid_until_day
1 2 2016-03-01 2016-03-01
2 6 2016-03-01 9999-03-01
day_id
2 は、2016 年 3 月 1 日または 3 月がではなく であるため、 2016-03-01
to には意味がありません。2016-03-01
TUESDAY = 3
MONDAY = 2
このテーブルに任意の間隔を格納できるようにしたいのですが、意味があることを確認する必要があります。私が探しているのは、特定の間隔valid_from_day
にvalid_until_day
特定の日が含まれているかどうかを確認する方法day_id
です。これは実際には簡単なチェックですが、これに a を使用できるCONSTRAINT
かどうか、またはこれに a を使用する必要があるかどうかTRIGGER
、およびそれがどのように見えるかはわかりません。