Я работаю над приложением PHP, в котором есть несколько объектов, которые можно комментировать. За каждый комментарий можно голосовать, причем пользователи могут дать ему +1 или -1 (например, Digg или Reddit). Прямо сейчас я планирую иметь таблицу голосований с идентификатором user_id и информацией об их голосовании, которая, кажется, работает нормально.
Дело в том, что каждый объект имеет сотни комментариев, которые хранятся в отдельной таблице комментариев. После загрузки комментариев мне нужно подсчитать голоса, а затем индивидуально проверить каждый голос пользователя, чтобы убедиться, что он может голосовать только один раз. Это работает, но только кажется, что база данных очень интенсивна - множество запросов только для комментариев.
Есть ли более простой способ сделать это, который менее интенсивно использует БД? Является ли моя текущая структура базы данных лучшим способом?
Для большей ясности по поводу текущей структуры базы данных:
Таблица комментариев:
- user_id
- object_id
- total_votes
Таблица голосов:
Конечная цель:
- Разрешить пользователю голосовать только один раз за каждый комментарий с наименьшим количеством запросов MySQL (каждый объект имеет несколько комментариев)