2012-03-18 1 views
1

всеКак хранить идентификаторы для рейтинговой системы?

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

user_id | rated_value | rated_count | raters_id 

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

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

Благодарим за помощь.

ответ

0

Вам нужны только три колонки:

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 

И проверить, если он возвращать результаты

+0

, но все же, как я могу хранить rater_id в базе данных, потому что будет много идентификаторов, которые будут оценивать профиль – Prashank

+0

В моем решении каждая строка в 'user_rating' предназначена для каждого голосования, поэтому, если два пользователя будут оценивать' user_id = 1', будет две строки с 'user_id = 1' anb, у обоих из них будет разное' rater_id'. –

+0

хорошо, но можете ли вы дать представление о наличии другой таблицы для простое хранение rater_id. Является ли это возможным? – Prashank