Всем привет! Требуется адекватный совет. Пишу свой ajax звездный рейтинг дошло дело до базы данных и не могу определиться со структурой. В таблице требуются три колонки. ID, ItemID, Vote. В мыслях два варианта: 1. Каждый раз новая запись для каждого голоса. 2. Одна запись для каждого материала (ItemID) и ее обновление при каждом новом голосе через implode. Нужно самое легкое и производительное решение. В первом случае будет огромное кол-во строк. Во втором может возникнуть проблема при одновременном использовании несколькими юзерами (или нет?). Да и каждй раз разбивать строку, добавлять голос и преобразовывать обратно перед обновлением +подсчет общего и среднего кол-во голосов. У кого какие мысли??
две таблицы. Опросы: id_опроса, название опроса Варианты: id_варианта, id_опроса, количество голосов.
Вы похоже не поняли вопроса. У меня не опрос, а рейтинг со звездочками. Думаю сделать как я описал во втором варианте (см. в начале темы), чтоб не загромождать таблицу. Но будут ли какие подводные камни?
две таблицы первая - сущности, текущее значение рейтинга вторая - человек, сущность, цифра рейтинга при голосовании пишешь/обновляешь (см. insert ... on duplicate key update) запись во второй таблице, пересчитываешь рейтиг по данным всех голосов по этой сущности во второй таблице, пишешь результат в первую это будет работать быстро и хорошо, потому что большинство запросов будут только к первой таблице только на чтение.
Первый вариант - полное Г. Не стоит использовать. Две ячейки. "Средний рейтинг" и "кол-во голосов". Достаешь, добавляешь 1 голос, пересчитываешь, обновляешь.
Если требуется хранить голоса пользователей отдельно то хранить отдельно, если требуется хранить только агрегированное значение значит нужно хранить только его. Если и первое и второе, то оба. Вы начинайте с того что сформулировали бизнес-задачу и понимаете что вам нужно получить.
хранить среднее это значит голосовать только один раз и не поменять потом никогда ничего плюс знать кто за что голосует обычно полезно для развития проекта
Тк будет реализована возможность голосовать не зарегистрированным пользователям нужда в таблице с юзерами отпадает. Только временное хранения IP в куки. Значит остается одна таблица с одной обновляемой записью. Колонки: ItemID, Общее кол-во голосов и Среднее значение. А будут ли конфликты при одновременном обновлении или в MySql это как то продумано?
тогда твоё голосование превратится в фарс в первый же день --- Добавлено --- атомарные операции не порождают конфликтов например: UPDATE `table` SET `field` = `field` + 1
Лайки вяленько! Нужно оценивать музыку. Да и сложного вроде ничего нет. Поэтому сам и пишу, потому что в плагинах через чур все заморочено. Так сказать на все случаи жизни. А под конкретный проект можно и попроще написать. --- Добавлено --- У меня все почти готово, осталось к базе прикрутить.
если оценивать музыку, то надо регу чтобы можно было потом подсовывать "вам понравится" ещё музыку сделай возможность голосовать если вошел через вк
есть вероятность, что технически подкованный говнорэпер зальет записанный на телефон трэк, напишет маленький скриптик, выключит куки и через setInterval() накрутит себе 50к голосов с максимальным рейтингом
Я пока со сторонними API не совсем дружу. Месяц PayPal прикручивал. Основа только на прослушивании, ни кто ни чего заливать не будет. Кроме владельца.
всё, пиши пропало лучше подумай о том, как сделать процесс регистрации необременительным. как бы невзначай.