0

在将“Tasks”和“TaskDependency”表添加到现有模式后,我遇到了可维护性/引用完整性的问题。

我的表如下:

Schedule

ScheduleID  Frequency   FrequencyDatePart   StartHour   EndHour DaysOfWeek
1   1   DAY 6   20  1111111

JobTrigger

JobID   JobName NextRun ScheduleID
1   Job1    2013-09-13 16:00:43.350 1

Tasks

TaskID  TaskName    JobID
1   Task1   1
2   Task2   1
3   Task3   1
4   Task4   1

TaskDependency

TaskID  DependsOn
2   1
3   1
4   2
4   3
  • TaskDependency 表将用于显示哪些任务依赖于其他任务。

我的问题是:

  1. 我想将 TaskID 和 DependsOn 设置为复合键(或添加唯一约束)以防止重复。如果不将 DependsOn 列添加到 Tasks 表中,我怎么能做到这一点?

  2. 有一个 UI 将管理此功能,当 JobTrigger 被修改时,从 Tasks 表中添加/删除任务的最可维护的操作过程是什么?

我最初的想法是转储所有相关的任务,然后重新添加它们。这种方法感觉很混乱,随着表格的增长,我会担心。

4

2 回答 2

2

您可以在单个表中拥有多个外键,指向父表中的单个字段,因此没有理由不能拥有:

table TaskDependency:
       TaskID int foreign key -> Tasks.id
       DependsOn int foreign key -> Tasks.id
       UNIQUE KEY (TaskId, DependsOn)

这是完全可以接受的做法。

于 2013-09-13T20:47:31.203 回答
0

第一季度

CREATE UNIQUE NONCLUSTERED INDEX UX_TaskDependency ON (TaskId, Dependency)
GO

第二季度

您可以在 JobTrigger 表上使用 after trigger 来管理您的任务并将任务添加或删除到您的表中。

于 2014-08-21T05:49:59.003 回答