Задачка по проектированию, ч.1

Sep 15, 2010 06:23


Не для кого надеюсь не секрет, что являюсь "активным" программистом. Опыт, конечно, не пропьешь, но часто задаюсь вопросами оптимизации тех или иных решений, хотя и существующие работают не плохо. Поэтому те, кто не сталкивался с проектированием баз данных (созданием таблиц) и ничего не программировал, могут сразу не читать этот пост дальше.

Дано: объект (задача), которая должна быть повторяема во времени. Повторяемость может быть: ежедневной, недельной, месячной, годовой (интерфейсы взяты из 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. Буду рад оптимизационным мяслям и новым решениям.

проектирование, задача

Previous post Next post
Up