Как обрабатывать повторяющиеся события и задачи календаря (таблицы SQL Server и C #) - PullRequest
4 голосов
/ 09 марта 2012

Мне нужно запланированных событий, задач, встреч и т. Д. В моей БД. Некоторые из них будут однократными встречами, а некоторые будут повторяться «To-Dos», которые должны быть отмечены. Посмотрев макет календаря Google и другие, плюс много читать здесь - вот что у меня есть.

Таблица календаря (можно назвать таблицей расписаний): Basic_Event Заголовок, начало / конец, информация повторяется.

Таблица вхождений календаря: связь с таблицей расписания, конкретным текстом вхождения, датой / временем следующего вхождения ????

Посмотрите здесь, как SQL Server выполняет свою работу: http://technet.microsoft.com/en-us/library/ms178644.aspx но это немного другое.

Почему две таблицы: мне нужно отслеживать состояние каждого экземпляра повторяющейся задачи. Иначе это было бы намного проще ...

итак ... к вопросам:

1) Похоже, это правильный путь? Есть ли лучший способ справиться с проблемой множественных вхождений?
2) Как часто / как я должен инициировать создание вхождений? Я действительно не хочу создавать группу событий ... НО ... Что если пользователь захочет просмотреть календарь на следующий год ...

Ответы [ 3 ]

4 голосов
/ 09 марта 2012

Имеет смысл иметь определение вашего расписания для задачи в одной таблице, а затем в отдельной таблице для записи каждого экземпляра этого отдельно - это подход, который я использовал в прошлом.

И что касаетсясоздавая события, вероятно, нет необходимости создавать их все заранее.Особенно если учесть задачи, которые повторяются до бесконечности!Опять же, подход, который я использовал в прошлом, заключается только в создании следующего вхождения.Когда для этого экземпляра выполняется действие, следующий экземпляр затем рассчитывается и создается.

Это оставляет проблему просмотра будущих случаев.Для этого вы можете начать с начального / следующего запланированного события и просто рассчитать будущие события на лету во время отображения.

0 голосов
/ 09 марта 2012

В прошлом, когда мы это делали, у нас было 2 таблицы:

1) Расписания -> Включает информацию о повторениях

2) Исключения -> Редактирование / изменение определенных экземпляров

Используя SQL, можно получить список «Расписаний», которые имеют хотя бы один экземпляр в заданном диапазоне дат.Затем вы можете развернуть графический интерфейс, где находится каждый экземпляр.

0 голосов
/ 09 марта 2012

Хотя это не точный ответ на ваш вопрос, я уже решил эту проблему ранее в SQL Server (хотя база данных здесь неактуальна), моделируя решение на основе cron Unix .

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

У нас были события, которые можно было запланировать; они могут указывать либо на таблицу одноразового расписания, которая представляет отдельный момент времени (дата / время), либо на таблицу периодических расписаний, которая смоделирована после cron.

Кроме того, не забудьте правильно смоделировать свое решение. У события есть продолжительность, но продолжительность не связана с расписанием (но продолжительность события может влиять на расписание, вызывая конфликты). Не пытайтесь смоделировать продолжительность как часть вашего расписания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...