Существует два различных понятия, которые вы описываете: «по средам» - это не столько диапазон дат, сколько шаблон повторения. То же самое относится и к «выходным».
Возможно, вы смотрите на две разные таблицы в дополнение к вашей таблице свойств, которые определяют эти недоступные даты: одну, которая представляет конкретные диапазоны дат, и одну, которая представляет шаблоны повторения.
Property
|
-------------- ---------------
| |
PropertyUnavailableRecurrence PropertyUnavailableRange
(Имейте в виду, что вы можете выяснить более короткие имена)
PropertyUnavailableRecurrence
необходимо хранить информацию, необходимую для превращения «сред» и «выходных» в жизнеспособную логику принятия решений. Я не могу смоделировать это для вас, так как все, что вы представили в этом шаблоне, являются определенными днями недели, но я думаю, что вы должны быть в состоянии учитывать «первое число месяца» или « Вторая среда месяца ", но я не знаю. В любом случае, именно здесь вам необходимо хранить эту информацию.
PropertyUnavailableRange
будет просто содержать простые даты From
и To
, которые определяют диапазон. Эта часть довольно проста.
Конечно, альтернативой было бы взять шаблоны повторений, указанные в приложении, и превратить их в дискретные PropertyUnavailableRange
записи, но вам все равно нужно настроить таблицу для хранения этих повторений и связать дискретные записи с повторение, чтобы вы могли управлять ими.