Правильный ответ на самом деле оба, и не либо или .
Отложив на мгновение вопрос о без даты окончания для повторения: что вы хотитезаголовок, который содержит правила повторения для всего шаблона.Таким образом, если вам нужно изменить шаблон, вы захватили этот шаблон в одну запись, которую можно редактировать, не рискуя обновить аномалии .
Теперь, объединяясь с каким-то шаблоном повторенияв SQL будет очень большая боль в шее.Кроме того, что если ваши правила позволяют вам настраивать (редактировать или даже удалять) конкретные экземпляры этого шаблона повторения?
Как вы справляетесь с этим?Вы должны создать таблицу экземпляров с одной строкой для каждого повторяющегося экземпляра со ссылкой (внешним ключом) на единственное правило, которое использовалось для его создания.Это позволит вам изменить отдельного ребенка, не упуская из виду его происхождение, в случае, если вам нужно отредактировать (или удалить) весь шаблон.
Рассмотрите инструмент для составления календаря, такой как Outlook или Календарь Google.Эти приложения используют этот подход.Вы можете перемещать или редактировать экземпляр.Вы также можете изменить всю серию.Приложения спрашивают вас, что вы хотите делать, когда переходите в режим редактирования.
Существуют некоторые ограничения для этого.Например, если вы редактируете экземпляр, а затем редактируете шаблон, вам необходимо иметь правило, которое гласит: (а) выигрывает новый родитель или (б) всегда выигрывают модифицированные потомки.Я думаю, что Outlook и Google Calendar используют подход (a).
Что касается того, почему каждый экземпляр записан явно, единственная катастрофическая вещь, о которой я могу думать, это то, что если у вас нетПо ссылке обратно на исходный шаблон повторения у вас будет чертовски много времени отменить всю серию одним действием.
Назад к без даты окончания - Это может быть случай усмотрения, являющегося лучшей частью доблести и использующего какое-то эмпирическое правило, которое накладывает практический предел того, как далеко в будущееВы расширяете такой ряд - или, альтернативно, вы можете просто не допустить такого правила в шаблоне.Завершите шаблон и позвольте создателю правила беспокоиться о его расширении в будущем, когда это станет необходимым.