我是一个相当缺乏经验的 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
2016-03-01
2 对to没有意义,2016-03-01
因为 2016 年 3 月 1 日或 3 月是 a TUESDAY = 3
,而不是 a MONDAY = 2
。
我希望能够将任意间隔存储到此表中,但我必须确保它们有意义。我正在寻找的是一种检查给定间隔是否valid_from_day
包含valid_until_day
给定日期的方法day_id
。这实际上应该是一个简单的检查,但我不确定我是否可以CONSTRAINT
为此使用 a ,或者我是否必须为此使用 aTRIGGER
以及它的外观。