Я собираюсь создать календарную систему на основе Mysql, где вы можете иметь повторяющийся шаблон, скажем, каждый понедельник навсегда.Он также должен охватывать статические/однократные события. Что меня интересует, так это то, какое решение было бы наиболее логичным (и лучшим) для меня. У меня есть четыре метода, которые мне интересно выбрать между ними.
Создайте функцию, которая принимает параметры от
и от до
. Эта функция создаст временную таблицу, которая импортирует существующее статическое расписание через INSERT ... SELECT
. После этого он будет считывать таблицу шаблонов и заполнять временную таблицу через пероид на основе from
и to
.
Это решение кажется хорошим с точки зрения того, что запросы будут проще для извлечения данных, и оно работает до бесконечности, поскольку вы можете просто повторно заполнить таблицу в зависимости от того, какой месяц вы загружаете. Мне интересно, когда это может быть запаздывающим способом сделать это или нет.
Создание и объединение заданных шаблонов с помощью подзапроса и JOIN
со статическим календарем.
Это кажется довольно раздражающим, так как запросы будут намного больше и, вероятно, вообще не будут хорошими (?).
В основном просто шаблон INSERT
для, скажем, на год вперед. Тогда я думаю, что задание cron будет повторно заполняться, чтобы всегда делать его на год вперед.
Это простой способ сделать это, но кажется, что хранится много ненужных данных, и это на самом деле не дает той бесконечности, к которой я стремлюсь.
Если я правильно понимаю, этот метод извлекает шаблон из другого запроса и создает события при выполнении.Это похоже на мои мысли о методе № 1 в том смысле, что я рассматриваю простой шаблон для создания нескольких строк.
Однако, если бы это было реализовано вне Mysql, я бы потерял некоторые функции базы данных, которые мне нужны.
Надеюсь, вы, ребята, поняли мою ситуацию, и не могли бы вы предложить либо данное и аргументировать, почему это лучшее, либо дать другое решение.
Лично мне больше всего нравится метод №1, но мне любопытно, не запаздывает ли повторное заполнение таблицы календаря при каждом вызове.