Схема базы данных для email рассылки (расписание)?
Допустим, есть список пользователей, список статей, и эти статьи сгруппированы по несколько штук в определённую email рассылку, по темам.
Нужно создать таблицу, в которой я смогу указать как часто посылать данные письма в каждой из email рассылок. Рассылка начинается после того, как пользователь подписался. Новый пользователь подписался -- рассылка началась.
Например, в subscription1 письма будут посылаться так:
- 1 день - 1-ый email
- 3 день - 2-ой email
- 4 день - 3-ий email
- 9 день - 4-ий email ....
А в subscription2 может быть и так:
- 1 день - 1-ый email
- 1 день, через 3 часа после пред. мыла - 2-ой email
- 2 день - 3ий email
- 2 день, через 12 часов после пред. мыла - 4-ый email
- 12 день, в 14:00 UTC - 5-ый email
То есть, промежутки могут быть в часах, днях, неделях, месяцах. И, нужно иметь возможность задать в какое время дня отсылать email.
Вопрос: Как бы вот эту таблицу с расписанием закодить в базе данных?
Просто сохранять "смещение в часах от previous_email"? Не удобно, потому что рассылка может содержать, скажем, 100 email'ов. Можно, но, мне кажется, не гибко.
Хотелось бы иметь возможность закодить расписание по:
а) часам (1ый email - сразу, 2ой - через 3 часа, 3ий - через 8 часов после 2го...)
б) или по дням (1ый мыл - 1ый день, 2ой - 3 дня после второго, 3ий - через 12 дней после 2го...)
в) или дням и часам
г) или дням, и с возможность указания времени суток (на 3ий день в 14:00)
д) или недель... (1ый email раз в 1ую неделю, во вторник в 5 вечера UTC, 2ой - во вторую неделю в этот же день и время, 3ий - в третью неделю, но в пятницу в 10 утра...)
Гибко, то есть.