私の意見では、冗長性を排除することは、効率的な (そして読みやすい!) コードを作成することよりも重要です。
cron を使用してスコアを更新する代わりに、レコードが適切な場所に挿入されたときにユーザーのスコアを更新するトリガーを作成してみませんか?
テーブルが更新されたときにスコアを更新することが問題である場合は、次のanswers
ようにします。
create trigger 'scores_increment'
after insert on 'answers'
for each row begin
update 'users' set user_score = user_score + 1 where user_id = NEW.user_id;
end;
create trigger 'scores_decrement'
after delete on 'answers'
for each row begin
update 'users' set user_score = user_score - 1 where user_id = NEW.user_id;
end;
ただし、場合によっては、DBMS が「しゃっくり」して、トリガーなどを実行するのを忘れることがあります。スコアを週に 1 回実行するように設定する元の cron スクリプトを配置することをお勧めします。