将任务信息存储在数据库中

Store task info in database

提问人:dabljues 提问时间:5/25/2021 最后编辑:dabljues 更新时间:5/25/2021 访问量:121

问:

假设我有一个数据库,用于存储用户任务。

为简化起见,假设一个任务具有:

  • 编号
  • 状态(新建、待办事项、进行中、完成、已拒绝)
  • 描述
  • 所有者/创建者

现在,我想要实现的是,当用户完成任务时 - 将其设置为“完成”或“已拒绝”,我希望用户提供有关该状态更改的一些信息。我想象一个带有两个字段的弹出窗口:一个可以从“完成/拒绝”状态中进行选择,另一个是文本字段区域,用于填写原因(如果您愿意)。

我在这里遇到的问题是:如何存储有关任务完成的信息?

我的想法是创建一个表格,其中将有:task_completions

  • 编号
  • task_id
  • 注释(varchar 或其他)

现在的问题是:当我从数据库中为用户加载任务并且我看到它已完成(再次,完成或拒绝)时,我需要加载有关任务完成的信息。因此,这将导致两个 API 调用:

  • 获取任务
  • 获取task_completion,在哪里task_completion.task_id == task_id

当然还有另一种方法 - 我可以将task_completion字段添加到我的表中。当然,让它可以为 null,因为在任务完成之前,它不会被任何东西填充。然后我就不必进行两次 API 调用,因为当使用 Django 序列化程序(或类似的东西)时,我将能够将字段从普通数字 (id from ) 列“扩展”为包含有关完成信息的完整嵌套 JSON(id、task_id、注释) - 我只需要调用 .然后我甚至不必提供表中的字段。tasktask_completiontask_completionget tasktask_idtask_completion

所以总结一下,我认为我有 3 个选择:

  • task和 tables,其中 table 包含列 - 两个 API 调用task_completiontask_completiontask_id
  • task和表格,其中表格包含列 - 如果我做对了,一个 API 调用task_completiontasktask_completion_id
  • task和表,其中表包含列,表包含一列 - 我猜仍然是一个 API 调用 - 但是在这些表中同时包含这两个列是否有意义?task_completiontasktask_completion_idtask_completiontask_id
数据库设计 语言不可知

评论

0赞 marcos 5/25/2021
你不能在你的表上放一个可为空的列吗?commenttask
0赞 dabljues 5/25/2021
我可以,但是如果我想将该注释扩展到包含关闭任务的人或其他任何东西,这将在表格中造成混乱task
0赞 marcos 5/25/2021
公平点。一个任务可以重新打开,还是每个任务只能完成一次?
0赞 dabljues 5/25/2021
我有点模仿 Jira 的行为,因此可能会重新打开该任务
2赞 marcos 5/25/2021
第一个选项 ( 带有列引用表的表更正确,因为每个 .但我建议,相反,使用某种表格,因为您可能想要更改的历史记录。我真的不了解 django,所以我不能评论 api 调用的数量,但除非它非常昂贵,否则它是一两个都没关系。task_completiontask_idtasktasktask_status_history

答: 暂无答案