这是我的情况: 使用我的应用程序的公司的高级成员/老板将能够为他/她的员工分配“任务”。 “任务”可能包含许多“子任务”。现在我唯一的要求是在我的数据库中创建一个“任务”和一个“sub_task”表,如下所示:
CREATE TABLE `tasks` (
`id` INTEGER NOT NULL,
`title` TEXT NOT NULL,
`description` TEXT NOT NULL,
PRIMARY KEY(id)
)
和sub_tasks:
CREATE TABLE `sub_tasks` (
`id` INTEGER NOT NULL,
`title` TEXT NOT NULL,
`description` TEXT NOT NULL,
`tasks_id` INTEGER NOT NULL,
PRIMARY KEY(id)
FOREIGN KEY(tasks_id) REFERENCES tasks(id)
)
如您所见,我在sub_tasks表中使用tasks_id
作为id
表中tasks
引用的外键。现在它很好地满足了我的要求。但是在将来我将创建一个Employee
类时,情况将是这样的:高级成员将/可以将多个任务分配给单个员工,并且每个任务可能/可能不包含许多子任务。如何设计数据库以满足此要求,以便它不会破坏我的代码?
答案 0 :(得分:0)
可以将任务分配给多个员工,还是一次只分配给一个员工?
如果是前者,你需要另一张桌子," employee_tasks"或类似的东西。我不太喜欢这个,因为我觉得它是最不可能的选择,但基本上你创建了独特的员工/任务对,你可以确保多个员工完成了同样的任务。
如果它是后者,那么您所需要的只是任务表中的一个新列,用于" employee_id。"该员工现在负责该任务。您如何选择获取所有信息取决于您的个人偏好以及您感到满意的db数量,但我亲自为给定员工选择所有任务,然后针对每项任务I&#39 ; d找到它的子任务。如果要减少db命中数,可以查找所有任务,然后通过连接查找所有子任务,然后匹配内存中的任务。这是两个" easy"我知道这样做的方式,但如果有更聪明的东西,我不会感到惊讶。