我的公司正致力于为员工创建一个调度程序。
我的两位同事希望使用提供的Quartz.Net数据库来添加有关将要运行的项目的信息。 (例如,用户界面提示文本,参数值类型,允许多个值)
我不同意这一点,因为数据库是直接映射到Quartz.Net库的调用。在我看来,数据库只作为一种方法来保存计划和触发器,如果它被关闭的计算机关闭。
我确信Quartz数据库中不应该有任何与将要使用它的项目相关联的逻辑。
由于我在数据库设计方面没有广泛的背景,所以我无法论证我的观点。
有人可以帮助我添加提供的Quartz.Net数据库架构的优点/缺点吗?
编辑:
他们不想修改现有的表,但是想要在数据库和数据库中添加额外的表。使用这些。
答案 0 :(得分:1)
我不认为应该有一个大问题,但我会小心使用Quartz表创建外键关系。
默认情况下Quartz表/触发器以QRTZ为前缀这一事实意味着设计人员正在命名它们,以便它们不会与同一数据库中的其他表冲突,因此他们必须期待这一点。
如果您的表正在使用石英表定义外键关系,则会启动缺点,这会对石英表产生强烈的依赖关系。
例如,如果您要创建一个历史记录表来显示每个作业的安排时间,并且您选择从表创建外键约束到QRTZ_JOB_DETAIL表,那么这将意味着您将无法删除该工作(除非您删除历史表中的相关记录)。
因此,最好只创建一个包含作业名称列的历史记录表,而不是强制引用完整性。
如果要链接到石英表,还需要考虑如果要升级到已重新设计数据库结构的Quartz的未来版本会发生什么。
主要优点之一是信息全部在同一个地方。您有一个要备份的数据库,如果您的系统/服务器崩溃而您需要从备份恢复,那么您就知道表和石英表中的信息是一致的。
如果您有现有的Sql数据库,并且想要安排与数据库相关的作业。在这种情况下,将Quartz表添加到现有数据库中是有意义的,而不是维护两个数据库。