問題/回答のテーブル設計
question
number (integer)
thesis (text)
commentary (text)
is_correct (boolean)
answer
question_id
user_id
answer_status (enum correct, incorrect, uncertain)
answer_correct (boolean)
regular_practice_exercise_template
title (string)
timelimit_seconds (integer)
question_count (integer) # 1 演習あたりの問題数
first_started_at (datetime)
first_finished_at (datetime)
cycle_count (integer)
cycle_type (enum daily, weekly, monthly) # 演習周期(n 日/週間/月ごと)
regular_practice_exercise
title (string)
timelimit_seconds (integer)
started_at (datetime)
finished_at (datetime)
regular_practice_exercise_question
regular_practice_exercise_id
question_id
user_regular_practice_exercise
user_id
regular_practice_exercise_id
start_at (datetime)
user_regular_practice_exercise_complete
user_regular_practice_exercise_id
correct_answer_count (integer)
elapsed_milliseconds (integer)
user_practice_exercise
regular_practice_exercise_question_id
answer_id
template の title, timelimit_seconds はそのまま使う
template の question_count は question からランダムで選択する
first_started_at から cycle_count cycle_type ごとに演習を行う
期間は first_started_at ~ first_finished_at とする
Enumerator を使って毎日バッチで regular_practice_exercise_question を作成する