Не для кого надеюсь не секрет, что являюсь "активным" программистом. Опыт, конечно, не пропьешь, но часто задаюсь вопросами оптимизации тех или иных решений, хотя и существующие работают не плохо. Поэтому те, кто не сталкивался с проектированием баз данных (созданием таблиц) и ничего не программировал, могут сразу не читать этот пост дальше.
Дано: объект (задача), которая должна быть повторяема во времени. Повторяемость может быть:
ежедневной,
недельной,
месячной,
годовой (интерфейсы взяты из calendar.yandex.ru)
Задача: предложить универсальное хранение этой информации в таблице базы данных
Мое решение было ещё в далеком 2008 году следующее:
Пояснения по полям:
REPEATER - признак повторяемости (0 - не повторяется, 1 - ежедневно, 2 - еженедельно, и т.д.)
LASTUPDATE, CREDATE - к задаче не относятся
На каждую закладку добавлял по 2 поля (соотносите с интерфейсами):
Ежедневно - EVERYDAY, EVERYWORKDAY
Еженедельно - EVERYWEEK, DAYOFWEEK (поле с номерами дней в формате "через точку", пример: ".1.2.3.4.5.6.7." = вся неделя)
Ежемесячно - EVERYMONTH, DAYOFMONTH
Ежегодно - EVERYYEAR, DATEOFYEAR
P.S. Буду рад оптимизационным мяслям и новым решениям.