По моему мнению, устранение избыточности является вторичным по отношению к созданию эффективного (и разборчивого!) Кода.
Вместо использования 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;
Хотя, иногда, СУБД "икают" и забывают запустить триггер или что-то в этом роде. Я бы посоветовал ставить ваш оригинальный скрипт cron, который запускает счет раз в неделю.