0

Я должен разработать систему для мониторинга генерация/передача отчетов.Запланированный отчет (задача) Монитор

  • Системные данные будут храниться в таблицах базы данных (Sybase)
  • Отчеты будут созданы с использованием различных графиков («пн-пт 10 вечера», «сидел 5 утра», «первый день месяца» и т.д.)
  • Система будет следить за тем, чтобы отчеты были созданы. Он не будет создавать сами отчеты.
  • Система сообщит об этом соответствующему персоналу, если отчет не завершился.
  • система будет вести журнал всех сформированных отчетов

Любой знает хороший (испытанный) стол (ы) дизайн для хранения shedules задачи ?. У меня уже есть идея, но я не хочу изобретать колесо.

+0

Я ищу информацию о том, как работает логика хрон. – lamcro 2008-10-22 12:44:20

ответ

1

Если вы действительно собираетесь поддерживать сложные графики всех этих типов, я не уверен, что это хорошая идея попытаться выработать столь же сложную реляционную схему БД для всех деталей этих графиков.

Я бы подумал о разработке схемы XML для деталей расписаний и, если вам действительно нужно хранить расписания в реляционной базе данных, сохраняя данные XML в столбце. Вы можете использовать столбцы для тех атрибутов расписаний, которые применимы к расписанию любого типа (например, имя графика или кто изменил его в последний раз и когда).

Например, если предположить, что график может быть использован для более чем одного доклада, вы могли бы сделать что-то вроде этого:

Table: Schedule 
--------------- 
Columns: 
    ID     - Surrogate key to refer to schedules 
          from other tables. 

    Name    - Short textual description of the schedule 
          (to be shown in GUI). 

    ... 

    Details    - XML containing all the details of 
          the schedule (frequency, exceptions, 
          complex combinations of simple schedules, 
          whatsoever). 

Даже если ваше приложение должно ответить на такие вопросы, как «то, что отчеты должны быть из-за заданной даты/времени », я думаю, что у вас должно быть действительно очень большое количество расписаний, чтобы оправдать накладные расходы на использование реляционной схемы для хранения подробных сведений о графике в отдельных столбцах (и, возможно, в нескольких таблицах).

1

Вы можете создать таблицу график с колоннами

  • идентификатор
  • имя
  • пн, вт, ср, чт, пт, сб, вс
  • день
  • месяц
  • год
  • время (h * 60 + m)

ваши примеры будут:

пн-пт 10 вечера

mon, tue, wed, thu, fri = true, time=22*60, the rest are NULL 

сидел 5 утра

sat=true, time=5*60, the rest are NULL 

первый день месяца

day=1, the rest are NULL 

Вы также могли бы иметь таблицу отчеты с колоннами

  • идентификатор
  • имя
  • schedule_id

и стол report__schedule___late с колоннами:

  • ID
  • date_time
  • REPORT_ID