儿童家务模式的数据库设计

时间:2017-06-07 20:51:13

标签: node.js database postgresql database-design

我想知道保持数据库尽可能整洁的最佳做法。数据库是由express.js / node访问的postgresql。这是我正在处理的儿童家务应用程序,它具有以下架构:

CHILDREN
    id
    name
    points
    rate
    created_at
    updated_at
    user_id

TASKS
    id
    description
    value
    days (boolean array - eg. [0,0,0,0,0,0,0])
    periods (boolean array - eg. [0,0])
    created_at
    updated_at
    user_id

FINISHED TASKS
    id
    task_id
    child_id
    completed (boolean)
    created_at
    updated_at
    period (boolean)
    day (int (0-6))

对于每个完成的任务,在数据库中创建一行。只有400名孩子在那里做家务,每天大约有800行被添加到FINISHED TASKS表。

我有两个问题:

  1. 是否有更有效的方式存储FINISHED TASKS每个孩子或类似的一整天?
  2. 随着规模的扩大,我每天可能会有数万行 - 对于像这样的应用来说这是否可以接受?

1 个答案:

答案 0 :(得分:2)

通过中间桥接表具有与任务表相关的子表是执行此操作的常用方法。我对大型医院应用程序的体验是,一旦表开始有数百万行并且性能下降,应用程序通常会将“已完成的任务”归档到单独的归档表中。您最终可能会得到两个表,一个称为“活动任务”,其中包含“已完成”为假的任务,一旦任务完成,该行将被移动到已存档的“已完成任务”表中。

根据您希望将来为应用程序打样多少努力,现在可以这样做,以防止不得不重新审视这一点。