Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как хранить повтор событий?  [new]
JustForFun
Guest
Есть таблица событий, которые повторяются с разными интервалами.
Например день рождения, или повторять каждый будний день, или каждый месяц 10 числа, или - каждый вторник и пятницу.
Подскажите - как хранить?

Выборки, которые на ум приходят - какие события в заданный период - день, неделя, месяц и т.д.

Первое что приходит на ум - тупо записывать в отдельную таблицу все повторы. В нужные даты. Никаких проблем с выборкой, зато храним кучу инфы.

Второе - хранить расписание повторов. Но как? Чтобы потом было удобно выбрать.
Спасибо.
3 сен 14, 21:10    [16531987]     Ответить | Цитировать Сообщить модератору
 Re: Как хранить повтор событий?  [new]
Изя Кацман
Member

Откуда: Великий Эксперимент
Сообщений: 2019
Храни так, как ето делает Oracle с job'ами для scheduler'а

Посмотри, как устроены вьюшки
WHERE view_name LIKE '%\_SCHEDULER\_JOB%' ESCAPE '\'

и почитай их описания в мануале Reference

Люди всё уже давно придумали - стоит ли изобретать еще один байк?! :)
3 сен 14, 23:53    [16532531]     Ответить | Цитировать Сообщить модератору
 Re: Как хранить повтор событий?  [new]
ten
Member

Откуда: Екатеринбург
Сообщений: 1672
JustForFun,
Первый вариант более гибкий и понятный, т.е. хранить именно даты. Например, для повтора в будние дни можно будет учесть праздники.
А по поводу "зато храним кучу инфы" - это экономия даже не на спичках, а на щепках от спичек, да и то сомнительная.
4 сен 14, 08:37    [16532951]     Ответить | Цитировать Сообщить модератору
 Re: Как хранить повтор событий?  [new]
JustForFun
Guest
ten,

Спасибо конечно. Если сотни тысяч событий и миллионы повторов - там уже будут не такие уж и щепки.

Изя Кацман,
Спасибо за мысль. Разбираюсь. Пока вижу только Next_Run_Date, а это не тоже самое что и просчитать несколько повторов. Определить будет ли рождество в 2016 году, когда видишь в next_run_date в 2015. Но возможно ещё не догнал всю глубину. Копаюсь.
4 сен 14, 09:48    [16533166]     Ответить | Цитировать Сообщить модератору
 Re: Как хранить повтор событий?  [new]
varlamovvp
Member

Откуда: Moscow
Сообщений: 297
JustForFun,

Может быть в помощь как идея

В пакете
DBMS_SCHEDULER
есть описание
Calendaring Syntax
- языка, на котором строятся различные интервалы (в том числе, допустим, такой можно сконструировать: "повторять каждую пятницу, если она не попадает на 1-е число. Если попадает на 1-е число, то перенести на 2-е").

Ответ на Ваш вопрос (ИМХО), зависит от сложности конструкций, которыми Вы будете задавать интервалы повтора.
4 сен 14, 11:13    [16533654]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить