Как хранить идентификаторы для рейтинговой системы? - PullRequest
1 голос
/ 18 марта 2012

все

Мне нужна быстрая помощь о том, как сохранить идентификаторы rater в базе данных mysql, чтобы использовать их в php-скрипте.как у меня есть скрипт рейтинга звезды php, и я хочу, чтобы когда кто-то оценивает профиль, его / ее идентификатор должен быть сохранен в базе данных, чтобы проверить, проголосовали ли они уже.Как я могу сохранить его в одном столбце с идентификатором профиля других оценщиков.Структура базы данных выглядит следующим образом:

    user_id | rated_value | rated_count | raters_id

Здесь user_id - это идентификатор профиля, которому присваивается рейтинг. Значение_значения - общее значение всех голосов.и raters_id - это идентификатор всех оценщиков, которые оценили этот профиль.

Теперь я хочу проверить, не присвоил ли идентификатор профиля профилю php.Я слышал о списке идентификаторов, разделенных запятыми, но это хорошая идея.И как я могу проверить в php, если идентификатор уже оценен профиль, если я использую разделенный запятыми список.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 18 марта 2012

Вам нужно только 3 столбца:

user_id | rated_value | rater_id

И вам придется хранить каждый рейтинг здесь, чтобы вы могли даже сообщить пользователю, сколько звезд он оценивал в прошлом.

Чтобы получить общий рейтинг для user_id = 1, используйте функции агрегирования и группировки в MySQL:

SELECT 
    AVG(rated_value) as average_rating, 
    COUNT(*) AS number_of_votes 
FROM 
    user_rating 
WHERE
    user_id = 1
GROUP BY
    user_id

Для проверки rater_id = 3 с рейтингом user_id = 1 используйте простой запрос

SELECT rated_value FROM user_rating WHERE user_id = 1 AND rater_id = 3

И проверьте, вернет ли он какие-либо результаты

...