设计SQLite DB以预测未来的代码?

时间:2015-09-24 22:52:26

标签: android sql sqlite

这是我的情况: 使用我的应用程序的公司的高级成员/老板将能够为他/她的员工分配“任务”。 “任务”可能包含许多“子任务”。现在我唯一的要求是在我的数据库中创建一个“任务”和一个“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类时,情况将是这样的:高级成员将/可以将多个任务分配给单个员工,并且每个任务可能/可能不包含许多子任务。如何设计数据库以满足此要求,以便它不会破坏我的代码?

1 个答案:

答案 0 :(得分:0)

可以将任务分配给多个员工,还是一次只分配给一个员工?

如果是前者,你需要另一张桌子," employee_tasks"或类似的东西。我不太喜欢这个,因为我觉得它是最不可能的选择,但基本上你创建了独特的员工/任务对,你可以确保多个员工完成了同样的任务。

如果它是后者,那么您所需要的只是任务表中的一个新列,用于" employee_id。"该员工现在负责该任务。您如何选择获取所有信息取决于您的个人偏好以及您感到满意的db数量,但我亲自为给定员工选择所有任务,然后针对每项任务I&#39 ; d找到它的子任务。如果要减少db命中数,可以查找所有任务,然后通过连接查找所有子任务,然后匹配内存中的任务。这是两个" easy"我知道这样做的方式,但如果有更聪明的东西,我不会感到惊讶。