预定报告(任务)监视器

时间:2008-10-22 11:30:59

标签: algorithm language-agnostic database-design scheduling task

我必须开发一个系统来监控 生成/传输的报告。

  • 系统数据将存储在数据库表(Sybase)
  • 报告将以不同的时间表生成(“星期一晚上10点”,“早上5点”,“每月第1天”等)
  • 系统将仅监控报告是否已创建。它不会自己创建报告。
  • 系统会在报告未完成时通知相关人员。
  • 系统将维护所有生成的报告的日志

任何人都知道用于存储任务的一个好的(经过验证的)表格设计?我已经有了一个想法,但我不想重新发明轮子。

2 个答案:

答案 0 :(得分: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 :(得分:1)

您可以使用列

创建表计划
  • ID
  • 名称
  • mon,tue,wed,thu,fri,sat,sun
  • 时间(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

您还可以使用

报告
  • ID
  • 名称
  • schedule_id

和表格 report__schedule ___ late 以及列:

  • ID
  • DATE_TIME
  • REPORT_ID