@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... и далее в массив.
  • Вопрос задан
  • 203 просмотра
Пригласить эксперта
Ответы на вопрос 2
@skyfortress
Вроде все правильно, а 1 000 000 при вашей структуре это совсем немного.
Ответ написан
Комментировать
@nelson
Структура нормальная. Говорю как человек, который использует такую же более чем на 10 миллионах строк с голосами.
Единственное, я бы делал запрос на выборку голосов не select * , а select user,val ведь id его голоса нам не нужен, а item у всех строк одинаковый. Ну, и пересчитывал бы рейтинг мероприятия всё таки при каждом голосовании, а не при просмотре результатов (хотя это зависит от того, что будет происходить чаще).
И чтобы проверять, гословал ли данный юзер за данное мероприятие, не помешает еще составной индекс по (user,item).
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы