私はかなり経験の浅いSQL開発者ですが、一貫性のあるデータベースを持つために最善を尽くそうとしています。私が解決しようとしている問題は、私のシステムの上位層で行うことができますが、それが属している場所のようなものを処理することが最善であることを認識しています。特定のday_idがday_fromからday_toまでの所定の時間間隔内に含まれているかどうかを確認する方法
それでは、私が午前、私はしてもしなくてもよい定義された日に繰り返すことがオファーを格納した表である:
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-03-01
〜2016-03-01
の意味がないため、2016年1月または3月はTUESDAY = 3
であり、MONDAY = 2
ではありません。
私はこのテーブルに任意の間隔を保存できるようにしたいが、それは意味をなさないことを確認する必要があります。私が探しているのは、指定された間隔valid_from_day
〜valid_until_day
にある日がday_id
であるかどうかをチェックする方法です。これは実際には簡単なチェックでなければなりませんが、CONSTRAINT
を使用できるかどうか、またはTRIGGER
を使用する必要があるかどうか、そのように見えるかどうかはわかりません。