Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 模型设计:基于时间的web应用任务管理_Ruby On Rails_Oop_Database Design_Model - Fatal编程技术网

Ruby on rails 模型设计:基于时间的web应用任务管理

Ruby on rails 模型设计:基于时间的web应用任务管理,ruby-on-rails,oop,database-design,model,Ruby On Rails,Oop,Database Design,Model,我被要求构建一个用于管理任务和员工工作时间的web应用程序。 这个想法是,员工在开始工作时单击一个按钮,在完成工作时单击另一个按钮,这样我们就可以测量任务的时间和员工的工作时间(比如Upwork或任何自由职业者应用程序) 我的问题是如何对任务建模、打卡、打卡工作时间,这样我们就不会出现性能问题。(注意:一个任务可以由多个用户完成) 我想到的第一个(也是简化的)想法是: 用户 身份证 名字 任务 身份证 头衔 描述 工作时间 身份证 任务id 用户id 时间 输入(“输入”或“输出”)

我被要求构建一个用于管理任务和员工工作时间的web应用程序。 这个想法是,员工在开始工作时单击一个按钮,在完成工作时单击另一个按钮,这样我们就可以测量任务的时间和员工的工作时间(比如Upwork或任何自由职业者应用程序)

我的问题是如何对任务建模、打卡、打卡工作时间,这样我们就不会出现性能问题。(注意:一个任务可以由多个用户完成)

我想到的第一个(也是简化的)想法是:

  • 用户
    • 身份证
    • 名字
  • 任务
    • 身份证
    • 头衔
    • 描述
  • 工作时间
    • 身份证
    • 任务id
    • 用户id
    • 时间
    • 输入(“输入”或“输出”)
因此,每当用户单击“开始工作”按钮时,它都会创建一个工作时间记录(type=“IN”),当用户完成并单击“完成工作”时,它会创建一个type=“OUT”的工作时间记录

我想到的问题是,在长期和越来越多的用户中,如何可能不进行长时间运行的查询。例如,如果我想知道一项任务有多少小时,我就必须计算完成该任务的所有用户的输入和输出时间之差


你觉得怎么样?这是一个糟糕的方法吗?你知道更好的建模方法吗?

我会改进
工作时间
模型,以便它将“输入”和“输出”记录到同一个记录中,而不是创建另一个记录来节省输出时间:

  • 工作时间
    • 身份证
    • 任务id
    • 用户id
    • 及时
    • 外出时间
    • 持续时间(小时?)
因此,无需创建查询来计算“输入”时间和“输出”时间之间的持续时间