Я хочу иметь простую таблицу базы данных, чтобы отслеживать видимость запланированной категории в индексе сайта. В основном он будет указывать индексу, чтобы показать рождественскую категорию между Днем Благодарения и Рождеством.
До сих пор я подумываю использовать таблицу, подобную этой,
schedule_id SMALLINT,
start_date TIMESTAMP,
end_date TIMESTAMP,
category_id SMALLINT,
annual BOOL
Достаточно просто, база данных может выбирать любые строки, где время падает между началом и концом.
Моя проблема связана с моим годовым флагом. В принципе, я думаю, что раз в день база данных может обновлять таблицу и добавлять один год в любую строку, где end_date < теперь и годовое значение истинно, в противном случае удалите строку, если она истекла.
Я беспокоюсь, что високосные годы или что-то может компенсировать перенесенную дату.
Я на правильном пути здесь?
Есть ли лучший способ сделать это?
Если вы добавите один год, а не (скажем) 365 дней, вам не нужно будет беспокоиться о выпуске високосного года.
ADDDATE( date, INTERVAL 1 YEAR )
Добавление 1 года к дате високосного дня будет вам 28 февраля на следующий год
2008-02-29 -> 2009-02-28
Вы можете рассмотреть возможность разбить свои расписания из своих категорий и иметь таблицу соединений, связывающую категории с расписаниями. Тогда, если вы хотите разделить расписание между категориями, это немного проще. И потенциально вы можете использовать расписания в другом месте, добавив другие таблицы соединений.
Последнее предложение, вместо того, чтобы иметь поле annual
, имеет поле с нулевым значением для указания периодичности: еженедельно, ежемесячно и т.д., снова дает вам более гибкую модель расписания.