0

I have to develop a system to monitor the generation/transmission of reports.

  • System data will be stored in database tables (Sybase)
  • Reports will be generated with different schedules ("mon-fri 10pm", "sat 5am", "1st day of the month", etc.)
  • System will just monitor that the reports were created. It will not create the reports itself.
  • System will notify appropriate personnel when a report did not finish.
  • System will maintain a log of all generated reports

Anyone know of a good(tried and proven) table(s) design for storing the task shedules?. I already have an idea, but I don't want reinvent the wheel.

4

2 回答 2

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).

即使您的应用程序必须回答诸如“在给定日期/时间之前应该提交哪些报告”之类的问题,我认为您必须有非常非常多的计划来证明使用关系模式存储细节的开销是合理的将详细信息安排在单独的列中(并且可能在多个表中)。

于 2008-11-18T22:48:14.693 回答
1

您可以使用列创建表计划

  • ID
  • 姓名
  • 周一, 周二, 周三, 周四, 周五, 周六, 太阳
  • 时间 (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
  • 约会时间
  • 报告ID
于 2008-11-21T20:42:56.490 回答