我正在尝试在我的数据库中创建“任务”架构。一个字段是“blockedBy”,表示阻止当前任务的另一个任务。
我是SQL Server和数据库的新手。如何正确创建表格?似乎唯一有效的选项是数字或文本。
我是否应该将另一个“任务”的ID号存储在“blockedBy”字段中,还是有更好的方法?
答案 0 :(得分:6)
我假设:
这是我的列提议,以及数据如何显示的示例:
TaskID TaskName TaskDescription ..... TaskBlockedBy
------ -------- --------------- -------------
1 Eat Eat food <NULL>
2 Drink Drink, um, water <NULL>
3 Sleep Ah, peace! <NULL>
4 Wake Up Crap 3
第3行中的唤醒任务被第3行中的睡眠任务阻止。
表字段的数据类型为:
TaskID int (identity/autonumber)
TaskName nvarchar(50) not null
TaskDescription nvarchar(200) not null
TaskBlockedBy int
如果您预计会阻止任务的多个现有任务,请将表拆分为2个表:AllTasks和BlockedTasks。 AllTasks表将不再具有TaskBlockedBy字段,BlockedTasks及其数据将如下所示:
BlockID TaskID BlockedBy
------- ------- ----------
1 4 3
2 4 2
这表示睡眠时阻止了唤醒任务以及用户在睡觉前喝了什么。
HTH
答案 1 :(得分:3)
如果可能存在与一个任务关联的多个阻塞任务,则需要引入另一个表,例如“BlockingTasks”,其具有任务的ID和阻止它的任务的ID。不要像CVS那样做,因为很难对查询进行查询。