时间表到任务和/或时间表到项目的数据模型?

时间:2010-04-27 01:05:13

标签: data-modeling

假设我想制作一个简单的项目跟踪系统。经理可以创建项目。然后他可以为该项目创建任务。团队成员可以记录他们为每项任务或整个项目工作的时间。

t_timesheet表的以下设计是一个好主意吗?

timesheet_id - primary key, autoincrement
project_id - not null, foreign key constraint to t_project
task_id - nullable, foreign key constraint to t_task
user_id - not null, foreign key constraint to t_user
hours - decimal

或者我应该这样做:

timesheet_id - primary key, autoincrement
task_id - not null, foreign key constraint to t_task
user_id - not null, foreign key constraint to t_user
hours - decimal

在第二个选项中,我打算在t_task中记录一个标记为“杂项”的记录,其中包含相关t_project记录的外键。然后,我将能够跟踪不适用于任何特定任务的项目的所有时间。

以上任何一个想法都不错吗?什么会更好?

1 个答案:

答案 0 :(得分:0)

虽然我认为可以为空的外键确实在关系数据库中占有一席之地,但在这种情况下,我倾向于你的第二个选择。

  1. 强制项目经理 明确地创造了一个“micellaneous 项目“每个项目的任务将使他们决定是否对有问题的项目有意义。

  2. 允许项目经理根据需要调用catch all任务。

  3. 只是用户界面,因为不需要任何特殊情况就可以直接为项目分配工作而不是任务。

  4. 将使开发人员更容易编写报告,因为他们必须处理不太复杂的数据库模型。