我需要实现类似于Microsoft Outlook提供的功能,以使会议预约重复进行。我试图找出我将要求实现此功能的优化数据库设计。
要求类似于用户输入的每个运行或任务也适用于像周期性事件一样的安排 - 每周,每月或每年。能否请您建议数据库模型 - 用于在DB中存储这些详细信息的表结构(带有约束),然后程序可以访问它以执行相应的任务。可以在following link找到一些可能的调度程序详细信息的屏幕截图。
我们在后端运行了一个mysql DB来存储这些细节。一旦用户提交请求,具有请求细节的请求id就存储在表中,然后程序采取与其对应的动作。更清楚的是,用户的意图是运行sql脚本,获取值,然后对其执行统计分析。但是,由于oracle参考DB由许多用户动态更新,他希望以循环方式运行它并完成分析。请注意,mysql db和ref DB是不同的。
如果您需要任何其他详细信息,请与我们联系。!
答案 0 :(得分:10)
我建议将第一次出现的详细信息存储在一个表中(计划任务),然后将还原(重复任务)详细信息存储在另一个表中。
随着每项任务的完成,我可能还会尝试更新下一次出现的计划任务表。
对于表格布局,粗略草图如下:
<强> [ScehduledTasks] 强>
TaskId(主键)
描述和细节等...
开始日期时间
结束日期时间
<强> [RecurringTasks] 强>
TaskId(外键)
频率:每日,每周,每月或每年。
DayNo :运行的日期(每周1-7,每月1-31,每年1-365)
间隔:每x周,每月等。
WeekOfMonth :第一个,第二个,第三个......等如果填充,则DayNo指定一周的日期。
MonthOfYear :1-12。
EndDatetime :执行的最后日期
出现:执行的次数。如果此值和前一个值为null,则表示永远执行。
根据任务的设置方式,某些字段显然是空白的,但我认为上述内容涵盖了在Outlook中模拟任务所需的全部内容。