Задать вопрос
@phpcoder81

Какую структуру БД выбрать для рейтинга?

Всем привет. Разрабатывается система голосований (для рейтинга). Проект рассматривается на перспективу. Суть: есть около 100 мероприятий и будет (к примеру) 10.000 посетителей. Каждый посетитель может поставить определенный бал каждому мероприятию. От -100 до 100. (INT)
Следовательно сам вопрос: правильно ли я выбрал структуру БД и не будут ли нас ждать неприятные сюрпризы в будущем?
Таблица голосований: `id`, `user`, `item`, `val`. Тип таблиц InnoDB, столбцы все INTEGER
`id` первичный ключ.
`user` внешний ключ к таблице "пользователей"
`item` внешний ключ к таблице "мероприятия"
`val` Значение голоса TINYINT. от -100 до 100.

Будет ли всё это работать без сбоев, при условии, что будет около 1.000.000 строк?

Выборка: SELECT * FROM `tab` WHERE `item` = 1000... и далее в массив.
  • Вопрос задан
  • 211 просмотров
Подписаться 1 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 2
@skyfortress
Вроде все правильно, а 1 000 000 при вашей структуре это совсем немного.
Ответ написан
Комментировать
@nelson
Структура нормальная. Говорю как человек, который использует такую же более чем на 10 миллионах строк с голосами.
Единственное, я бы делал запрос на выборку голосов не select * , а select user,val ведь id его голоса нам не нужен, а item у всех строк одинаковый. Ну, и пересчитывал бы рейтинг мероприятия всё таки при каждом голосовании, а не при просмотре результатов (хотя это зависит от того, что будет происходить чаще).
И чтобы проверять, гословал ли данный юзер за данное мероприятие, не помешает еще составной индекс по (user,item).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы