По первому вопросу - я бы сделал так:
Такая связь позволяет прикрепить к одному действию несколько расписаний. Для разовых заданий поле `weekdays` не задаётся. Поле `nextTime` устанавливается при создании расписания и позволяет выбрать все действия, который нужно выполнить, даже если были просрочены. После выполнения действия поле `nextTime` можно выставить в NULL, если `weekdays` пустое, или установить время следующего выполнения задания.