Je suis un développeur SQL plutôt inexpérimenté mais j'essaie de faire de mon mieux pour avoir une base de données cohérente. Le problème que je cherche à résoudre pourrait être résolu dans une couche supérieure de mon système, mais je suis conscient qu'il est préférable de gérer des choses comme celles-ci où elles appartiennent: Dans la couche de base de données.Comment vérifier si un certain day_id est contenu dans un intervalle de temps donné day_from to day_to?
Donc ce que j'ai est une table où je stocke des offres qui peuvent ou ne peuvent pas répéter un jour défini:
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
et voici mon problème:
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 marques aucun sens pour 2016-03-01
à 2016-03-01
parce que le 1er ou Mars, 2016 était un TUESDAY = 3
, pas un MONDAY = 2
. Je veux être capable de stocker des intervalles arbitraires dans cette table mais je dois m'assurer qu'ils ont un sens. Ce que je cherche est un moyen de vérifier si un intervalle donné valid_from_day
à valid_until_day
contient un jour donné day_id
. Cela devrait effectivement être une vérification facile, mais je ne suis pas sûr si je peux utiliser un CONSTRAINT
pour cela ou si je devrais utiliser un TRIGGER
pour cela et à quoi cela ressemblerait.