Ich bin ein ziemlich unerfahrener SQL-Entwickler, aber ich versuche mein Bestes zu geben, um eine konsistente Datenbank zu haben. Das Problem, das ich lösen möchte, könnte in einer oberen Schicht meines Systems geschehen, aber ich bin mir bewusst, dass es am besten ist, Dinge wie das, wo sie hingehören, zu behandeln: In der Datenbankebene.Wie überprüft man, ob eine bestimmte day_id innerhalb eines bestimmten Zeitintervalls day_from bis day_to enthalten ist?
Also, was ich habe ist eine Tabelle, wo ich Angebote speichern, die auf einem definierten Tag oder wiederholen können nicht:
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
und hier ist mein Problem:
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 Marken keinen Sinn für 2016-03-01
bis 2016-03-01
, weil der 1. oder März 2016 war ein TUESDAY = 3
, kein MONDAY = 2
.
Ich möchte beliebige Intervalle in dieser Tabelle speichern können, aber ich muss sicherstellen, dass sie sinnvoll sind. Was ich suche ist eine Möglichkeit zu überprüfen, ob ein gegebenes Intervall valid_from_day
zu valid_until_day
einen gegebenen Tag day_id
enthält. Dies sollte eigentlich eine einfache Überprüfung sein, aber ich bin mir nicht sicher, ob ich dafür einen CONSTRAINT
verwenden kann oder ob ich dafür einen TRIGGER
verwenden müsste und wie das aussehen würde.