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

Data modeling 任务时间表和/或项目时间表的数据模型?,data-modeling,Data Modeling,假设我想做一个简单的项目跟踪系统。经理可以创建一个项目。然后他可以为该项目创建任务。团队成员可以记录每个任务或整个项目的工作时间 t_时间表表的以下设计是一个好主意吗 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 - no

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

t_时间表表的以下设计是一个好主意吗

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_任务中始终有一个标记为“杂项”的记录,并带有相关t_项目记录的外键。然后,我将能够跟踪不用于任何特定任务的项目的所有时间


以上的想法都好吗?什么更好?

虽然我相信可空外键在关系数据库中确实有其位置,但在本例中,我倾向于使用第二种选择

  • 强制项目经理 明确创建一个“胶束” 每个项目的“项目”任务将使他们决定它对所讨论的项目是否有意义

  • 允许项目经理随意调用catch all任务

  • 将简单地修改用户界面,因为不需要任何特殊情况就可以直接针对项目而不是任务分配工作

  • 这将使开发人员更容易编写报告,因为他们将不得不处理一个不太复杂的数据库模型


  • 这是所有人的看法,您是否考虑过使用MongoDB或CouchDB之类的工具?你的代表建议你足够聪明,可以自己解决这个问题,所以我觉得有义务问你是否完全使用过其他方法。