Разрешить пользователям оценивать комментарий после PHP MySQL

У меня есть сайт, на котором пользователи могут оценивать комментарии, оставленные на страницах. Каждый комментарий имеет уникальный идентификатор (например, 402934). Если я хочу, чтобы пользователи имели возможность выдавать большие пальцы / пальцы вниз комментарии, я могу видеть, как я делаю простой код счетчика, чтобы отслеживать количество пальцев вверх или большого пальца , но как я могу убедиться, что каждый пользователь только оценивает комментарий один раз. Я собирался создать базу данных с каждым номером комментария в виде строки, и в этой строке был массив всех пользователей, которые оценили его, и все пользователи, которые оценили его, преувеличивают, но у меня было ощущение, что это не так. лучший путь. Моя следующая мысль заключалась в том, чтобы иметь таблицу для каждого пользователя, а затем иметь массив, показывающий все комментарии, которые оценил пользователь. Скорее всего, он будет работать быстрее (например, проверка рейтинга 150 пользователей в сравнении с рейтингами 6050 комментариев, но я все еще чувствую, что есть лучший способ … любые идеи?

Создайте новую таблицу с user_id , comment_id и vote TINYINT(1) .

Значение 1 при vote – это большие пальцы, значение 0 при vote – это большие пальцы.

У вас есть ограничение UNIQUE KEY (comment_id, user_id) .


Если вы будете следовать вышеизложенному, будет легко проверить, голосовал ли пользователь по конкретному комментарию, если вы хотите быстро (как при быстром выполнении) увидеть все комментарии, сделанные пользователем, вы должны также добавьте INDEX в user_id .


Когда пользователь голосует, вы можете использовать REPLACE INTO для user_comment_thumbs , например, ниже:

 REPLACE INTO `user_comment_thumbs` (user_id,comment_id,vote) VALUES (@user_id, @comment_id, @vote); 

Если пользователь уже сделал голосование, запись в таблице будет обновлена, иначе будет вставлена ​​новая строка.