Я работаю над системой голосования.
Уникальность голосов гарантирована, потому что пользователь должен войти в систему, чтобы голосовать, и я веду запись для каждого голоса в виде пары (пользователь, опция).
Пользователь может повысить, понизить или отменить выбор опции, аналогично тому, как работает система голосования reddit или stackoverflow.
Мой вопрос связан с тем, как я могу вернуть результаты. Можно ли использовать функцию mysql COUNT () каждый раз (для подсчета всех голосов с заданным параметром option_id) или лучше иметь поле подсчета для самой опции? Проблема с полем подсчета состоит в том, что я должен каким-то образом синхронизировать его с записями голосования. С другой стороны, для многих вариантов и голосов, mysql COUNT () не подходит для перебора?
Я ищу эффективный архитектурный образец для такого рода систем голосования.
Изменить для описания структуры таблицы
К сожалению, у меня нет инструмента дизайна, поэтому я не могу нарисовать структуру таблицы. Структура не так сложна, поэтому я могу объяснить это словами.
У меня есть таблицы для опросов, вариантов и голосов. В одном опросе может быть много вариантов, а в одном варианте может быть много голосов, каждый голос может быть up_vote или down_vote. Каждый голос имеет внешний ключ, указывающий на одну опцию, за которую было проведено голосование, и один внешний ключ, указывающий на одного пользователя, поэтому я могу однозначно идентифицировать голос по паре (пользователь, опция).
Задача ещё не решена.
Других решений пока нет …