一些提示:
- 不要存放在工作表中聚集任務數字。由於任務數據可能會發生變化,因此只能將其存儲在歷史快照表中,並應計算聚合。
- 可能存在影響計劃的結束日期是應該存儲還是僅計算的商業因素。例如。項目經理可能有一個固定的日期,他們已經同意,只有在與客戶達成一致之後才能更改(也許與添加/刪除任務分開)。計算當前預期結束日期也可能很有用,但前一點適用於此。
- 會建議一個簡單的「快照」表,它不會規定何時進行快照,而是允許在特定時間記錄特定任務的當前數字。
- 存儲任務的原始估計值以及當前記錄的時間和剩餘估計值可能很有用。如果是這種情況,則原始估計值不需要存儲在快照表中,因爲它假定不改變並且可以簡單地被引用。
這裏有一個簡單的模式作爲首發十:
CREATE TABLE `project`
(`id` int auto_increment,
`name` varchar(255),
`startDate` datetime,
`plannedEndDate` datetime,
PRIMARY KEY (`id`));
CREATE TABLE `task`
(`id` int auto_increment,
`project_id` int,
`originalEstimate` int,
`timeLogged` int,
`remainingEstimate` int,
PRIMARY KEY (`id`),
KEY `FK_task_project` (`project_id`),
CONSTRAINT `FK_task_project` FOREIGN KEY (`project_id`) REFERENCES `project` (`id`));
CREATE TABLE `progress`
(`id` int auto_increment,
`task_id` int,
`timestamp` datetime,
`timeLogged` int,
`remainingEstimate` int,
PRIMARY KEY (`id`),
KEY `FK_progress_task` (`task_id`),
CONSTRAINT `FK_progress_task` FOREIGN KEY (`task_id`) REFERENCES `task` (`id`));
我將離開進展間隔最多的用戶(或的cronjob)。無論任務或項目的開始/結束日期如何,只需在給定日期添加一個存儲任務進度的表。例如,日期將被設置爲工作完成的日期。您以後可以隨時在分析時將信息連接在一起。 – Sebas